PROFF - Portable ROFF (2 of 5)
Ozan Yigit
oz at yetti.UUCP
Tue Jan 14 14:59:06 AEST 1986
#!/bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #!/bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
# pinit.c
# proff.c
# proff.h
# proff.pro
# proff01.c
# proff02.c
# proffsym.new
# This archive created: Mon Jan 13 23:54:09 1986
export PATH; PATH=/bin:$PATH
echo shar: extracting "'pinit.c'" '(1236 characters)'
if test -f 'pinit.c'
then
echo shar: over-writing existing file "'pinit.c'"
fi
sed 's/^X//' << \SHAR_EOF > 'pinit.c'
X
X
X
X
X#include <stdio.h>
X#include <ctype.h>
X#include "proff.h"
X#include "debug.h"
X
X/*
X * finit - initialise parameters, set default values
X * used by .reset command
X *
X */
Xfinit()
X{
X int i;
X
X inval = 0;
X rmval = PAGEWIDTH;
X tival = 0;
X lsval = 1;
X fill = YES;
X ceval = 0;
X ulval = 0;
X boval = 0;
X cchar = '.';
X genesc = '_';
X tjust[0] = LEFT;
X tjust[1] = CENTER;
X tjust[2] = RIGHT;
X bsval = 0;
X rjust = YES;
X ulblnk = BLANK;
X
X for (i = 0; i < INSIZE; i++)
X if (i % 8 == 0)
X tabs[i] = YES;
X else
X tabs[i] = NO;
X
X lineno = 0;
X curpag = 0;
X newpag = 1;
X plval = PAGELEN;
X m1val = 3;
X m2val = 2;
X m3val = 2;
X m4val = 3;
X bottom = plval - m3val - m4val;
X ehead[0] = '\n';
X ehead[1] = EOS;
X ohead[0] = '\n';
X ohead[1] = EOS;
X efoot[0] = '\n';
X efoot[1] = EOS;
X ofoot[0] = '\n';
X ofoot[1] = EOS;
X ehlim[0] = inval;
X ehlim[1] = rmval;
X ohlim[0] = inval;
X ohlim[1] = rmval;
X eflim[0] = inval;
X eflim[1] = rmval;
X oflim[0] = inval;
X oflim[1] = rmval;
X verbose = NO;
X stopx = 0;
X frstpg = 0;
X lastpg = HUGE;
X print = YES;
X offset = 0;
X outp = 0;
X outw = 0;
X outwds = 0;
X bp = -1;
X for (i = 0; i < 26; i++)
X nr[i] = 0;
X
X CEon = FALSE;
X ULon = FALSE;
X BDon = FALSE;
X
X onlyrunoff = FALSE;
X roman = FALSE;
X bolding = YES;
X autopar = NO;
X}
X
SHAR_EOF
if test 1236 -ne "`wc -c 'pinit.c'`"
then
echo shar: error transmitting "'pinit.c'" '(should have been 1236 characters)'
fi
echo shar: extracting "'proff.c'" '(9150 characters)'
if test -f 'proff.c'
then
echo shar: over-writing existing file "'proff.c'"
fi
sed 's/^X//' << \SHAR_EOF > 'proff.c'
X
X
X
Xchar *version = "v.1.1";
X
X#include <stdio.h>
X#include <ctype.h>
X#include "debug.h"
X#include "defs.h"
X#include "lookup.h"
X
X
X/*
X * G L O B A L S
X *
X */
X#ifndef vms
X#define globaldef
X#endif
X
X /* next available char; init = 0 */
Xglobaldef int bp = -1;
X /* pushed-back characters */
Xglobaldef char buf[BUFSIZE];
X /* stack of file descriptors */
Xglobaldef FILE *infile[NFILES];
X /* current file is infile[level] */
Xglobaldef int level;
X /* stack of output file descriptors */
Xglobaldef FILE *outfile[NFILES];
X /* current output is outfile[olevel]; */
Xglobaldef int olevel;
X /* current output file pointer */
Xglobaldef FILE *poutput;
X /* number registers a..z */
Xglobaldef int nr[26] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
X /* system registers a..z */
Xglobaldef int sr[26] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
X 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
X /* last char position in outbuf; init = 0 */
Xglobaldef int outp = 0;
X /* width of text currently in outbuf; init = 0 */
Xglobaldef int outw = 0;
X /* number of words in outbuf; init = 0 */
Xglobaldef int outwds = 0;
X /* lines to be filled collect here */
Xglobaldef char outbuf[MAXOUT];
X /* word in outbuf; init=0 */
X /* current output page number; init = 0 */
Xglobaldef int curpag = 0;
X /* next output page number; init = 1 */
Xglobaldef int newpag = 1;
X /* next line to be printed; init = 0 */
Xglobaldef int lineno = 0;
X /* page length in lines; init = PAGELEN = 66 */
Xglobaldef int plval = PAGELEN;
X /* page length save area */
Xglobaldef int savpl = PAGELEN;
X /* margin before and including header */
Xglobaldef int m1val = 3;
X /* margin after header */
Xglobaldef int m2val = 2;
X /* margin after last text line */
Xglobaldef int m3val = 2;
X /* bottom margin, including footer */
Xglobaldef int m4val = 3;
X /* last live line on page, = plval-m3val-m4val */
Xglobaldef int bottom = PAGELEN - 5;
X /* top of page title for even pages;init=NEWLINE */
Xglobaldef char ehead[MAXLINE];
X /* top of page title for odd pages;init=NEWLINE */
Xglobaldef char ohead[MAXLINE];
X /* left,right margins for even header;init=inval,rmval */
Xglobaldef int ehlim[2] = { 0, PAGEWIDTH };
X /* left,right margins for odd header;init=inval,rmval */
Xglobaldef int ohlim[2] = { 0, PAGEWIDTH };
X /* bot of page title for even pages;init=NEWLINE */
Xglobaldef char efoot[MAXLINE];
X /* bot of page title for odd pages;init=NEWLINE */
Xglobaldef char ofoot[MAXLINE];
X /* left,right margins for even footer;init=inval,rmval */
Xglobaldef int eflim[2] = { 0, PAGEWIDTH };
X /* left,right margins for odd footer;init=inval,rmval */
Xglobaldef int oflim[2] = { 0, PAGEWIDTH };
X /* flag for pausing between pages */
Xglobaldef int stopx = 0;
X /* first page to begin printing with */
Xglobaldef int frstpg = 0;
X /* last page to be printed */
Xglobaldef int lastpg = HUGE;
X /* flag to indicate whether page should be printed */
Xglobaldef int print = YES;
X /* number of blanks to offset page by; init = 0 */
Xglobaldef int offset = 0;
X /* verbose option; init = NO */
Xglobaldef int verbose = NO;
X /* bolding option; init = YES; */
Xglobaldef char bolding = YES;
X /* fill if YES; init = YES */
Xglobaldef int fill = YES;
X /* current line spacing; init = 1 */
Xglobaldef int lsval = 1;
X /* current indent; >= 0; init = 0 */
Xglobaldef int inval = 0;
X /* current right margin; init = PAGEWIDTH = 60 */
Xglobaldef int rmval = PAGEWIDTH;
X /* current temporary indent; init = 0 */
Xglobaldef int tival = 0;
X /* number of lines to center; init = 0 */
Xglobaldef int ceval = 0;
X /* flag for continuous center */
Xglobaldef char CEon = FALSE;
X /* number of lines to underline; init = 0 */
Xglobaldef int ulval = 0;
X /* flag for continuous underline */
Xglobaldef char ULon = FALSE;
X /* number of lines to boldface; init = 0 */
Xglobaldef int boval = 0;
X /* flag for continuous bolding */
Xglobaldef char BDon = FALSE;
X /* justification types for heads and foots; */
X /* init = LEFT, CENTER, RIGHT */
Xglobaldef int tjust[3] = { LEFT, CENTER, RIGHT };
X /* number of lines to blank suppress; init=0 */
Xglobaldef int bsval = 0;
X /* right justify filled lines if YES; init=YES */
Xglobaldef int rjust = YES;
X /* tab stops; init every 8 spaces */
Xglobaldef int tabs[INSIZE];
X /* line control character; init = PERIOD */
Xglobaldef char cchar = '.';
X /* universal escape - init = UNDERBAR */
Xglobaldef char genesc = '_';
X /* character used to underline a BLANK; init = BLANK */
Xglobaldef char ulblnk = ' ';
X /* scratch arrays for use by various routines */
Xglobaldef char tbuf1[MAXLINE];
Xglobaldef char tbuf2[MAXLINE];
Xglobaldef char tbuf3[MAXLINE];
Xglobaldef char ttl[MAXLINE];
X /* flag to process runoff symbols only */
Xglobaldef char onlyrunoff = NO;
X /* Flag to turn paging off */
Xglobaldef char paging = YES;
X /* page number in roman numerals. Init = NO */
Xglobaldef char roman = NO;
X /* autopar flag. Init = NO */
Xglobaldef char autopar = NO;
X /* temporary indent value for autopar */
Xglobaldef int autoprv = 5;
X /* hash tables for macros and variables */
Xglobaldef struct hashlist *macrotab[HASHMAX];
Xglobaldef struct hashlist *gentab[HASHMAX];
X /* linked list entries for contents */
Xglobaldef struct clist *chead = NULL;
Xglobaldef struct clist *clast = NULL;
X /* keep track of what is done - VERBOSE */
Xglobaldef int p_txtlines = 0;
Xglobaldef int p_outlines = 0;
Xglobaldef int p_outpages = 0;
Xglobaldef int p_memoryus = 0;
X
X
X
X/*
X * M A I N L I N E OF P R O F F
X *
X */
X
Xmain(argc,argv)
Xint argc;
Xchar *argv[];
X{
X int i,j,val,type;
X char *p,c;
X FILE *fp;
X
X for (i = 1; i < argc; i++) {
X p = argv[i];
X if (*p == '-') {
X ++p;
X if (isalpha(*p)) {
X c = *p++;
X switch(c) {
X
X/* verbose stats */ case 'v':
X case 'V':
X verbose = TRUE;
X break;
X/* runoff only */ case 'r':
X case 'R':
X onlyrunoff = TRUE;
X break;
X/* stop for page */ case 's':
X case 'S':
X stopx = 1;
X break;
X/* page offset */ case 'p':
X case 'P':
X if (*p == 'o' || *p == 'O') {
X p++;
X j = 0;
X val = getval(p, &j, &type);
X set(&offset, val, type, 0, 0,
X rmval - 1);
X }
X else
X usage();
X break;
X/* include file */ case 'i':
X case 'I': /* simulate .so <filename> */
X pbstr("\n");
X pbstr(p);
X pbstr(".so ");
X break;
X
X/* disable some */ case 'd':
X case 'D':
X switch (*p) {
X
X case 'b':
X case 'B':
X bolding = NO;
X break;
X case 'p':
X case 'P':
X paging = NO;
X break;
X default:
X break;
X }
X break;
X
X/* garbage */ default:
X usage();
X }
X }
X else
X lastpg = atoi(p);
X }
X else if (*p == '+') {
X p++;
X if ((frstpg = atoi(p)) == 0)
X usage();
X }
X else
X break;
X }
X if (i == argc)
X usage();
X if ((fp = fopen(argv[i], "r")) == NULL) {
X fprintf(stderr, "%s: cannot open.\n",argv[i]);
X exit(1);
X }
X if (p = argv[++i]) {
X if ((outfile[0] = fopen(p, "w")) == NULL) {
X fprintf(stderr,"%s: cannot create.\n\n", p);
X exit(1);
X }
X }
X else
X outfile[0] = stdout;
X /* set output file level */
X olevel = 0;
X poutput = outfile[0];
X /*
X * some minor initialisation
X */
X
X for (i = 0; i < INSIZE; i++)
X if (i % 8 == 0)
X tabs[i] = YES;
X else
X tabs[i] = NO;
X
X ehead[0] = '\n';
X ehead[1] = EOS;
X ohead[0] = '\n';
X ohead[1] = EOS;
X efoot[0] = '\n';
X efoot[1] = EOS;
X ofoot[0] = '\n';
X ofoot[1] = EOS;
X
X /* initialise contents linked list */
X
X chead = (struct clist *) malloc(sizeof(struct clist));
X clast = chead;
X p_memoryus += sizeof(struct clist);
X
X doroff(fp);
X brk();
X if (plval <= 100 && (lineno > 0 | outp > 0))
X space(HUGE);
X putchar('\n');
X
X if(verbose) {
X fprintf(stderr,"proff read in %6d textlines to produce\n",
X p_txtlines);
X fprintf(stderr," %6d lines\n",
X p_outlines);
X fprintf(stderr," %6d pages of formatted text.\n",
X p_outpages);
X fprintf(stderr,"\n%d bytes of memory was required\n",
X p_memoryus);
X fprintf(stderr,"for internal tables and lists.\n");
X }
X#ifdef vms
X exit(1);
X#else
X exit(0);
X#endif
X}
SHAR_EOF
if test 9150 -ne "`wc -c 'proff.c'`"
then
echo shar: error transmitting "'proff.c'" '(should have been 9150 characters)'
fi
echo shar: extracting "'proff.h'" '(4562 characters)'
if test -f 'proff.h'
then
echo shar: over-writing existing file "'proff.h'"
fi
sed 's/^X//' << \SHAR_EOF > 'proff.h'
X
X
X#include "defs.h"
X#include "lookup.h"
X
X#ifdef vms
X#define extern globalref
X#endif
X /* next available char; init = 0 */
Xextern int bp;
X /* pushed-back characters */
Xextern char buf[BUFSIZE];
X /* stack of file descriptors */
Xextern FILE *infile[NFILES];
X /* current file is infile[level] */
Xextern int level;
X /* stack of output file descriptors */
Xextern FILE *outfile[NFILES];
X /* current output file is outfile[olevel] */
Xextern int olevel;
X /* current output file pointer */
Xextern FILE *poutput;
X /* number registers a..z */
Xextern int nr[26];
X /* system registers a..z */
Xextern int nr[26];
X /* last char position in outbuf; init = 0 */
Xextern int outp;
X /* width of text currently in outbuf; init = 0 */
Xextern int outw;
X /* number of words in outbuf; init = 0 */
Xextern int outwds;
X /* lines to be filled collect here */
Xextern char outbuf[MAXOUT];
X /* word in outbuf; init=0 */
X /* current output page number; init = 0 */
Xextern int curpag;
X /* next output page number; init = 1 */
Xextern int newpag;
X /* next line to be printed; init = 0 */
Xextern int lineno;
X /* page length in lines; init = PAGELEN = 66 */
Xextern int plval;
X /* page length save area */
Xextern int savpl;
X /* margin before and including header */
Xextern int m1val;
X /* margin after header */
Xextern int m2val;
X /* margin after last text line */
Xextern int m3val;
X /* bottom margin, including footer */
Xextern int m4val;
X /* last live line on page, = plval-m3val-m4val */
Xextern int bottom;
X /* top of page title for even pages;init=NEWLINE */
Xextern char ehead[MAXLINE];
X /* top of page title for odd pages;init=NEWLINE */
Xextern char ohead[MAXLINE];
X /* left,right margins for even header;init=inval,rmval */
Xextern int ehlim[2];
X /* left,right margins for odd header;init=inval,rmval */
Xextern int ohlim[2];
X /* bot of page title for even pages;init=NEWLINE */
Xextern char efoot[MAXLINE];
X /* bot of page title for odd pages;init=NEWLINE */
Xextern char ofoot[MAXLINE];
X /* left,right margins for even footer;init=inval,rmval */
Xextern int eflim[2];
X /* left,right margins for odd footer;init=inval,rmval */
Xextern int oflim[2];
X /* flag for pausing between pages */
Xextern int stopx;
X /* first page to begin printing with */
Xextern int frstpg;
X /* last page to be printed */
Xextern int lastpg;
X /* flag to indicate whether page should be printed */
Xextern int print;
X /* number of blanks to offset page by; init = 0 */
Xextern int offset;
X /* verbose option; init = FALSE */
Xextern int verbose;
X /* bolding option; init = YES; */
Xextern char bolding;
X /* fill if YES; init = YES */
Xextern int fill;
X /* current line spacing; init = 1 */
Xextern int lsval;
X /* current indent; >= 0; init = 0 */
Xextern int inval;
X /* current right margin; init = PAGEWIDTH = 60 */
Xextern int rmval;
X /* current temporary indent; init = 0 */
Xextern int tival;
X /* number of lines to center; init = 0 */
Xextern int ceval;
X /* flag for continuous center */
Xextern char CEon;
X /* number of lines to underline; init = 0 */
Xextern int ulval;
X /* flag for continuous underline */
Xextern char ULon;
X /* number of lines to boldface; init = 0 */
Xextern int boval;
X /* flag for continuous bolding */
Xextern char BDon;
X /* justification types for heads and foots; */
Xextern int tjust[3]; /* init = LEFT, CENTER, RIGHT */
X /* number of lines to blank suppress; init=0 */
Xextern int bsval;
X /* right justify filled lines if YES; init=YES */
Xextern int rjust;
X /* tab stops; init every 8 spaces */
Xextern int tabs[INSIZE];
X /* line control character; init = PERIOD */
Xextern char cchar;
X /* universal escape - init = UNDERBAR */
Xextern char genesc;
X /* character used to underline a BLANK; init = BLANK */
Xextern char ulblnk;
X /* scratch arrays for use by various routines */
Xextern char tbuf1[MAXLINE];
Xextern char tbuf2[MAXLINE];
Xextern char tbuf3[MAXLINE];
Xextern char ttl[MAXLINE];
X /* flag to process runoff symbols only */
Xextern char onlyrunoff;
X /* flag to turn paging off */
Xextern char paging;
X /* page number in roman numerals. Init = NO */
Xextern char roman;
X /* autopar flag. Init = NO */
Xextern char autopar;
X /* temporary indent value for autopar */
Xextern int autoprv;
X /* hash tables for macros and variables */
Xextern struct hashlist *macrotab[HASHMAX];
Xextern struct hashlist *gentab[HASHMAX];
X /* linked list entries for contents */
Xextern struct clist *chead;
Xextern struct clist *clast;
X /* keep track of the work - VERBOSE opt.*/
X
Xextern int p_txtlines;
Xextern int p_outlines;
Xextern int p_outpages;
Xextern int p_memoryus;
X
X#ifdef vms
X#undef extern
X#endif
X
SHAR_EOF
if test 4562 -ne "`wc -c 'proff.h'`"
then
echo shar: error transmitting "'proff.h'" '(should have been 4562 characters)'
fi
echo shar: extracting "'proff.pro'" '(3302 characters)'
if test -f 'proff.pro'
then
echo shar: over-writing existing file "'proff.pro'"
fi
sed 's/^X//' << \SHAR_EOF > 'proff.pro'
X name %time cumsecs #call ms/call
X _doesc 14.6 6.48 1929 3.36
X _ngetln 12.0 11.79 2004 2.65
X _dotabs 10.6 16.46 1118 4.18
X _getwrb 8.5 20.21 5493 0.68
X _put 8.4 23.91 1311 2.82
X _width 7.2 27.11 5060 0.63
X _dovar 6.7 30.05 1962 1.50
X cret 3.6 31.62
X csv 3.3 33.10
X _strcpy 3.3 34.57
X _spread 3.0 35.88 389 3.39
X _putwrd 1.8 36.69 4947 0.16
X mcount 1.7 37.44
X _strlen 1.6 38.14
X _leadbl 1.2 38.69 227 2.42
X _text 1.2 39.23 1118 0.48
X _getwrd 0.9 39.64 860 0.48
X _eval 0.9 40.03 95 4.04
X _puttl 0.9 40.41 74 5.18
X _hash 0.8 40.76 1827 0.19
X _getarg 0.7 41.06 861 0.35
X_docline 0.6 41.34 75 3.78
X_command 0.6 41.61 844 0.32
X _bold 0.5 41.84 33 7.07
X _malloc 0.4 42.03
X _putbak 0.4 42.21 3624 0.05
X_comtype 0.4 42.38 844 0.20
X _doroff 0.3 42.53 1 150.03
X _gfield 0.3 42.66 150 0.89
X _skipl 0.3 42.79 1623 0.08
X _brk 0.3 42.90 1073 0.10
X _strcmp 0.2 43.01
X _lookup 0.2 43.11 1053 0.10
X _pbstr 0.2 43.21 443 0.23
X_lexlook 0.2 43.31 716 0.14
X _write 0.2 43.41
X _subst 0.2 43.50 208 0.44
X _skipbl 0.2 43.57 1205 0.06
X__strout 0.2 43.63
X__flsbuf 0.2 43.70
X _jcopy 0.2 43.77 104 0.64
X _underl 0.1 43.83 15 3.89
X _read 0.1 43.88
X _set 0.1 43.91 409 0.09
X_strsave 0.1 43.95 191 0.17
X _atoi 0.1 43.98
X_install 0.1 44.01 58 0.50
X _getval 0.1 44.03 1 25.01
X _getnow 0.1 44.06 74 0.34
X _center 0.0 44.08 9 2.32
X _phead 0.0 44.10 37 0.45
X _main 0.0 44.11 1 16.67
X_sprintf 0.0 44.13
X _justfy 0.0 44.15 104 0.16
X_cvtroma 0.0 44.16 4 4.17
X _dodef 0.0 44.18 8 2.08
X _addstr 0.0 44.20 33 0.51
X _sbrk 0.0 44.21
X _itoc 0.0 44.23 83 0.20
X _close 0.0 44.24
X _fopen 0.0 44.24
X _space 0.0 44.24 219 0.00
X_fprintf 0.0 44.24
X _etext 0.0 44.24
X _gets 0.0 44.24
X _printf 0.0 44.24
X _pfoot 0.0 44.24 37 0.00
X__filbuf 0.0 44.24
X__doprnt 0.0 44.24
X pgen 0.0 44.24
X pfloat 0.0 44.24
X pscien 0.0 44.24
X_getpstr 0.0 44.24
X _finit 0.0 44.24
X _fflush 0.0 44.24
X__cleanu 0.0 44.24
X _fclose 0.0 44.24
X__endope 0.0 44.24
X__findio 0.0 44.24
X _remove 0.0 44.24
X_lexinst 0.0 44.24
X _free 0.0 44.24
X_realloc 0.0 44.24
X _isatty 0.0 44.24
X_monitor 0.0 44.24
X _stty 0.0 44.24
X _gtty 0.0 44.24
X _strcat 0.0 44.24
X _exit 0.0 44.24
X _usage 0.0 44.24
X _error 0.0 44.24
X _ctoi 0.0 44.24 1 0.00
X _creat 0.0 44.24
X _ioctl 0.0 44.24
X _lseek 0.0 44.24
X _open 0.0 44.24
X _profil 0.0 44.24
X _addset 0.0 44.24 8 0.00
X _save 0.0 44.24 4 0.00
X_restore 0.0 44.24 4 0.00
X cerror 0.0 44.24
X ldiv 0.0 44.24
X _map 0.0 44.24 4 0.00
X _prmpt 0.0 44.24
X _gettl 0.0 44.24 8 0.00
SHAR_EOF
if test 3302 -ne "`wc -c 'proff.pro'`"
then
echo shar: error transmitting "'proff.pro'" '(should have been 3302 characters)'
fi
echo shar: extracting "'proff01.c'" '(11313 characters)'
if test -f 'proff01.c'
then
echo shar: over-writing existing file "'proff01.c'"
fi
sed 's/^X//' << \SHAR_EOF > 'proff01.c'
X
X
X
X
X#include <stdio.h>
X#include <ctype.h>
X#include "proff.h"
X#include "debug.h"
X
X/*
X * bold - bold face or overstrike a line
X *
X */
Xbold(buf,tbuf,size)
Xchar buf[];
Xchar tbuf[];
Xint size;
X{
X int i,j;
X dprintf("bold ");
X
X j = 0;
X for (i = 0; buf[i] != '\n' && j < size - 2; i++) {
X tbuf[j] = buf[i];
X j++;
X if (buf[i] != ' ' && buf[i] != '\t' &&
X buf[i] != BACKSPACE ) {
X tbuf[j] = BACKSPACE;
X tbuf[j+1] = tbuf[j-1];
X j += 2;
X }
X }
X tbuf[j] = '\n';
X tbuf[j+1] = '\0';
X strcpy(buf,tbuf);
X}
X
X/*
X * brk - end current filled line
X *
X */
Xbrk()
X{
X dprintf("brk ");
X if (outp > 0) {
X outbuf[outp] = '\n';
X outbuf[outp+1] = EOS;
X put(outbuf);
X }
X outp = 0;
X outw = 0;
X outwds = 0;
X}
X
X/*
X * center - center a line by setting tival
X *
X */
Xcenter(buf)
Xchar buf[];
X{
X int i;
X
X dprintf("center ");
X
X i = (rmval + tival - width(buf)) / 2;
X tival = (i > 0) ? i : 0;
X}
X
X/*
X * doroff - format text in file fp
X *
X */
Xdoroff(fp)
XFILE *fp;
X{
X char inbuf[INSIZE];
X
X infile[0] = fp;
X for (level = 0; level > -1; level--) {
X while (ngetln(inbuf, infile[level]) != EOF) {
X if (inbuf[0] == cchar) /* a command */
X command(inbuf);
X else {
X#ifdef rainbow
X if (biosb(2))
X exit(0);
X#endif
X text(inbuf);
X p_txtlines++;
X }
X }
X if (level > 0 && infile[level] > 0) {
X fclose(infile[level]);
X if (verbose)
X fprintf(stderr," done.\n");
X }
X }
X}
X
X/*
X * gettl - copy title from buf to ttl
X *
X * modifies lim
X */
Xgettl(buf,ttl,lim)
Xchar *buf;
Xchar *ttl;
Xint lim[];
X{
X while (!isspace(*buf))
X buf++;
X while (isspace(*buf))
X buf++;
X strcpy(ttl,buf);
X lim[0] = inval;
X lim[1] = rmval;
X}
X
X/*
X * getwrb - get a word INCLUDING the trailing blanks
X *
X */
Xint
Xgetwrb(in,i,out)
Xchar in[];
Xchar out[];
Xint *i;
X{
X int j,k;
X dprintf("getval ");
X k = *i;
X j = 0;
X while (in[k] != EOS && in[k] != ' ' &&
X in[k] != '\t' && in[k] != '\n') {
X out[j] = in[k];
X k++;
X j++;
X }
X while (in[k] == ' ') {
X out[j] = ' ';
X k++;
X j++;
X }
X *i = k;
X out[j] = EOS;
X return(j);
X}
X
X
X/*
X * gfield - get next tab or title field
X *
X */
Xint
Xgfield(buf, i, n, temp, delim)
Xchar buf[];
Xint *i;
Xint n;
Xchar temp[];
Xchar delim;
X{
X int j,k;
X
X dprintf("gfield ");
X j = 0;
X k = *i;
X if (n > 0) {
X if (buf[k] == delim)
X k++;
X while (buf[k] != delim && buf[k] != EOS && buf[k] != '\n' &&
X j <= n) {
X temp[j] = buf[k];
X j++;
X k++;
X }
X }
X temp[j] = EOS;
X while (buf[k] != delim && buf[k] != EOS && buf[k] != '\n')
X k++;
X *i = k;
X return(j);
X}
X
X/*
X * jcopy - scopy without copying EOS
X *
X */
Xjcopy(from, i, to, j)
Xchar from[];
Xchar to[];
Xint i;
Xint j;
X{
X int k1, k2;
X dprintf("jcopy ");
X
X k1 = i;
X k2 = j;
X while (from[k1] != EOS) {
X to[k2] = from[k1];
X k1++;
X k2++;
X }
X}
X
X/*
X * justfy - justifies string in its tab column
X * */
Xjustfy(in, left, right, type, out)
Xchar in[];
Xchar out[];
Xint left;
Xint right;
Xint type;
X{
X int j,k, n;
X
X dprintf("justfy ");
X n = width(in);
X if (type == RIGHT)
X jcopy(in, 0, out, right-n);
X else if (type == CENTER) {
X k = (right+left-n) / 2;
X j = (k > left) ? k : left;
X jcopy(in, 0, out, j);
X }
X else
X jcopy(in, 0, out, left);
X}
X
X/*
X * leadbl - delete leading blanks, set tival
X *
X */
Xleadbl(buf)
Xchar buf[];
X{
X int i, j;
X
X dprintf("leadbl ");
X brk();
X for (i = 0; buf[i] == ' '; i++) /* find 1st non-blank */
X ;
X if (buf[i] != '\n')
X if (autopar) {
X put("\n"); /* blank line */
X tival = inval + autoprv;
X }
X else
X tival = inval + i; /* ??????????? */
X for (j = 0; buf[i] != EOS; j++) { /* move line to left */
X buf[j] = buf[i];
X i++;
X }
X buf[j] = EOS;
X}
X
X/*
X * ngetln - get next line from f into line
X *
X */
Xint
Xngetln(line, f)
Xchar line[];
XFILE *f;
X{
X int c, i;
X
X for (i = 0; (c = (bp >= 0) ? buf[bp--] : getc(f)) != EOF; ) {
X if (i < MAXLINE - 1) {
X line[i++] = (char) c;
X }
X if (c == '\n' || c == '\r')
X break;
X }
X line[i] = EOS;
X if (i == 0 && c == EOF)
X i = EOF;
X#ifdef DEBUG
X printf("ngetln: %s (line)\n",line);
X#endif
X return(i);
X}
X
X/*
X * pbstr - push string back onto input
X *
X */
Xpbstr(in)
Xchar in[];
X{
X
X int i;
X
X dprintf("pbstr ");
X for (i = strlen(in) - 1; i >= 0; i--)
X putbak(in[i]);
X}
X
X/*
X * pfoot - put out page footer
X *
X */
Xpfoot()
X{
X
X dprintf("pfoot ");
X skipl(m3val);
X if (m4val > 0) {
X if (curpag % 2 == 1)
X puttl(efoot, eflim, curpag);
X else
X puttl(ofoot, oflim, curpag);
X }
X if (print == YES) /* flush the page */
X {
X putchar(PAGEJECT); /* ... */
X p_outpages++;
X if (stopx > 0) /* -s, so flush ^L*/
X putchar('\n');
X }
X}
X
X/*
X * phead - put out page header
X *
X */
Xphead()
X{
X dprintf("phead ");
X
X curpag = newpag;
X if (curpag >= frstpg && curpag <= lastpg)
X print = YES;
X else
X print = NO;
X if(stopx > 0 && print == YES)
X prmpt(&stopx);
X newpag++;
X if (m1val > 0) {
X skipl(m1val-1);
X if (curpag % 2 == 0)
X puttl(ehead, ehlim, curpag);
X else
X puttl(ohead, ohlim, curpag);
X }
X skipl(m2val);
X lineno = m1val + m2val + 1;
X}
X
X/*
X * prmpt - pause for paper insertion
X * prompt if i == 1; increment i
X *
X */
Xprmpt(i)
Xint *i;
X{
X int junk,j;
X static char bellst[2] = { BEL, EOS};
X
X dprintf("prmpt ");
X j = *i;
X if (j == 1)
X#ifdef rainbow
X printf("%s\033[7minsert paper and type return\033[0m ",bellst);
X#else
X printf("%sinsert paper and type return ",bellst);
X#endif
X else
X printf(bellst);
X junk = getchar();
X *i = ++j;
X}
X
X/*
X * Put - put out line with proper spacing and indenting
X *
X */
Xput(buf)
Xchar buf[];
X{
X register int i;
X dprintf("put ");
X if (lineno == 0 || lineno > bottom)
X phead();
X
X if ( print == YES ) {
X if (buf[0] == '\n') { /* empty line.. */
X putchar('\n');
X p_outlines++;
X }
X else {
X for ( i = 1 ; i <= offset ; i++ ) /* page offset */
X putchar(' ');
X for ( i = 1 ; i <= tival ; i++ ) /* indenting */
X putchar(' ');
X
X while (*buf != '\0') {
X putchar(*buf);
X buf++;
X }
X p_outlines++;
X }
X }
X
X tival = inval;
X skipl(((lsval-1 < bottom-lineno) ? lsval-1 : bottom-lineno));
X lineno += lsval;
X
X if (lineno > bottom)
X pfoot();
X
X}
X
X/*
X * putbak - push character back onto input
X *
X */
Xputbak(c)
Xchar c;
X{
X dprintf("putbak ");
X
X bp++;
X if (bp > BUFSIZE)
X error("too many characters pushed back.\n");
X buf[bp] = c;
X}
X
X
X/*
X * puttl - put out title line with optional page number & date
X *
X */
Xputtl(buf, lim, pageno)
Xchar buf[];
Xint lim[];
Xint pageno;
X{
X char chars[9],cdate[27];
X char rmstr[MAXTOK];
X char delim;
X char *tp;
X int j;
X int nc, n, i, left, right, ncd;
X
X dprintf("puttl ");
X if (print == NO)
X return;
X left = lim[0]; /* no more +1 here */
X right = lim[1]; /* no more +1 here */
X nc = itoc(pageno, chars, MAXCHARS);
X if (roman) {
X nc = cvtroman(chars,rmstr);
X strcpy(chars,rmstr);
X }
X getnow(cdate);
X ncd = strlen(cdate);
X i = 0;
X delim = buf[i];
X for (j = 0; j < right; j++)
X ttl[j] = ' ';
X n = 0;
X do {
X if (gfield(buf, &i, right-left, tbuf1, delim) > 0) {
X subst(tbuf1, PAGENUM, tbuf2, chars, nc);
X subst(tbuf2, CURRENTDATE, tbuf1, cdate, ncd);
X justfy(tbuf1, left, right, tjust[n], ttl);
X }
X n++; /* update title counter */
X }
X while (buf[i] != EOS && buf[i] != '\n' && n != 3);
X
X for( ; right >= 1 ; right--)
X if( ttl[right-1] != ' ' )
X break;
X ttl[right] = '\n';
X ttl[right+1] = EOS;
X for (i = 1; i <= offset; i++)
X putchar(' '); /* offset */
X tp = ttl;
X while (*tp != '\0') {
X putchar(*tp);
X tp++;
X }
X p_outlines++;
X}
X
X/*
X * set - set parameter and check range
X *
X */
Xset(param, val, argtyp, defval, minval, maxval)
Xint *param;
Xint val;
Xint argtyp;
Xint defval;
Xint minval;
Xint maxval;
X{
X int i;
X dprintf("set ");
X i = *param;
X if (argtyp == '\n') /* defaulted */
X i = defval;
X else if (argtyp == '+') /* relative +*/
X i += val;
X else if (argtyp == '-') /* relative -*/
X i -= val;
X else /* absolute */
X i = val;
X i = (i < maxval) ? i : maxval; /* min */
X i = (i > minval) ? i : minval; /* max */
X *param = i;
X}
X
X/*
X* skipl - output n blank lines
X*
X*/
Xskipl(n)
Xregister int n;
X{
X register int i;
X
X dprintf("skip ");
X if (print == YES)
X for (i = 1; i <= n; i++) {
X putchar('\n');
X p_outlines++;
X }
X}
X
X/*
X * space - space n lines or to bottom of page
X *
X */
Xspace(n)
Xint n;
X{
X
X dprintf("space ");
X brk();
X if (lineno > bottom)
X return;
X if (lineno == 0)
X phead();
X skipl(((n < bottom+1-lineno) ? n : bottom+1-lineno));
X lineno += n;
X if (lineno > bottom)
X pfoot();
X}
X
X/*
X * spread - spread words to justify right margin
X *
X */
Xspread(buf, outp, nextra, outwds)
Xchar buf[];
Xint outp;
Xint nextra;
Xint outwds;
X{
X int dir = 0;
X
X register int i, j;
X int nb, ne, nholes;
X
X dprintf("spread ");
X if (nextra <= 0 || outwds <= 1)
X return;
X dir = 1 - dir; /* reverse previous direction */
X ne = nextra;
X nholes = outwds - 1;
X if (tival != inval && nholes > 1)
X nholes--;
X i = outp - 1;
X j = (MAXOUT-2 < i+ne) ? MAXOUT-2 : i+ne; /* leave room for '\n', EOS */
X while (i < j) {
X buf[j] = buf[i];
X if (buf[i] == ' ' && buf[i-1] != ' ') {
X if (dir == 0)
X nb = (ne-1) / nholes + 1;
X else
X nb = ne / nholes;
X ne -= nb;
X nholes--;
X for ( ; nb > 0; nb--) {
X j--;
X buf[j] = ' ';
X }
X }
X i--;
X j--;
X }
X}
X
X/*
X * subst - substitutes a string for a specified character
X *
X */
Xsubst(in, chr, out, subara, n)
Xchar in[];
Xchar chr;
Xchar out[];
Xchar subara[];
Xint n;
X{
X register int i, j, k;
X
X dprintf("subst ");
X j = 0;
X for (i = 0; in[i] != EOS; i++)
X if (in[i] == chr)
X for (k = 0; k < n; k++) {
X out[j] = subara[k];
X j++;
X }
X else {
X out[j] = in[i];
X j++;
X }
X out[j] = EOS;
X}
X
X/*
X * Text process text lines
X *
X */
X
Xtext(inbuf)
Xchar inbuf[];
X{
X int i;
X register int j;
X char wrdbuf[INSIZE];
X
X dovar(wrdbuf,inbuf); /* expand variables */
X strcpy(inbuf,wrdbuf);
X doesc(inbuf, wrdbuf, INSIZE); /* expand escapes */
X dotabs(inbuf, wrdbuf, INSIZE); /* expand tabs */
X
X if(inbuf[0] == ' ' || inbuf[0] == '\n')
X leadbl(inbuf); /* move left, set tival */
X if(ulval > 0 || ULon) /* word underlining */
X {
X underl(inbuf, wrdbuf, INSIZE);
X ulval--;
X }
X if(boval > 0 || BDon) /* boldfacing */
X {
X bold( inbuf, wrdbuf, INSIZE);
X boval--;
X }
X if(ceval > 0 || CEon) /* centering */
X {
X center(inbuf);
X put(inbuf);
X ceval--;
X }
X else if( inbuf[0] == '\n' ) /* all blank line */
X put(inbuf);
X else if( fill == NO ) /* unfilled text */
X put(inbuf);
X else /* filled text */
X {
X i = strlen(inbuf) - 1;
X inbuf[i] = ' ';
X if( inbuf[i-1] == '.' )
X {
X i++;
X inbuf[i] = ' ';
X }
X inbuf[i+1] = EOS;
X for( i = 0 ; getwrb(inbuf, &i, wrdbuf) > 0 ; )
X putwrd(wrdbuf);
X }
X}
X
X/*
X * Underl underline words in a line
X *
X */
Xunderl(buf, tbuf, size)
Xchar buf[];
Xchar tbuf[];
Xint size;
X{
X int i, j;
X
X j = 0;
X for(i = 0 ; buf[i] != '\n' && j < size - 2; i++) {
X if( buf[i] != ' ' && buf[i] != BACKSPACE && buf[i] != '_' ) {
X tbuf[j++] = '_';
X tbuf[j++] = BACKSPACE;
X }
X if( buf[i] == BLANK )
X tbuf[j++] = ulblnk;
X else
X tbuf[j++] = buf[i];
X }
X
X tbuf[j] = '\n';
X tbuf[j+1] = '\0';
X strcpy(buf, tbuf);
X}
X
X/*
X * width - compute width of character string
X *
X */
Xint
Xwidth(buf)
Xchar buf[];
X{
X int k,i;
X
X dprintf("width ");
X k = 0;
X for (i = 0; buf[i] != EOS; i++)
X if (buf[i] == BACKSPACE)
X k--;
X else if (buf[i] >= ' ' && buf[i] <= '~')
X k++;
X return(k);
X}
X/*
X * getnow - get the date from command line if present.
X * if not specified, prompt user for it.
X *
X * (stub)
X */
Xgetnow(date)
Xchar date[];
X{
X dprintf("getnow ");
X strcpy(date,"00-xxx-1900 00:00:00");
X}
SHAR_EOF
if test 11313 -ne "`wc -c 'proff01.c'`"
then
echo shar: error transmitting "'proff01.c'" '(should have been 11313 characters)'
fi
echo shar: extracting "'proff02.c'" '(2681 characters)'
if test -f 'proff02.c'
then
echo shar: over-writing existing file "'proff02.c'"
fi
sed 's/^X//' << \SHAR_EOF > 'proff02.c'
X
X
X
X
X#include <stdio.h>
X#include <ctype.h>
X#include "defs.h"
X#include "debug.h"
X
X/*
X * addset - put c in array[i], if it fits, increment i
X *
X */
Xint
Xaddset(c,array,i,maxsize)
Xchar c;
Xchar array[];
Xint *i;
Xint maxsize;
X{
X int n,status = NO;
X dprintf("addset ");
X n = *i;
X if (n <= maxsize - 1) {
X array[n++] = c;
X status = YES;
X }
X *i = n;
X return(status);
X}
X
X/*
X * addstr - add string s to str[i] if it fits, increment i
X *
X */
Xint
Xaddstr(s,str,i,maxsize)
Xchar s[];
Xchar str[];
Xint *i;
Xint maxsize;
X{
X int k,j,status = NO;
X
X dprintf("addstr ");
X j = *i;
X if (j + strlen(s) <= maxsize - 1) {
X for (k = 0; s[k] != EOS; k++)
X str[j++] = s[k];
X status = YES;
X }
X *i = j;
X return(status);
X}
X
X/*
X * ctoi - convert string at in[i] to integer, increment i
X *
X */
Xint
Xctoi(in,i)
Xchar in[];
Xint *i;
X{
X int j,n,sign;
X
X dprintf("ctoi ");
X n = 0;
X for (j = *i; in[j] == ' ' || in[j] == '\t'; j++)
X ; /* skip leading garbage */
X sign = 1;
X if (in[j] == '+' || in[j] == '-') /* sign */
X sign = (in[j++] == '+') ? 1 : -1;
X for (n = 0; in[j] >= '0' && in[j] <= '9'; j++)
X n = 10 * n + in[j] - '0';
X *i = j;
X return(sign * n);
X}
X
X/*
X * error - print message and terminate
X *
X */
Xerror(s)
Xchar s[];
X{
X fprintf(stderr,"%s\n",s);
X exit(1);
X}
X
X/*
X * getwrd - get non-blank word from in[i] into out, increment i
X *
X */
Xint
Xgetwrd(in,i,out)
Xchar in[];
Xint *i;
Xchar out[];
X{
X int j,size = 0;
X
X for (j = *i; in[j] == '\t' || in[j] == ' '; j++)
X ; /* skip leading garbage */
X while (in[j] != ' ' && in[j] != '\t' &&
X in[j] != EOS && in[j] != '\n')
X out[size++] = in[j++];
X out[size++] = EOS;
X *i = j;
X#ifdef DEBUG
X printf("getwrd: %s\n",out);
X#endif
X return(size);
X}
X/*
X * skipbl - skip blanks, tabs at str[i], increment i
X *
X */
Xskipbl(str,i)
Xchar str[];
Xint *i;
X{
X int n;
X dprintf("skipbl ");
X n = *i;
X while (str[n] == ' ' || str[n] == '\t')
X n++;
X *i = n;
X}
X
X/*
X * itoc - special version of itoa
X *
X */
Xint
Xitoc(n,str,size)
Xint n;
Xchar str[];
Xint size;
X{
X
X int i,j,k,sign;
X char c;
X
X dprintf("itoc ");
X if ((sign = n) < 0)
X n = -n;
X i = 0;
X do {
X str[i++] = n % 10 + '0';
X }
X while ((n /= 10) > 0 && i < size-2);
X if (sign < 0 && i < size-1)
X str[i++] = '-';
X str[i] = EOS;
X /*
X * reverse the string and plug it back in
X *
X */
X for (j = 0, k = strlen(str) - 1; j < k; j++, k--) {
X c = str[j];
X str[j] = str[k];
X str[k] = c;
X }
X return(i);
X}
X
X/*
X * usage - obvious..
X *
X */
Xusage()
X{
X#ifdef rainbow
X fprintf(stderr,"%s %s",
X "usage: proff \033[7m[+n] [-n] [-v] [-ifile] [-s] [-pon]\033[0m",
X "\033[1minfile\033[0m \033[7m[outfile]\033[0m\n");
X#else
X fprintf(stderr,
X "usage: proff [+n] [-n] [-v] [-ifile] [-s] [-pon] infile [outfile]");
X#endif
X exit(0);
X}
SHAR_EOF
echo shar: a missing newline was added to "'proff02.c'"
if test 2681 -ne "`wc -c 'proff02.c'`"
then
echo shar: error transmitting "'proff02.c'" '(should have been 2681 characters)'
fi
echo shar: extracting "'proffsym.new'" '(3452 characters)'
if test -f 'proffsym.new'
then
echo shar: over-writing existing file "'proffsym.new'"
fi
sed 's/^X//' << \SHAR_EOF > 'proffsym.new'
X
X! proff symbols
X! flag value of 1 indicate
X! a runoff-supported symbol
X! feb. 1984
X!
X! reset the formatter
X!
Xreset RESET
X!
X! bolding
X!
Xbd BD
Xbold *
X!disable_bolding DBO 1
Xdisablebolding DBO 1
Xdbo * 1
Xdb *
X!enable_bolding EBO 1
Xenablebolding EBO 1
Xebo * 1
Xeb *
X!
X! new page & paging modes
X!
Xbp BP
Xpage * 1
Xpg * 1
Xpaging PGI 1
Xpa * 1
Xnopaging NPA 1
Xnp *
X!
X! break
X!
Xbr BR 1
Xbreak * 1
X!
Xbs BS
X!
X! setup control character
X!
Xcc CC
Xcchar *
X!
X! centering
X!
Xce CE
Xcenter *
X!
Xcu CU
X!
X! macro definitions
X!
Xde DE
Xdefine *
X!
X! setup generic escape character
X!
Xec EC
Xechar *
X!
X! even footers and headers
X!
Xef EF
Xeh EH
X!
X! end macro definition
X!
X!en EN
X!
X! fill the lines
X!
Xfi FI
Xf * 1
Xfill * 1
X!
X! general footers and headers
X!
Xfo FO
Xfooter *
Xhe HE
Xheader *
X!
X! indentation (permanent)
X!
Xin IN
Xlm * 1
X!left_margin * 1
Xleftmargin * 1
X!
X! justification
X!
Xju JU
Xj * 1
Xjustify * 1
X!
X! line spacing
X!
Xls LS
Xspacing * 1
Xspc * 1
X!
X! margin spacing
X!
Xm1 M1
Xm2 M2
Xm3 M3
Xm4 M4
X!
X! test for page
X!
Xne NE
Xneed *
X!test_page * 1
Xtestpage * 1
Xtp * 1
X!
X! disable fill
X!
Xnf NF 1
Xnofill *
X!no_fill * 1
X!
X! disable justification
X!
Xnj NJ 1
Xnojustify *
X!no_justify * 1
X!
X! number registers
X!
Xnr NR
X!
X! external output
X!
Xou OU
Xoutput *
Xoe OE
Xoutend *
X!
X! odd footers and headers
X!
Xof OF
Xoh OH
X!
X! page length
X!
Xpl PL
Xps * 1
X!page_size * 1
Xpagesize * 1
X!
X! page offset
X!
Xpo PO
Xoffset *
X!
X! right margin
X!
Xrm RM 1
X!right_margin * 1
Xrightmargin * 1
X!
X! external input (include)
X!
Xso SO
Xsource *
Xinclude *
Xrequire * 1
Xreq * 1
X!
X! skip line (blank lines) according to spacing
X! sp is not the same as runoff sp
X!
Xsp SP
Xskip * 1
Xs * 1
X!
X! blank line
X!
X!blank BL 1
X!b * 1
X!
X! space from top (or bottom)
X!
Xst ST
Xskipto *
X!
X! temporary indent
X!
Xti TI
Xleft * 1
X!
X! underline
X!
Xul UL
Xunderline *
X!
X! substitute (using reqular expresions)
X!
X!su SU
X!subs *
X!substitute *
X!esu ESU
X!enable_subs *
X!dsu DSU
X!disable_subs *
X!
X! save and restore of FSECT
X!
Xsv SAV
Xsave *
Xrs RST
Xrestore *
X!
X! looping formatting for each variable
X!
X!for FOR
X!foreach *
X!enf ENF
X!endfor *
X!
X! permanent symbol replacement
X!
Xlx LEX
Xlex LEX
X!
X! ignore character
X!
Xig IG
Xignore IG
X!
X! variable definition
X!
Xvs SET
Xset *
Xvg GET
Xget *
X!
X! page numbering (roman or arabic)
X!
Xpn PN
Xpagenumber *
X!
X! paragraphing
X!
Xap AP 1
Xautoparagraph * 1
Xna *
Xnap NAP 1
X!no_autoparagraph * 1
Xnoautoparagraph * 1
X!paragraph PAR 1
X!p * 1
X!set_paragraph SPR 1
X!setparagraph * 1
X!spr * 1
X!
X!
X!comment COM 1
X!
X! same as pagenumber
X!
X!display_number DNM 1
X!dnm * 1
X!
X! entry into an index listing
X!
X!entry ENT 1
X!y * 1
X!
X! entry into contents table
X!
Xcl CL
Xcontline *
Xpc PC
Xprintcont *
X!
X! conditional formatting
X!
X!if CIF 1
X!else CELSE 1
X!endif CENDIF 1
X!ifnot CIFNOT 1
X!
X! list generation
X!
X!list LST 1
X!end_list ELS 1
X!endlist ELS 1
X!els * 1
X!list_element LEM 1
X!listelement LEM 1
X!le * 1
X!
X! literal mode (nf-nj-lm0-rm150)
X!
Xliteral LTR 1
Xlt * 1
X!end_literal ELT 1
Xendliteral ELT 1
Xel * 1
X!
X! overstrike control
X!
X!enable_overstriking EOV 1
X!eov * 1
X!disable_overstriking DOV 1
X!dov * 1
X!
X! repeat a string
X!
X!repeat REP 1
X!rpt * 1
X!
X! flush right margin
X!
X!right RIG 1
X!r * 1
X!
X! write out a special string
X!
Xwr WR
Xwrite *
X!
X! end of definitions
X
SHAR_EOF
if test 3452 -ne "`wc -c 'proffsym.new'`"
then
echo shar: error transmitting "'proffsym.new'" '(should have been 3452 characters)'
fi
# End of shell archive
exit 0
--
Usenet: [decvax|allegra|linus|ihnp4]!utzoo!yetti!oz
Bitnet: oz@[yusol|yuyetti]
In the beginning, there was Word all right, except
it wasn't fixed number of bits.
More information about the Comp.sources.unix
mailing list