Checkpoint -- still merging with Taj's version of the world.

This commit is contained in:
wkj 2004-05-16 07:55:57 +00:00
parent b855148c9b
commit c5561c23cf
37 changed files with 415 additions and 378 deletions

View file

@ -1,9 +1,9 @@
/* t..c : external declarations */ /* t..c : external declarations */
#include <u.h> #include <stdio.h>
#include <libc.h> #include <stdlib.h>
#include <bio.h> #include <string.h>
# include <ctype.h> #include <ctype.h>
# define MAXLIN 250 # define MAXLIN 250
# define MAXHEAD 44 # define MAXHEAD 44
@ -62,7 +62,7 @@ extern char texstr[];
extern int linstart; extern int linstart;
extern Biobuf *tabin, tabout; extern FILE *tabin, *tabout;
# define CRIGHT 2 # define CRIGHT 2
# define CLEFT 0 # define CLEFT 0
# define CMID 1 # define CMID 1

View file

@ -45,5 +45,5 @@ int texct = 0;
char texstr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYXZ0123456789"; char texstr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYXZ0123456789";
int linstart; int linstart;
char *exstore, *exlim, *exspace; char *exstore, *exlim, *exspace;
Biobuf *tabin /*= stdin */; FILE *tabin;
Biobuf tabout /* = stdout */; FILE *tabout;

View file

@ -8,10 +8,17 @@
# define ever (;;) # define ever (;;)
void int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
exits(tbl(argc, argv)? "error" : 0); tabin = stdin;
tabout = stdout;
if(tbl(argc, argv)){
fprintf(stderr, "error");
return 1;
}
return 0;
} }
@ -21,14 +28,14 @@ tbl(int argc, char *argv[])
char line[5120]; char line[5120];
/*int x;*/ /*int x;*/
/*x=malloc((char *)0); uncomment when allocation breaks*/ /*x=malloc((char *)0); uncomment when allocation breaks*/
Binit(&tabout, 1, OWRITE); /*Binit(&tabout, 1, OWRITE); /* tabout=stdout */
setinp(argc, argv); setinp(argc, argv);
while (gets1(line, sizeof(line))) { while (gets1(line, sizeof(line))) {
Bprint(&tabout, "%s\n", line); fprintf(tabout, "%s\n", line);
if (prefix(".TS", line)) if (prefix(".TS", line))
tableput(); tableput();
} }
Bterm(tabin); fclose(tabin);
return(0); return(0);
} }
@ -45,10 +52,8 @@ setinp(int argc, char **argv)
sargv++; sargv++;
if (sargc > 0) if (sargc > 0)
swapin(); swapin();
else { else
tabin = (Biobuf*)getcore(sizeof(Biobuf), 1); tabin = stdin;
Binit(tabin, 0, OREAD);
}
} }
@ -76,17 +81,16 @@ swapin(void)
return(0); return(0);
/* file closing is done by GCOS troff preprocessor */ /* file closing is done by GCOS troff preprocessor */
if(tabin) if(tabin)
Bterm(tabin); fclose(tabin);
ifile = *sargv; ifile = *sargv;
name = ifile; name = ifile;
if (match(ifile, "-")) { if (match(ifile, "-")) {
tabin = (Biobuf*)getcore(sizeof(Biobuf), 1); tabin = stdin;
Binit(tabin, 0, OREAD);
} else } else
tabin = Bopen(ifile, OREAD); tabin = fopen(ifile, "r");
iline = 1; iline = 1;
Bprint(&tabout, ".ds f. %s\n", ifile); fprintf(tabout, ".ds f. %s\n", ifile);
Bprint(&tabout, ".lf %d %s\n", iline, name); fprintf(tabout, ".lf %d %s\n", iline, name);
if (tabin == 0) if (tabin == 0)
error("Can't open file"); error("Can't open file");
sargc--; sargc--;

View file

@ -4,27 +4,28 @@ struct optstr {
char *optnam; char *optnam;
int *optadd; int *optadd;
} options [] = { } options [] = {
"expand", &expflg, { "expand", &expflg },
"EXPAND", &expflg, { "EXPAND", &expflg },
"center", &ctrflg, { "center", &ctrflg },
"CENTER", &ctrflg, { "CENTER", &ctrflg },
"box", &boxflg, { "box", &boxflg },
"BOX", &boxflg, { "BOX", &boxflg },
"allbox", &allflg, { "allbox", &allflg },
"ALLBOX", &allflg, { "ALLBOX", &allflg },
"doublebox", &dboxflg, { "doublebox", &dboxflg },
"DOUBLEBOX", &dboxflg, { "DOUBLEBOX", &dboxflg },
"frame", &boxflg, { "frame", &boxflg },
"FRAME", &boxflg, { "FRAME", &boxflg },
"doubleframe", &dboxflg, { "doubleframe", &dboxflg },
"DOUBLEFRAME", &dboxflg, { "DOUBLEFRAME", &dboxflg },
"tab", &tab, { "tab", &tab },
"TAB", &tab, { "TAB", &tab },
"linesize", &linsize, { "linesize", &linsize },
"LINESIZE", &linsize, { "LINESIZE", &linsize },
"delim", &delim1, { "delim", &delim1 },
"DELIM", &delim1, { "DELIM", &delim1 },
0, 0}; { 0, 0}
};
void void
@ -38,7 +39,7 @@ getcomm(void)
*(lp->optadd) = 0; *(lp->optadd) = 0;
texname = texstr[texct=0]; texname = texstr[texct=0];
tab = '\t'; tab = '\t';
Bprint(&tabout, ".nr %d \\n(.s\n", LSIZE); fprintf(tabout, ".nr %d \\n(.s\n", LSIZE);
gets1(line, sizeof(line)); gets1(line, sizeof(line));
/* see if this is a command line */ /* see if this is a command line */
if (strchr(line, ';') == 0) { if (strchr(line, ';') == 0) {
@ -70,7 +71,7 @@ getcomm(void)
*(lp->optadd) = nb[0]; *(lp->optadd) = nb[0];
} }
if (lp->optadd == &linsize) if (lp->optadd == &linsize)
Bprint(&tabout, ".nr %d %s\n", LSIZE, nb); fprintf(tabout, ".nr %d %s\n", LSIZE, nb);
if (lp->optadd == &delim1) { if (lp->optadd == &delim1) {
delim1 = nb[0]; delim1 = nb[0];
delim2 = nb[1]; delim2 = nb[1];

View file

@ -28,10 +28,10 @@ getspec(void)
oncol = 0; oncol = 0;
left1flg = rightl = 0; left1flg = rightl = 0;
readspec(); readspec();
Bprint(&tabout, ".rm"); fprintf(tabout, ".rm");
for (i = 0; i < ncol; i++) for (i = 0; i < ncol; i++)
Bprint(&tabout, " %2s", reg(i, CRIGHT)); fprintf(tabout, " %2s", reg(i, CRIGHT));
Bprint(&tabout, "\n"); fprintf(tabout, "\n");
} }
@ -42,12 +42,12 @@ readspec(void)
char sn[10], *snp, *temp; char sn[10], *snp, *temp;
sawchar = icol = 0; sawchar = icol = 0;
while (c = get1char()) { while ((c = get1char())) {
switch (c) { switch (c) {
default: default:
if (c != tab) { if (c != tab) {
char buf[64]; char buf[64];
sprint(buf, "bad table specification character %c", c); sprintf(buf, "bad table specification character %c", c);
error(buf); error(buf);
} }
case ' ': /* note this is also case tab */ case ' ': /* note this is also case tab */
@ -108,11 +108,11 @@ readspec(void)
if (c == 's' && icol <= 0) if (c == 's' && icol <= 0)
error("first column can not be S-type"); error("first column can not be S-type");
if (c == 's' && style[icol-1][nclin] == 'a') { if (c == 's' && style[icol-1][nclin] == 'a') {
Bprint(&tabout, ".tm warning: can't span a-type cols, changed to l\n"); fprintf(tabout, ".tm warning: can't span a-type cols, changed to l\n");
style[icol-1][nclin] = 'l'; style[icol-1][nclin] = 'l';
} }
if (c == 's' && style[icol-1][nclin] == 'n') { if (c == 's' && style[icol-1][nclin] == 'n') {
Bprint(&tabout, ".tm warning: can't span n-type cols, changed to c\n"); fprintf(tabout, ".tm warning: can't span n-type cols, changed to c\n");
style[icol-1][nclin] = 'c'; style[icol-1][nclin] = 'c';
} }
icol++; icol++;
@ -181,7 +181,7 @@ readspec(void)
if (icol <= 0) if (icol <= 0)
continue; continue;
temp = snp = csize[icol-1][nclin]; temp = snp = csize[icol-1][nclin];
while (c = get1char()) { while ((c = get1char())) {
if (c == ' ' || c == tab || c == '\n') if (c == ' ' || c == tab || c == '\n')
break; break;
if (c == '-' || c == '+') if (c == '-' || c == '+')
@ -206,7 +206,7 @@ readspec(void)
if (icol <= 0) if (icol <= 0)
continue; continue;
temp = snp = vsize[icol-1][nclin]; temp = snp = vsize[icol-1][nclin];
while (c = get1char()) { while ((c = get1char())) {
if (c == ' ' || c == tab || c == '\n') if (c == ' ' || c == tab || c == '\n')
break; break;
if (c == '-' || c == '+') if (c == '-' || c == '+')
@ -231,12 +231,12 @@ readspec(void)
of different widths now .... of different widths now ....
if (*snp) if (*snp)
{ {
Bprint(&tabout, "Ignored second width specification"); fprintf(tabout, "Ignored second width specification");
continue; continue;
} }
/* end commented out code ... */ /* end commented out code ... */
stopc = 0; stopc = 0;
while (c = get1char()) { while ((c = get1char())) {
if (snp == cll[icol-1] && c == '(') { if (snp == cll[icol-1] && c == '(') {
stopc = ')'; stopc = ')';
continue; continue;
@ -312,7 +312,7 @@ findcol(void)
; ;
if (c != '\n') if (c != '\n')
un1getc(c); un1getc(c);
for (s = line; *s = c = get1char(); s++) { for (s = line; (*s = c = get1char()); s++) {
if (c == ')') if (c == ')')
inpar = 0; inpar = 0;
if (inpar) if (inpar)
@ -371,7 +371,7 @@ garray(int qcol)
} }
char * char*
getcore(int a, int b) getcore(int a, int b)
{ {
char *x; char *x;

View file

@ -31,7 +31,7 @@ gettbl(void)
} else } else
instead[nlin] = 0; instead[nlin] = 0;
if (nodata(nlin)) { if (nodata(nlin)) {
if (ch = oneh(nlin)) if ((ch = oneh(nlin)))
fullbot[nlin] = ch; fullbot[nlin] = ch;
table[nlin] = (struct colstr *) alocv((ncol + 2) * sizeof(table[0][0])); table[nlin] = (struct colstr *) alocv((ncol + 2) * sizeof(table[0][0]));
for (icol = 0; icol < ncol; icol++) { for (icol = 0; icol < ncol; icol++) {

View file

@ -14,10 +14,10 @@ maktab(void) /* define the tab stops of the table */
for (icol = 0; icol < ncol; icol++) { for (icol = 0; icol < ncol; icol++) {
doubled[icol] = acase[icol] = 0; doubled[icol] = acase[icol] = 0;
Bprint(&tabout, ".nr %2s 0\n", reg(icol, CRIGHT)); fprintf(tabout, ".nr %2s 0\n", reg(icol, CRIGHT));
for (text = 0; text < 2; text++) { for (text = 0; text < 2; text++) {
if (text) if (text)
Bprint(&tabout, ".%2s\n.rm %2s\n", reg(icol, CRIGHT), fprintf(tabout, ".%2s\n.rm %2s\n", reg(icol, CRIGHT),
reg(icol, CRIGHT)); reg(icol, CRIGHT));
for (ilin = 0; ilin < nlin; ilin++) { for (ilin = 0; ilin < nlin; ilin++) {
if (instead[ilin] || fullbot[ilin]) if (instead[ilin] || fullbot[ilin])
@ -37,31 +37,31 @@ maktab(void) /* define the tab stops of the table */
s = table[ilin][icol].col; s = table[ilin][icol].col;
if ((int)s > 0 && (int)s < 128 && text) { if ((int)s > 0 && (int)s < 128 && text) {
if (doubled[icol] == 0) if (doubled[icol] == 0)
Bprint(&tabout, ".nr %d 0\n.nr %d 0\n", fprintf(tabout, ".nr %d 0\n.nr %d 0\n",
S1, S2); S1, S2);
doubled[icol] = 1; doubled[icol] = 1;
Bprint(&tabout, ".if \\n(%c->\\n(%d .nr %d \\n(%c-\n", fprintf(tabout, ".if \\n(%c->\\n(%d .nr %d \\n(%c-\n",
(int)s, S2, S2, (int)s); (int)s, S2, S2, (int)s);
} }
case 'n': case 'n':
if (table[ilin][icol].rcol != 0) { if (table[ilin][icol].rcol != 0) {
if (doubled[icol] == 0 && text == 0) if (doubled[icol] == 0 && text == 0)
Bprint(&tabout, ".nr %d 0\n.nr %d 0\n", fprintf(tabout, ".nr %d 0\n.nr %d 0\n",
S1, S2); S1, S2);
doubled[icol] = 1; doubled[icol] = 1;
if (real(s = table[ilin][icol].col) && !vspen(s)) { if (real(s = table[ilin][icol].col) && !vspen(s)) {
if (tx((int)s) != text) if (tx((int)s) != text)
continue; continue;
Bprint(&tabout, ".nr %d ", TMP); fprintf(tabout, ".nr %d ", TMP);
wide(s, FN(vforml, icol), SZ(vforml, icol)); wide(s, FN(vforml, icol), SZ(vforml, icol));
Bprint(&tabout, "\n"); fprintf(tabout, "\n");
Bprint(&tabout, ".if \\n(%d<\\n(%d .nr %d \\n(%d\n", fprintf(tabout, ".if \\n(%d<\\n(%d .nr %d \\n(%d\n",
S1, TMP, S1, TMP); S1, TMP, S1, TMP);
} }
if (text == 0 && real(s = table[ilin][icol].rcol) && !vspen(s) && !barent(s)) { if (text == 0 && real(s = table[ilin][icol].rcol) && !vspen(s) && !barent(s)) {
Bprint(&tabout, ".nr %d \\w%c%s%c\n", fprintf(tabout, ".nr %d \\w%c%s%c\n",
TMP, F1, s, F1); TMP, F1, s, F1);
Bprint(&tabout, ".if \\n(%d<\\n(%d .nr %d \\n(%d\n", S2, TMP, S2, fprintf(tabout, ".if \\n(%d<\\n(%d .nr %d \\n(%d\n", S2, TMP, S2,
TMP); TMP);
} }
continue; continue;
@ -72,53 +72,53 @@ maktab(void) /* define the tab stops of the table */
if (real(s = table[ilin][icol].col) && !vspen(s)) { if (real(s = table[ilin][icol].col) && !vspen(s)) {
if (tx((int)s) != text) if (tx((int)s) != text)
continue; continue;
Bprint(&tabout, ".nr %d ", TMP); fprintf(tabout, ".nr %d ", TMP);
wide(s, FN(vforml, icol), SZ(vforml, icol)); wide(s, FN(vforml, icol), SZ(vforml, icol));
Bprint(&tabout, "\n"); fprintf(tabout, "\n");
Bprint(&tabout, ".if \\n(%2s<\\n(%d .nr %2s \\n(%d\n", fprintf(tabout, ".if \\n(%2s<\\n(%d .nr %2s \\n(%d\n",
reg(icol, CRIGHT), TMP, reg(icol, CRIGHT), TMP); reg(icol, CRIGHT), TMP, reg(icol, CRIGHT), TMP);
} }
} }
} }
} }
if (acase[icol]) { if (acase[icol]) {
Bprint(&tabout, ".if \\n(%d>=\\n(%2s .nr %2s \\n(%du+2n\n", fprintf(tabout, ".if \\n(%d>=\\n(%2s .nr %2s \\n(%du+2n\n",
S2, reg(icol, CRIGHT), reg(icol, CRIGHT), S2); S2, reg(icol, CRIGHT), reg(icol, CRIGHT), S2);
} }
if (doubled[icol]) { if (doubled[icol]) {
Bprint(&tabout, ".nr %2s \\n(%d\n", reg(icol, CMID), S1); fprintf(tabout, ".nr %2s \\n(%d\n", reg(icol, CMID), S1);
Bprint(&tabout, ".nr %d \\n(%2s+\\n(%d\n", TMP, reg(icol, CMID), S2); fprintf(tabout, ".nr %d \\n(%2s+\\n(%d\n", TMP, reg(icol, CMID), S2);
Bprint(&tabout, ".if \\n(%d>\\n(%2s .nr %2s \\n(%d\n", TMP, fprintf(tabout, ".if \\n(%d>\\n(%2s .nr %2s \\n(%d\n", TMP,
reg(icol, CRIGHT), reg(icol, CRIGHT), TMP); reg(icol, CRIGHT), reg(icol, CRIGHT), TMP);
Bprint(&tabout, ".if \\n(%d<\\n(%2s .nr %2s +(\\n(%2s-\\n(%d)/2\n", fprintf(tabout, ".if \\n(%d<\\n(%2s .nr %2s +(\\n(%2s-\\n(%d)/2\n",
TMP, reg(icol, CRIGHT), reg(icol, CMID), reg(icol, CRIGHT), TMP); TMP, reg(icol, CRIGHT), reg(icol, CMID), reg(icol, CRIGHT), TMP);
} }
if (cll[icol][0]) { if (cll[icol][0]) {
Bprint(&tabout, ".nr %d %sn\n", TMP, cll[icol]); fprintf(tabout, ".nr %d %sn\n", TMP, cll[icol]);
Bprint(&tabout, ".if \\n(%2s<\\n(%d .nr %2s \\n(%d\n", fprintf(tabout, ".if \\n(%2s<\\n(%d .nr %2s \\n(%d\n",
reg(icol, CRIGHT), TMP, reg(icol, CRIGHT), TMP); reg(icol, CRIGHT), TMP, reg(icol, CRIGHT), TMP);
} }
for (ilin = 0; ilin < nlin; ilin++) for (ilin = 0; ilin < nlin; ilin++)
if (k = lspan(ilin, icol)) { if ((k = lspan(ilin, icol))) {
s = table[ilin][icol-k].col; s = table[ilin][icol-k].col;
if (!real(s) || barent(s) || vspen(s) ) if (!real(s) || barent(s) || vspen(s) )
continue; continue;
Bprint(&tabout, ".nr %d ", TMP); fprintf(tabout, ".nr %d ", TMP);
wide(table[ilin][icol-k].col, FN(ilin, icol - k), SZ(ilin, icol - k)); wide(table[ilin][icol-k].col, FN(ilin, icol - k), SZ(ilin, icol - k));
for (ik = k; ik >= 0; ik--) { for (ik = k; ik >= 0; ik--) {
Bprint(&tabout, "-\\n(%2s", reg(icol - ik, CRIGHT)); fprintf(tabout, "-\\n(%2s", reg(icol - ik, CRIGHT));
if (!expflg && ik > 0) if (!expflg && ik > 0)
Bprint(&tabout, "-%dn", sep[icol-ik]); fprintf(tabout, "-%dn", sep[icol-ik]);
} }
Bprint(&tabout, "\n"); fprintf(tabout, "\n");
Bprint(&tabout, ".if \\n(%d>0 .nr %d \\n(%d/%d\n", TMP, fprintf(tabout, ".if \\n(%d>0 .nr %d \\n(%d/%d\n", TMP,
TMP, TMP, k); TMP, TMP, k);
Bprint(&tabout, ".if \\n(%d<0 .nr %d 0\n", TMP, TMP); fprintf(tabout, ".if \\n(%d<0 .nr %d 0\n", TMP, TMP);
for (ik = 1; ik <= k; ik++) { for (ik = 1; ik <= k; ik++) {
if (doubled[icol-k+ik]) if (doubled[icol-k+ik])
Bprint(&tabout, ".nr %2s +\\n(%d/2\n", fprintf(tabout, ".nr %2s +\\n(%d/2\n",
reg(icol - k + ik, CMID), TMP); reg(icol - k + ik, CMID), TMP);
Bprint(&tabout, ".nr %2s +\\n(%d\n", fprintf(tabout, ".nr %2s +\\n(%d\n",
reg(icol - k + ik, CRIGHT), TMP); reg(icol - k + ik, CRIGHT), TMP);
} }
} }
@ -127,11 +127,11 @@ maktab(void) /* define the tab stops of the table */
untext(); untext();
/* if even requested, make all columns widest width */ /* if even requested, make all columns widest width */
if (evenflg) { if (evenflg) {
Bprint(&tabout, ".nr %d 0\n", TMP); fprintf(tabout, ".nr %d 0\n", TMP);
for (icol = 0; icol < ncol; icol++) { for (icol = 0; icol < ncol; icol++) {
if (evenup[icol] == 0) if (evenup[icol] == 0)
continue; continue;
Bprint(&tabout, ".if \\n(%2s>\\n(%d .nr %d \\n(%2s\n", fprintf(tabout, ".if \\n(%2s>\\n(%d .nr %d \\n(%2s\n",
reg(icol, CRIGHT), TMP, TMP, reg(icol, CRIGHT)); reg(icol, CRIGHT), TMP, TMP, reg(icol, CRIGHT));
} }
for (icol = 0; icol < ncol; icol++) { for (icol = 0; icol < ncol; icol++) {
@ -139,56 +139,56 @@ maktab(void) /* define the tab stops of the table */
/* if column not evened just retain old interval */ /* if column not evened just retain old interval */
continue; continue;
if (doubled[icol]) if (doubled[icol])
Bprint(&tabout, ".nr %2s (100*\\n(%2s/\\n(%2s)*\\n(%d/100\n", fprintf(tabout, ".nr %2s (100*\\n(%2s/\\n(%2s)*\\n(%d/100\n",
reg(icol, CMID), reg(icol, CMID), reg(icol, CRIGHT), TMP); reg(icol, CMID), reg(icol, CMID), reg(icol, CRIGHT), TMP);
/* that nonsense with the 100's and parens tries /* that nonsense with the 100's and parens tries
to avoid overflow while proportionally shifting to avoid overflow while proportionally shifting
the middle of the number */ the middle of the number */
Bprint(&tabout, ".nr %2s \\n(%d\n", reg(icol, CRIGHT), TMP); fprintf(tabout, ".nr %2s \\n(%d\n", reg(icol, CRIGHT), TMP);
} }
} }
/* now adjust for total table width */ /* now adjust for total table width */
for (tsep = icol = 0; icol < ncol; icol++) for (tsep = icol = 0; icol < ncol; icol++)
tsep += sep[icol]; tsep += sep[icol];
if (expflg) { if (expflg) {
Bprint(&tabout, ".nr %d 0", TMP); fprintf(tabout, ".nr %d 0", TMP);
for (icol = 0; icol < ncol; icol++) for (icol = 0; icol < ncol; icol++)
Bprint(&tabout, "+\\n(%2s", reg(icol, CRIGHT)); fprintf(tabout, "+\\n(%2s", reg(icol, CRIGHT));
Bprint(&tabout, "\n"); fprintf(tabout, "\n");
Bprint(&tabout, ".nr %d \\n(.l-\\n(%d\n", TMP, TMP); fprintf(tabout, ".nr %d \\n(.l-\\n(%d\n", TMP, TMP);
if (boxflg || dboxflg || allflg) if (boxflg || dboxflg || allflg)
/* tsep += 1; */ {} /* tsep += 1; */ ;
else else
tsep -= sep[ncol-1]; tsep -= sep[ncol-1];
Bprint(&tabout, ".nr %d \\n(%d/%d\n", TMP, TMP, tsep); fprintf(tabout, ".nr %d \\n(%d/%d\n", TMP, TMP, tsep);
Bprint(&tabout, ".if \\n(%d<0 .nr %d 0\n", TMP, TMP); fprintf(tabout, ".if \\n(%d<0 .nr %d 0\n", TMP, TMP);
} else } else
Bprint(&tabout, ".nr %d 1n\n", TMP); fprintf(tabout, ".nr %d 1n\n", TMP);
Bprint(&tabout, ".nr %2s 0\n", reg(-1, CRIGHT)); fprintf(tabout, ".nr %2s 0\n", reg(-1, CRIGHT));
tsep = (boxflg || allflg || dboxflg || left1flg) ? 2 : 0; tsep = (boxflg || allflg || dboxflg || left1flg) ? 2 : 0;
if (sep[-1] >= 0) if (sep[-1] >= 0)
tsep = sep[-1]; tsep = sep[-1];
for (icol = 0; icol < ncol; icol++) { for (icol = 0; icol < ncol; icol++) {
Bprint(&tabout, ".nr %2s \\n(%2s+((%d*\\n(%d)/2)\n", reg(icol, CLEFT), fprintf(tabout, ".nr %2s \\n(%2s+((%d*\\n(%d)/2)\n", reg(icol, CLEFT),
reg(icol - 1, CRIGHT), tsep, TMP); reg(icol - 1, CRIGHT), tsep, TMP);
Bprint(&tabout, ".nr %2s +\\n(%2s\n", reg(icol, CRIGHT), reg(icol, CLEFT)); fprintf(tabout, ".nr %2s +\\n(%2s\n", reg(icol, CRIGHT), reg(icol, CLEFT));
if (doubled[icol]) { if (doubled[icol]) {
/* the next line is last-ditch effort to avoid zero field width */ /* the next line is last-ditch effort to avoid zero field width */
/*Bprint(&tabout, ".if \\n(%2s=0 .nr %2s 1\n",reg(icol,CMID), reg(icol,CMID));*/ /*fprintf(tabout, ".if \\n(%2s=0 .nr %2s 1\n",reg(icol,CMID), reg(icol,CMID));*/
Bprint(&tabout, ".nr %2s +\\n(%2s\n", reg(icol, CMID), fprintf(tabout, ".nr %2s +\\n(%2s\n", reg(icol, CMID),
reg(icol, CLEFT)); reg(icol, CLEFT));
/* Bprint(&tabout, ".if n .if \\n(%s%%24>0 .nr %s +12u\n",reg(icol,CMID), reg(icol,CMID)); */ /* fprintf(tabout, ".if n .if \\n(%s%%24>0 .nr %s +12u\n",reg(icol,CMID), reg(icol,CMID)); */
} }
tsep = sep[icol] * 2; tsep = sep[icol] * 2;
} }
if (rightl) if (rightl)
Bprint(&tabout, ".nr %s (\\n(%s+\\n(%s)/2\n", reg(ncol - 1, CRIGHT), fprintf(tabout, ".nr %s (\\n(%s+\\n(%s)/2\n", reg(ncol - 1, CRIGHT),
reg(ncol - 1, CLEFT), reg(ncol - 2, CRIGHT)); reg(ncol - 1, CLEFT), reg(ncol - 2, CRIGHT));
Bprint(&tabout, ".nr TW \\n(%2s\n", reg(ncol - 1, CRIGHT)); fprintf(tabout, ".nr TW \\n(%2s\n", reg(ncol - 1, CRIGHT));
tsep = sep[ncol-1]; tsep = sep[ncol-1];
if (boxflg || allflg || dboxflg) if (boxflg || allflg || dboxflg)
Bprint(&tabout, ".nr TW +((%d*\\n(%d)/2)\n", tsep, TMP); fprintf(tabout, ".nr TW +((%d*\\n(%d)/2)\n", tsep, TMP);
Bprint(&tabout, fprintf(tabout,
".if t .if (\\n(TW+\\n(.o)>7.65i .tm Table at line %d file %s is too wide - \\n(TW units\n", iline - 1, ifile); ".if t .if (\\n(TW+\\n(.o)>7.65i .tm Table at line %d file %s is too wide - \\n(TW units\n", iline - 1, ifile);
return; return;
} }
@ -198,19 +198,19 @@ void
wide(char *s, char *fn, char *size) wide(char *s, char *fn, char *size)
{ {
if (point(s)) { if (point(s)) {
Bprint(&tabout, "\\w%c", F1); fprintf(tabout, "\\w%c", F1);
if (*fn > 0) if (*fn > 0)
putfont(fn); putfont(fn);
if (*size) if (*size)
putsize(size); putsize(size);
Bprint(&tabout, "%s", s); fprintf(tabout, "%s", s);
if (*fn > 0) if (*fn > 0)
putfont("P"); putfont("P");
if (*size) if (*size)
putsize("0"); putsize("0");
Bprint(&tabout, "%c", F1); fprintf(tabout, "%c", F1);
} else } else
Bprint(&tabout, "\\n(%c-", (int)s); fprintf(tabout, "\\n(%c-", (int)s);
} }

View file

@ -10,21 +10,21 @@ runout(void)
if (boxflg || allflg || dboxflg) if (boxflg || allflg || dboxflg)
need(); need();
if (ctrflg) { if (ctrflg) {
Bprint(&tabout, ".nr #I \\n(.i\n"); fprintf(tabout, ".nr #I \\n(.i\n");
Bprint(&tabout, ".in +(\\n(.lu-\\n(TWu-\\n(.iu)/2u\n"); fprintf(tabout, ".in +(\\n(.lu-\\n(TWu-\\n(.iu)/2u\n");
} }
Bprint(&tabout, ".fc %c %c\n", F1, F2); fprintf(tabout, ".fc %c %c\n", F1, F2);
Bprint(&tabout, ".nr #T 0-1\n"); fprintf(tabout, ".nr #T 0-1\n");
deftail(); deftail();
for (i = 0; i < nlin; i++) for (i = 0; i < nlin; i++)
putline(i, i); putline(i, i);
if (leftover) if (leftover)
yetmore(); yetmore();
Bprint(&tabout, ".fc\n"); fprintf(tabout, ".fc\n");
Bprint(&tabout, ".nr T. 1\n"); fprintf(tabout, ".nr T. 1\n");
Bprint(&tabout, ".T# 1\n"); fprintf(tabout, ".T# 1\n");
if (ctrflg) if (ctrflg)
Bprint(&tabout, ".in \\n(#Iu\n"); fprintf(tabout, ".in \\n(#Iu\n");
} }
@ -33,7 +33,7 @@ runtabs(int lform, int ldata)
{ {
int c, ct, vforml, lf; int c, ct, vforml, lf;
Bprint(&tabout, ".ta "); fprintf(tabout, ".ta ");
for (c = 0; c < ncol; c++) { for (c = 0; c < ncol; c++) {
vforml = lform; vforml = lform;
for (lf = prev(lform); lf >= 0 && vspen(table[lf][c].col); lf = prev(lf)) for (lf = prev(lform); lf >= 0 && vspen(table[lf][c].col); lf = prev(lf))
@ -45,20 +45,20 @@ runtabs(int lform, int ldata)
case 'a': case 'a':
if (table[ldata][c].rcol) if (table[ldata][c].rcol)
if (lused[c]) /*Zero field width*/ if (lused[c]) /*Zero field width*/
Bprint(&tabout, "\\n(%2su ", reg(c, CMID)); fprintf(tabout, "\\n(%2su ", reg(c, CMID));
case 'c': case 'c':
case 'l': case 'l':
case 'r': case 'r':
if (realsplit ? rused[c] : (used[c] + lused[c])) if (realsplit ? rused[c] : (used[c] + lused[c]))
Bprint(&tabout, "\\n(%2su ", reg(c, CRIGHT)); fprintf(tabout, "\\n(%2su ", reg(c, CRIGHT));
continue; continue;
case 's': case 's':
if (lspan(lform, c)) if (lspan(lform, c))
Bprint(&tabout, "\\n(%2su ", reg(c, CRIGHT)); fprintf(tabout, "\\n(%2su ", reg(c, CRIGHT));
continue; continue;
} }
} }
Bprint(&tabout, "\n"); fprintf(tabout, "\n");
} }
@ -92,7 +92,7 @@ need(void)
else else
texlin++; texlin++;
} }
Bprint(&tabout, ".ne %dv+%dp\n", texlin, 2 * horlin); fprintf(tabout, ".ne %dv+%dp\n", texlin, 2 * horlin);
} }
@ -103,48 +103,48 @@ deftail(void)
for (i = 0; i < MAXHEAD; i++) for (i = 0; i < MAXHEAD; i++)
if (linestop[i]) if (linestop[i])
Bprint(&tabout, ".nr #%c 0-1\n", linestop[i] + 'a' - 1); fprintf(tabout, ".nr #%c 0-1\n", linestop[i] + 'a' - 1);
Bprint(&tabout, ".nr #a 0-1\n"); fprintf(tabout, ".nr #a 0-1\n");
Bprint(&tabout, ".eo\n"); fprintf(tabout, ".eo\n");
Bprint(&tabout, ".de T#\n"); fprintf(tabout, ".de T#\n");
Bprint(&tabout, ".nr 35 1m\n"); fprintf(tabout, ".nr 35 1m\n");
Bprint(&tabout, ".ds #d .d\n"); fprintf(tabout, ".ds #d .d\n");
Bprint(&tabout, ".if \\(ts\\n(.z\\(ts\\(ts .ds #d nl\n"); fprintf(tabout, ".if \\(ts\\n(.z\\(ts\\(ts .ds #d nl\n");
Bprint(&tabout, ".mk ##\n"); fprintf(tabout, ".mk ##\n");
Bprint(&tabout, ".nr ## -1v\n"); fprintf(tabout, ".nr ## -1v\n");
Bprint(&tabout, ".ls 1\n"); fprintf(tabout, ".ls 1\n");
for (i = 0; i < MAXHEAD; i++) for (i = 0; i < MAXHEAD; i++)
if (linestop[i]) if (linestop[i])
Bprint(&tabout, ".if \\n(#T>=0 .nr #%c \\n(#T\n", fprintf(tabout, ".if \\n(#T>=0 .nr #%c \\n(#T\n",
linestop[i] + 'a' - 1); linestop[i] + 'a' - 1);
if (boxflg || allflg || dboxflg) /* bottom of table line */ if (boxflg || allflg || dboxflg) /* bottom of table line */
if (fullbot[nlin-1] == 0) { if (fullbot[nlin-1] == 0) {
if (!pr1403) if (!pr1403)
Bprint(&tabout, ".if \\n(T. .vs \\n(.vu-\\n(.sp\n"); fprintf(tabout, ".if \\n(T. .vs \\n(.vu-\\n(.sp\n");
Bprint(&tabout, ".if \\n(T. "); fprintf(tabout, ".if \\n(T. ");
drawline(nlin, 0, ncol, dboxflg ? '=' : '-', 1, 0); drawline(nlin, 0, ncol, dboxflg ? '=' : '-', 1, 0);
Bprint(&tabout, "\n.if \\n(T. .vs\n"); fprintf(tabout, "\n.if \\n(T. .vs\n");
/* T. is really an argument to a macro but because of /* T. is really an argument to a macro but because of
eqn we don't dare pass it as an argument and reference by $1 */ eqn we don't dare pass it as an argument and reference by $1 */
} }
for (c = 0; c < ncol; c++) { for (c = 0; c < ncol; c++) {
if ((lf = left(nlin - 1, c, &lwid)) >= 0) { if ((lf = left(nlin - 1, c, &lwid)) >= 0) {
Bprint(&tabout, ".if \\n(#%c>=0 .sp -1\n", linestop[lf] + 'a' - 1); fprintf(tabout, ".if \\n(#%c>=0 .sp -1\n", linestop[lf] + 'a' - 1);
Bprint(&tabout, ".if \\n(#%c>=0 ", linestop[lf] + 'a' - 1); fprintf(tabout, ".if \\n(#%c>=0 ", linestop[lf] + 'a' - 1);
tohcol(c); tohcol(c);
drawvert(lf, nlin - 1, c, lwid); drawvert(lf, nlin - 1, c, lwid);
Bprint(&tabout, "\\h'|\\n(TWu'\n"); fprintf(tabout, "\\h'|\\n(TWu'\n");
} }
} }
if (boxflg || allflg || dboxflg) /* right hand line */ { if (boxflg || allflg || dboxflg) /* right hand line */ {
Bprint(&tabout, ".if \\n(#a>=0 .sp -1\n"); fprintf(tabout, ".if \\n(#a>=0 .sp -1\n");
Bprint(&tabout, ".if \\n(#a>=0 \\h'|\\n(TWu'"); fprintf(tabout, ".if \\n(#a>=0 \\h'|\\n(TWu'");
drawvert (0, nlin - 1, ncol, dboxflg ? 2 : 1); drawvert (0, nlin - 1, ncol, dboxflg ? 2 : 1);
Bprint(&tabout, "\n"); fprintf(tabout, "\n");
} }
Bprint(&tabout, ".ls\n"); fprintf(tabout, ".ls\n");
Bprint(&tabout, "..\n"); fprintf(tabout, "..\n");
Bprint(&tabout, ".ec\n"); fprintf(tabout, ".ec\n");
} }

View file

@ -28,19 +28,19 @@ putline(int i, int nl)
if (!vspen(s = table[ip][c].col)) if (!vspen(s = table[ip][c].col))
break; break;
if ((int)s > 0 && (int)s < 128) if ((int)s > 0 && (int)s < 128)
Bprint(&tabout, ".ne \\n(%c|u+\\n(.Vu\n", (int)s); fprintf(tabout, ".ne \\n(%c|u+\\n(.Vu\n", (int)s);
continue; continue;
} }
if (point(s)) if (point(s))
continue; continue;
Bprint(&tabout, ".ne \\n(%c|u+\\n(.Vu\n", (int)s); fprintf(tabout, ".ne \\n(%c|u+\\n(.Vu\n", (int)s);
watchout = 1; watchout = 1;
} }
if (linestop[nl]) if (linestop[nl])
Bprint(&tabout, ".mk #%c\n", linestop[nl] + 'a' - 1); fprintf(tabout, ".mk #%c\n", linestop[nl] + 'a' - 1);
lf = prev(nl); lf = prev(nl);
if (instead[nl]) { if (instead[nl]) {
Bprint(&tabout, "%s\n", instead[nl]); fprintf(tabout, "%s\n", instead[nl]);
return; return;
} }
if (fullbot[nl]) { if (fullbot[nl]) {
@ -60,8 +60,8 @@ putline(int i, int nl)
vspf = 1; vspf = 1;
} }
if (vspf) { if (vspf) {
Bprint(&tabout, ".nr #^ \\n(\\*(#du\n"); fprintf(tabout, ".nr #^ \\n(\\*(#du\n");
Bprint(&tabout, ".nr #- \\n(#^\n"); /* current line position relative to bottom */ fprintf(tabout, ".nr #- \\n(#^\n"); /* current line position relative to bottom */
} }
vspf = 0; vspf = 0;
chfont = 0; chfont = 0;
@ -74,11 +74,11 @@ putline(int i, int nl)
continue; continue;
lf = prev(nl); lf = prev(nl);
if (lf >= 0 && vspen(table[lf][c].col)) if (lf >= 0 && vspen(table[lf][c].col))
Bprint(&tabout, fprintf(tabout,
".if (\\n(%c|+\\n(^%c-1v)>\\n(#- .nr #- +(\\n(%c|+\\n(^%c-\\n(#--1v)\n", ".if (\\n(%c|+\\n(^%c-1v)>\\n(#- .nr #- +(\\n(%c|+\\n(^%c-\\n(#--1v)\n",
(int)s, 'a' + c, (int)s, 'a' + c); (int)s, 'a' + c, (int)s, 'a' + c);
else else
Bprint(&tabout, fprintf(tabout,
".if (\\n(%c|+\\n(#^-1v)>\\n(#- .nr #- +(\\n(%c|+\\n(#^-\\n(#--1v)\n", ".if (\\n(%c|+\\n(#^-1v)>\\n(#- .nr #- +(\\n(%c|+\\n(#^-\\n(#--1v)\n",
(int)s, (int)s); (int)s, (int)s);
} }
@ -87,14 +87,14 @@ putline(int i, int nl)
once = 1; once = 1;
runtabs(i, nl); runtabs(i, nl);
if (allh(i) && !pr1403) { if (allh(i) && !pr1403) {
Bprint(&tabout, ".nr %d \\n(.v\n", SVS); fprintf(tabout, ".nr %d \\n(.v\n", SVS);
Bprint(&tabout, ".vs \\n(.vu-\\n(.sp\n"); fprintf(tabout, ".vs \\n(.vu-\\n(.sp\n");
Bprint(&tabout, ".nr 35 \\n(.vu\n"); fprintf(tabout, ".nr 35 \\n(.vu\n");
} else } else
Bprint(&tabout, ".nr 35 1m\n"); fprintf(tabout, ".nr 35 1m\n");
if (chfont) if (chfont)
Bprint(&tabout, ".nr %2d \\n(.f\n", S1); fprintf(tabout, ".nr %2d \\n(.f\n", S1);
Bprint(&tabout, "\\&"); fprintf(tabout, "\\&");
vct = 0; vct = 0;
for (c = 0; c < ncol; c++) { for (c = 0; c < ncol; c++) {
uphalf = 0; uphalf = 0;
@ -115,7 +115,7 @@ putline(int i, int nl)
rct = reg(c, CMID); rct = reg(c, CMID);
if (form == 'n' && table[nl][c].rcol && lused[c] == 0) if (form == 'n' && table[nl][c].rcol && lused[c] == 0)
rct = reg(c, CMID); rct = reg(c, CMID);
Bprint(&tabout, "\\h'|\\n(%2su'", rct); fprintf(tabout, "\\h'|\\n(%2su'", rct);
} }
s = table[nl][c].col; s = table[nl][c].col;
fn = font[c][stynum[vforml]]; fn = font[c][stynum[vforml]];
@ -133,27 +133,27 @@ putline(int i, int nl)
if (ip >= 0) if (ip >= 0)
if (vspen(table[ip][c].col)) { if (vspen(table[ip][c].col)) {
if (exvspen == 0) { if (exvspen == 0) {
Bprint(&tabout, "\\v'-(\\n(\\*(#du-\\n(^%cu", c + 'a'); fprintf(tabout, "\\v'-(\\n(\\*(#du-\\n(^%cu", c + 'a');
if (cmidx) if (cmidx)
/* code folded from here */ /* code folded from here */
Bprint(&tabout, "-((\\n(#-u-\\n(^%cu)/2u)", c + 'a'); fprintf(tabout, "-((\\n(#-u-\\n(^%cu)/2u)", c + 'a');
/* unfolding */ /* unfolding */
vct++; vct++;
if (pr1403) /* must round to whole lines */ if (pr1403) /* must round to whole lines */
/* code folded from here */ /* code folded from here */
Bprint(&tabout, "/1v*1v"); fprintf(tabout, "/1v*1v");
/* unfolding */ /* unfolding */
Bprint(&tabout, "'"); fprintf(tabout, "'");
exvspen = 1; exvspen = 1;
} }
} }
Bprint(&tabout, "%c%c", F1, F2); fprintf(tabout, "%c%c", F1, F2);
if (uphalf) if (uphalf)
Bprint(&tabout, "\\u"); fprintf(tabout, "\\u");
puttext(s, fn, size); puttext(s, fn, size);
if (uphalf) if (uphalf)
Bprint(&tabout, "\\d"); fprintf(tabout, "\\d");
Bprint(&tabout, "%c", F1); fprintf(tabout, "%c", F1);
} }
s = table[nl][c].rcol; s = table[nl][c].rcol;
form = 1; form = 1;
@ -171,7 +171,7 @@ putline(int i, int nl)
case '-': case '-':
case '=': case '=':
if (real(table[nl][c].col)) if (real(table[nl][c].col))
fprint(2, "%s: line %d: Data ignored on table line %d\n", ifile, iline - 1, i + 1); fprintf(stderr, "%s: line %d: Data ignored on table line %d\n", ifile, iline - 1, i + 1);
makeline(i, c, ct); makeline(i, c, ct);
continue; continue;
default: default:
@ -184,7 +184,7 @@ putline(int i, int nl)
continue; continue;
} }
if (filler(s)) { if (filler(s)) {
Bprint(&tabout, "\\l'|\\n(%2su\\&%s'", reg(c, CRIGHT), s + 2); fprintf(tabout, "\\l'|\\n(%2su\\&%s'", reg(c, CRIGHT), s + 2);
continue; continue;
} }
ip = prev(nl); ip = prev(nl);
@ -192,67 +192,68 @@ putline(int i, int nl)
if (ip >= 0) if (ip >= 0)
if (vspen(table[ip][c].col)) { if (vspen(table[ip][c].col)) {
if (exvspen == 0) { if (exvspen == 0) {
Bprint(&tabout, "\\v'-(\\n(\\*(#du-\\n(^%cu", c + 'a'); fprintf(tabout, "\\v'-(\\n(\\*(#du-\\n(^%cu", c + 'a');
if (cmidx) if (cmidx)
Bprint(&tabout, "-((\\n(#-u-\\n(^%cu)/2u)", c + 'a'); fprintf(tabout, "-((\\n(#-u-\\n(^%cu)/2u)", c + 'a');
vct++; vct++;
if (pr1403) /* round to whole lines */ if (pr1403) /* round to whole lines */
Bprint(&tabout, "/1v*1v"); fprintf(tabout, "/1v*1v");
Bprint(&tabout, "'"); fprintf(tabout, "'");
} }
} }
Bprint(&tabout, "%c", F1); fprintf(tabout, "%c", F1);
if (form != 1) if (form != 1)
Bprint(&tabout, "%c", F2); fprintf(tabout, "%c", F2);
if (vspen(s)) if (vspen(s))
vspf = 1; vspf = 1;
else else
{ {
if (uphalf) if (uphalf)
Bprint(&tabout, "\\u"); fprintf(tabout, "\\u");
puttext(s, fn, size); puttext(s, fn, size);
if (uphalf) if (uphalf)
Bprint(&tabout, "\\d"); fprintf(tabout, "\\d");
} }
if (form != 2) if (form != 2)
Bprint(&tabout, "%c", F2); fprintf(tabout, "%c", F2);
Bprint(&tabout, "%c", F1); fprintf(tabout, "%c", F1);
} }
ip = prev(nl); ip = prev(nl);
if (ip >= 0) if (ip >= 0) {
if (vspen(table[ip][c].col)) { if (vspen(table[ip][c].col)) {
exvspen = (c + 1 < ncol) && vspen(table[ip][c+1].col) && exvspen = (c + 1 < ncol) && vspen(table[ip][c+1].col) &&
(topat[c] == topat[c+1]) && (topat[c] == topat[c+1]) &&
(cmidx == (flags[c+1] [stynum[nl]] & (CTOP | CDOWN) == 0)) (cmidx == ((flags[c+1] [stynum[nl]] & (CTOP | CDOWN)) == 0))
&& (left(i, c + 1, &lwid) < 0); && (left(i, c + 1, &lwid) < 0);
if (exvspen == 0) { if (exvspen == 0) {
Bprint(&tabout, "\\v'(\\n(\\*(#du-\\n(^%cu", c + 'a'); fprintf(tabout, "\\v'(\\n(\\*(#du-\\n(^%cu", c + 'a');
if (cmidx) if (cmidx)
Bprint(&tabout, "-((\\n(#-u-\\n(^%cu)/2u)", c + 'a'); fprintf(tabout, "-((\\n(#-u-\\n(^%cu)/2u)", c + 'a');
vct++; vct++;
if (pr1403) /* round to whole lines */ if (pr1403) /* round to whole lines */
Bprint(&tabout, "/1v*1v"); fprintf(tabout, "/1v*1v");
Bprint(&tabout, "'"); fprintf(tabout, "'");
} }
} }
else else
exvspen = 0; exvspen = 0;
}
/* if lines need to be split for gcos here is the place for a backslash */ /* if lines need to be split for gcos here is the place for a backslash */
if (vct > 7 && c < ncol) { if (vct > 7 && c < ncol) {
Bprint(&tabout, "\n.sp-1\n\\&"); fprintf(tabout, "\n.sp-1\n\\&");
vct = 0; vct = 0;
} }
} }
Bprint(&tabout, "\n"); fprintf(tabout, "\n");
if (allh(i) && !pr1403) if (allh(i) && !pr1403)
Bprint(&tabout, ".vs \\n(%du\n", SVS); fprintf(tabout, ".vs \\n(%du\n", SVS);
if (watchout) if (watchout)
funnies(i, nl); funnies(i, nl);
if (vspf) { if (vspf) {
for (c = 0; c < ncol; c++) for (c = 0; c < ncol; c++)
if (vspen(table[nl][c].col) && (nl == 0 || (lf = prev(nl)) < 0 || if (vspen(table[nl][c].col) && (nl == 0 || (lf = prev(nl)) < 0 ||
!vspen(table[lf][c].col))) { !vspen(table[lf][c].col))) {
Bprint(&tabout, ".nr ^%c \\n(#^u\n", 'a' + c); fprintf(tabout, ".nr ^%c \\n(#^u\n", 'a' + c);
topat[c] = nl; topat[c] = nl;
} }
} }
@ -265,9 +266,9 @@ puttext(char *s, char *fn, char *size)
if (point(s)) { if (point(s)) {
putfont(fn); putfont(fn);
putsize(size); putsize(size);
Bprint(&tabout, "%s", s); fprintf(tabout, "%s", s);
if (*fn > 0) if (*fn > 0)
Bprint(&tabout, "\\f\\n(%2d", S1); fprintf(tabout, "\\f\\n(%2d", S1);
if (size != 0) if (size != 0)
putsize("0"); putsize("0");
} }
@ -281,8 +282,8 @@ funnies(int stl, int lin)
int c, s, pl, lwid, dv, lf, ct; int c, s, pl, lwid, dv, lf, ct;
char *fn, *ss; char *fn, *ss;
Bprint(&tabout, ".mk ##\n"); /* rmember current vertical position */ fprintf(tabout, ".mk ##\n"); /* rmember current vertical position */
Bprint(&tabout, ".nr %d \\n(##\n", S1); /* bottom position */ fprintf(tabout, ".nr %d \\n(##\n", S1); /* bottom position */
for (c = 0; c < ncol; c++) { for (c = 0; c < ncol; c++) {
ss = table[lin][c].col; ss = table[lin][c].col;
if (point(ss)) if (point(ss))
@ -290,62 +291,62 @@ funnies(int stl, int lin)
if (ss == 0) if (ss == 0)
continue; continue;
s = (int)ss; s = (int)ss;
Bprint(&tabout, ".sp |\\n(##u-1v\n"); fprintf(tabout, ".sp |\\n(##u-1v\n");
Bprint(&tabout, ".nr %d ", SIND); fprintf(tabout, ".nr %d ", SIND);
ct = 0; ct = 0;
for (pl = stl; pl >= 0 && !isalpha(ct = ctype(pl, c)); pl = prev(pl)) for (pl = stl; pl >= 0 && !isalpha(ct = ctype(pl, c)); pl = prev(pl))
; ;
switch (ct) { switch (ct) {
case 'n': case 'n':
case 'c': case 'c':
Bprint(&tabout, "(\\n(%2su+\\n(%2su-\\n(%c-u)/2u\n", reg(c, CLEFT), fprintf(tabout, "(\\n(%2su+\\n(%2su-\\n(%c-u)/2u\n", reg(c, CLEFT),
reg(c - 1 + ctspan(lin, c), CRIGHT), reg(c - 1 + ctspan(lin, c), CRIGHT),
s); s);
break; break;
case 'l': case 'l':
Bprint(&tabout, "\\n(%2su\n", reg(c, CLEFT)); fprintf(tabout, "\\n(%2su\n", reg(c, CLEFT));
break; break;
case 'a': case 'a':
Bprint(&tabout, "\\n(%2su\n", reg(c, CMID)); fprintf(tabout, "\\n(%2su\n", reg(c, CMID));
break; break;
case 'r': case 'r':
Bprint(&tabout, "\\n(%2su-\\n(%c-u\n", reg(c, CRIGHT), s); fprintf(tabout, "\\n(%2su-\\n(%c-u\n", reg(c, CRIGHT), s);
break; break;
} }
Bprint(&tabout, ".in +\\n(%du\n", SIND); fprintf(tabout, ".in +\\n(%du\n", SIND);
fn = font[c][stynum[stl]]; fn = font[c][stynum[stl]];
putfont(fn); putfont(fn);
pl = prev(stl); pl = prev(stl);
if (stl > 0 && pl >= 0 && vspen(table[pl][c].col)) { if (stl > 0 && pl >= 0 && vspen(table[pl][c].col)) {
Bprint(&tabout, ".sp |\\n(^%cu\n", 'a' + c); fprintf(tabout, ".sp |\\n(^%cu\n", 'a' + c);
if ((flags[c][stynum[stl]] & (CTOP | CDOWN)) == 0) { if ((flags[c][stynum[stl]] & (CTOP | CDOWN)) == 0) {
Bprint(&tabout, ".nr %d \\n(#-u-\\n(^%c-\\n(%c|+1v\n", fprintf(tabout, ".nr %d \\n(#-u-\\n(^%c-\\n(%c|+1v\n",
TMP, 'a' + c, s); TMP, 'a' + c, s);
Bprint(&tabout, ".if \\n(%d>0 .sp \\n(%du/2u", TMP, TMP); fprintf(tabout, ".if \\n(%d>0 .sp \\n(%du/2u", TMP, TMP);
if (pr1403) /* round */ if (pr1403) /* round */
Bprint(&tabout, "/1v*1v"); fprintf(tabout, "/1v*1v");
Bprint(&tabout, "\n"); fprintf(tabout, "\n");
} }
} }
Bprint(&tabout, ".%c+\n", s); fprintf(tabout, ".%c+\n", s);
Bprint(&tabout, ".in -\\n(%du\n", SIND); fprintf(tabout, ".in -\\n(%du\n", SIND);
if (*fn > 0) if (*fn > 0)
putfont("P"); putfont("P");
Bprint(&tabout, ".mk %d\n", S2); fprintf(tabout, ".mk %d\n", S2);
Bprint(&tabout, ".if \\n(%d>\\n(%d .nr %d \\n(%d\n", S2, S1, S1, S2); fprintf(tabout, ".if \\n(%d>\\n(%d .nr %d \\n(%d\n", S2, S1, S1, S2);
} }
Bprint(&tabout, ".sp |\\n(%du\n", S1); fprintf(tabout, ".sp |\\n(%du\n", S1);
for (c = dv = 0; c < ncol; c++) { for (c = dv = 0; c < ncol; c++) {
if (stl + 1 < nlin && (lf = left(stl, c, &lwid)) >= 0) { if (stl + 1 < nlin && (lf = left(stl, c, &lwid)) >= 0) {
if (dv++ == 0) if (dv++ == 0)
Bprint(&tabout, ".sp -1\n"); fprintf(tabout, ".sp -1\n");
tohcol(c); tohcol(c);
dv++; dv++;
drawvert(lf, stl, c, lwid); drawvert(lf, stl, c, lwid);
} }
} }
if (dv) if (dv)
Bprint(&tabout, "\n"); fprintf(tabout, "\n");
} }
@ -353,7 +354,7 @@ void
putfont(char *fn) putfont(char *fn)
{ {
if (fn && *fn) if (fn && *fn)
Bprint(&tabout, fn[1] ? "\\f(%.2s" : "\\f%.2s", fn); fprintf(tabout, fn[1] ? "\\f(%.2s" : "\\f%.2s", fn);
} }
@ -361,7 +362,7 @@ void
putsize(char *s) putsize(char *s)
{ {
if (s && *s) if (s && *s)
Bprint(&tabout, "\\s%s", s); fprintf(tabout, "\\s%s", s);
} }

View file

@ -1,6 +1,6 @@
/* t9.c: write lines for tables over 200 lines */ /* t9.c: write lines for tables over 200 lines */
# include "t.h" # include "t.h"
static useln; static int useln;
void void
yetmore(void) yetmore(void)
@ -30,7 +30,7 @@ domore(char *dataln)
if (prefix(".TE", dataln)) if (prefix(".TE", dataln))
return(0); return(0);
if (dataln[0] == '.' && !isdigit(dataln[1])) { if (dataln[0] == '.' && !isdigit(dataln[1])) {
Bprint(&tabout, "%s\n", dataln); fprintf(tabout, "%s\n", dataln);
return(1); return(1);
} }
fullbot[0] = 0; fullbot[0] = 0;

View file

@ -6,7 +6,7 @@ choochar(void)
{ {
/* choose funny characters to delimit fields */ /* choose funny characters to delimit fields */
int had[128], ilin, icol, k; int had[128], ilin, icol, k;
char *s; unsigned char *s;
for (icol = 0; icol < 128; icol++) for (icol = 0; icol < 128; icol++)
had[icol] = 0; had[icol] = 0;

View file

@ -4,9 +4,9 @@
void void
error(char *s) error(char *s)
{ {
fprint(2, "\n%s:%d: %s\n", ifile, iline, s); fprintf(stderr, "\n%s:%d: %s\n", ifile, iline, s);
fprint(2, "tbl quits\n"); fprintf(stderr, "tbl quits\n");
exits(s); exit(1);
} }
@ -18,13 +18,14 @@ gets1(char *s, int size)
iline++; iline++;
ns = s; ns = s;
p = Brdline(tabin, '\n'); p = fgetln(tabin, &nbl);
while (p == 0) { while (p == 0) {
if (swapin() == 0) if (swapin() == 0)
return(0); return(0);
p = Brdline(tabin, '\n'); p = fgetln(tabin, &nbl);
} }
nbl = Blinelen(tabin)-1; if(p != 0 && p[nbl-1] == '\n')
nbl--;
if(nbl >= size) if(nbl >= size)
error("input buffer too small"); error("input buffer too small");
p[nbl] = 0; p[nbl] = 0;
@ -61,11 +62,11 @@ get1char(void)
if (backp > backup) if (backp > backup)
c = *--backp; c = *--backp;
else else
c = Bgetc(tabin); c = fgetc(tabin);
if (c == 0) /* EOF */ { if (c == 0) /* EOF */ {
if (swapin() == 0) if (swapin() == 0)
error("unexpected EOF"); error("unexpected EOF");
c = Bgetc(tabin); c = fgetc(tabin);
} }
if (c == '\n') if (c == '\n')
iline++; iline++;

View file

@ -5,25 +5,25 @@ void
savefill(void) savefill(void)
{ {
/* remembers various things: fill mode, vs, ps in mac 35 (SF) */ /* remembers various things: fill mode, vs, ps in mac 35 (SF) */
Bprint(&tabout, ".de %d\n", SF); fprintf(tabout, ".de %d\n", SF);
Bprint(&tabout, ".ps \\n(.s\n"); fprintf(tabout, ".ps \\n(.s\n");
Bprint(&tabout, ".vs \\n(.vu\n"); fprintf(tabout, ".vs \\n(.vu\n");
Bprint(&tabout, ".in \\n(.iu\n"); fprintf(tabout, ".in \\n(.iu\n");
Bprint(&tabout, ".if \\n(.u .fi\n"); fprintf(tabout, ".if \\n(.u .fi\n");
Bprint(&tabout, ".if \\n(.j .ad\n"); fprintf(tabout, ".if \\n(.j .ad\n");
Bprint(&tabout, ".if \\n(.j=0 .na\n"); fprintf(tabout, ".if \\n(.j=0 .na\n");
Bprint(&tabout, "..\n"); fprintf(tabout, "..\n");
Bprint(&tabout, ".nf\n"); fprintf(tabout, ".nf\n");
/* set obx offset if useful */ /* set obx offset if useful */
Bprint(&tabout, ".nr #~ 0\n"); fprintf(tabout, ".nr #~ 0\n");
Bprint(&tabout, ".if \\n(.T .if n .nr #~ 0.6n\n"); fprintf(tabout, ".if \\n(.T .if n .nr #~ 0.6n\n");
} }
void void
rstofill(void) rstofill(void)
{ {
Bprint(&tabout, ".%d\n", SF); fprintf(tabout, ".%d\n", SF);
} }
@ -34,25 +34,25 @@ endoff(void)
for (i = 0; i < MAXHEAD; i++) for (i = 0; i < MAXHEAD; i++)
if (linestop[i]) if (linestop[i])
Bprint(&tabout, ".nr #%c 0\n", linestop[i] + 'a' - 1); fprintf(tabout, ".nr #%c 0\n", linestop[i] + 'a' - 1);
for (i = 0; i < texct; i++) for (i = 0; i < texct; i++)
Bprint(&tabout, ".rm %c+\n", texstr[i]); fprintf(tabout, ".rm %c+\n", texstr[i]);
Bprint(&tabout, "%s\n", last); fprintf(tabout, "%s\n", last);
} }
void void
ifdivert(void) ifdivert(void)
{ {
Bprint(&tabout, ".ds #d .d\n"); fprintf(tabout, ".ds #d .d\n");
Bprint(&tabout, ".if \\(ts\\n(.z\\(ts\\(ts .ds #d nl\n"); fprintf(tabout, ".if \\(ts\\n(.z\\(ts\\(ts .ds #d nl\n");
} }
void void
saveline(void) saveline(void)
{ {
Bprint(&tabout, ".if \\n+(b.=1 .nr d. \\n(.c-\\n(c.-1\n"); fprintf(tabout, ".if \\n+(b.=1 .nr d. \\n(.c-\\n(c.-1\n");
linstart = iline; linstart = iline;
} }
@ -60,7 +60,7 @@ saveline(void)
void void
restline(void) restline(void)
{ {
Bprint(&tabout, ".if \\n-(b.=0 .nr c. \\n(.c-\\n(d.-%d\n", iline - linstart); fprintf(tabout, ".if \\n-(b.=0 .nr c. \\n(.c-\\n(d.-%d\n", iline - linstart);
linstart = 0; linstart = 0;
} }
@ -68,7 +68,7 @@ restline(void)
void void
cleanfc(void) cleanfc(void)
{ {
Bprint(&tabout, ".fc\n"); fprintf(tabout, ".fc\n");
} }

View file

@ -12,53 +12,53 @@ gettext(char *sp, int ilin, int icol, char *fn, char *sz)
if (texname == 0) if (texname == 0)
error("Too many text block diversions"); error("Too many text block diversions");
if (textflg == 0) { if (textflg == 0) {
Bprint(&tabout, ".nr %d \\n(.lu\n", SL); /* remember old line length */ fprintf(tabout, ".nr %d \\n(.lu\n", SL); /* remember old line length */
textflg = 1; textflg = 1;
} }
Bprint(&tabout, ".eo\n"); fprintf(tabout, ".eo\n");
Bprint(&tabout, ".am %s\n", reg(icol, CRIGHT)); fprintf(tabout, ".am %s\n", reg(icol, CRIGHT));
Bprint(&tabout, ".br\n"); fprintf(tabout, ".br\n");
Bprint(&tabout, ".di %c+\n", texname); fprintf(tabout, ".di %c+\n", texname);
rstofill(); rstofill();
if (fn && *fn) if (fn && *fn)
Bprint(&tabout, ".nr %d \\n(.f\n.ft %s\n", S1, fn); fprintf(tabout, ".nr %d \\n(.f\n.ft %s\n", S1, fn);
Bprint(&tabout, ".ft \\n(.f\n"); /* protect font */ fprintf(tabout, ".ft \\n(.f\n"); /* protect font */
vs = vsize[icol][stynum[ilin]]; vs = vsize[icol][stynum[ilin]];
if ((sz && *sz) || (vs && *vs)) { if ((sz && *sz) || (vs && *vs)) {
Bprint(&tabout, ".nr %d \\n(.v\n", S9); fprintf(tabout, ".nr %d \\n(.v\n", S9);
if (vs == 0 || *vs == 0) if (vs == 0 || *vs == 0)
vs = "\\n(.s+2"; vs = "\\n(.s+2";
if (sz && *sz) if (sz && *sz)
Bprint(&tabout, ".ps %s\n", sz); fprintf(tabout, ".ps %s\n", sz);
Bprint(&tabout, ".vs %s\n", vs); fprintf(tabout, ".vs %s\n", vs);
Bprint(&tabout, ".if \\n(%du>\\n(.vu .sp \\n(%du-\\n(.vu\n", S9, S9); fprintf(tabout, ".if \\n(%du>\\n(.vu .sp \\n(%du-\\n(.vu\n", S9, S9);
} }
if (cll[icol][0]) if (cll[icol][0])
Bprint(&tabout, ".ll %sn\n", cll[icol]); fprintf(tabout, ".ll %sn\n", cll[icol]);
else else
Bprint(&tabout, ".ll \\n(%du*%du/%du\n", SL, ctspan(ilin, icol), ncol + 1); fprintf(tabout, ".ll \\n(%du*%du/%du\n", SL, ctspan(ilin, icol), ncol + 1);
Bprint(&tabout, ".if \\n(.l<\\n(%2s .ll \\n(%2su\n", reg(icol, CRIGHT), fprintf(tabout, ".if \\n(.l<\\n(%2s .ll \\n(%2su\n", reg(icol, CRIGHT),
reg(icol, CRIGHT)); reg(icol, CRIGHT));
if (ctype(ilin, icol) == 'a') if (ctype(ilin, icol) == 'a')
Bprint(&tabout, ".ll -2n\n"); fprintf(tabout, ".ll -2n\n");
Bprint(&tabout, ".in 0\n"); fprintf(tabout, ".in 0\n");
while (gets1(line, sizeof(line))) { while (gets1(line, sizeof(line))) {
if (line[0] == 'T' && line[1] == '}' && line[2] == tab) if (line[0] == 'T' && line[1] == '}' && line[2] == tab)
break; break;
if (match("T}", line)) if (match("T}", line))
break; break;
Bprint(&tabout, "%s\n", line); fprintf(tabout, "%s\n", line);
} }
if (fn && *fn) if (fn && *fn)
Bprint(&tabout, ".ft \\n(%d\n", S1); fprintf(tabout, ".ft \\n(%d\n", S1);
if (sz && *sz) if (sz && *sz)
Bprint(&tabout, ".br\n.ps\n.vs\n"); fprintf(tabout, ".br\n.ps\n.vs\n");
Bprint(&tabout, ".br\n"); fprintf(tabout, ".br\n");
Bprint(&tabout, ".di\n"); fprintf(tabout, ".di\n");
Bprint(&tabout, ".nr %c| \\n(dn\n", texname); fprintf(tabout, ".nr %c| \\n(dn\n", texname);
Bprint(&tabout, ".nr %c- \\n(dl\n", texname); fprintf(tabout, ".nr %c- \\n(dl\n", texname);
Bprint(&tabout, "..\n"); fprintf(tabout, "..\n");
Bprint(&tabout, ".ec \\\n"); fprintf(tabout, ".ec \\\n");
/* copy remainder of line */ /* copy remainder of line */
if (line[2]) if (line[2])
tcopy (sp, line + 3); tcopy (sp, line + 3);
@ -74,8 +74,8 @@ void
untext(void) untext(void)
{ {
rstofill(); rstofill();
Bprint(&tabout, ".nf\n"); fprintf(tabout, ".nf\n");
Bprint(&tabout, ".ll \\n(%du\n", SL); fprintf(tabout, ".ll \\n(%du\n", SL);
} }

View file

@ -9,14 +9,14 @@ maknew(char *str)
char *p, *q, *ba; char *p, *q, *ba;
p = str; p = str;
for (ba = 0; c = *str; str++) for (ba = 0; (c = *str); str++)
if (c == '\\' && *(str + 1) == '&') if (c == '\\' && *(str + 1) == '&')
ba = str; ba = str;
str = p; str = p;
if (ba == 0) { if (ba == 0) {
for (dpoint = 0; *str; str++) { for (dpoint = 0; *str; str++) {
if (*str == '.' && !ineqn(str, p) && if (*str == '.' && !ineqn(str, p) &&
(str > p && digit(*(str - 1)) || ((str > p && digit(*(str - 1))) ||
digit(*(str + 1)))) digit(*(str + 1))))
dpoint = (int)str; dpoint = (int)str;
} }
@ -37,7 +37,7 @@ maknew(char *str)
exlim = exstore + MAXCHS; exlim = exstore + MAXCHS;
} }
q = exstore; q = exstore;
while (*exstore++ = *str++) while ((*exstore++ = *str++))
; ;
*p = 0; *p = 0;
return(q); return(q);
@ -50,7 +50,7 @@ ineqn (char *s, char *p)
/* true if s is in a eqn within p */ /* true if s is in a eqn within p */
int ineq = 0, c; int ineq = 0, c;
while (c = *p) { while ((c = *p)) {
if (s == p) if (s == p)
return(ineq); return(ineq);
p++; p++;

View file

@ -64,7 +64,7 @@ max(int a, int b)
void void
tcopy (char *s, char *t) tcopy (char *s, char *t)
{ {
while (*s++ = *t++) while ((*s++ = *t++))
; ;
} }

View file

@ -59,9 +59,9 @@ void
tohcol(int ic) tohcol(int ic)
{ {
if (ic == 0) if (ic == 0)
Bprint(&tabout, "\\h'|0'"); fprintf(tabout, "\\h'|0'");
else else
Bprint(&tabout, "\\h'(|\\n(%2su+|\\n(%2su)/2u'", reg(ic, CLEFT), fprintf(tabout, "\\h'(|\\n(%2su+|\\n(%2su)/2u'", reg(ic, CLEFT),
reg(ic - 1, CRIGHT)); reg(ic - 1, CRIGHT));
} }
@ -119,7 +119,7 @@ thish(int i, int c)
return(1); return(1);
if (vspen(s)) if (vspen(s))
return(1); return(1);
if (t = barent( s)) if ((t = barent( s)))
return(t); return(t);
return(0); return(0);
} }

View file

@ -28,7 +28,7 @@ fullwide(int i, int lintype)
int cr, cl; int cr, cl;
if (!pr1403) if (!pr1403)
Bprint(&tabout, ".nr %d \\n(.v\n.vs \\n(.vu-\\n(.sp\n", SVS); fprintf(tabout, ".nr %d \\n(.v\n.vs \\n(.vu-\\n(.sp\n", SVS);
cr = 0; cr = 0;
while (cr < ncol) { while (cr < ncol) {
cl = cr; cl = cr;
@ -40,9 +40,9 @@ fullwide(int i, int lintype)
if (cl < ncol) if (cl < ncol)
drawline(i, cl, (cr < ncol ? cr - 1 : cr), lintype, 1, 0); drawline(i, cl, (cr < ncol ? cr - 1 : cr), lintype, 1, 0);
} }
Bprint(&tabout, "\n"); fprintf(tabout, "\n");
if (!pr1403) if (!pr1403)
Bprint(&tabout, ".vs \\n(%du\n", SVS); fprintf(tabout, ".vs \\n(%du\n", SVS);
} }
@ -69,11 +69,11 @@ drawline(int i, int cl, int cr, int lintype, int noheight, int shortl)
return; return;
nodata = cr - cl >= ncol || noheight || allh(i); nodata = cr - cl >= ncol || noheight || allh(i);
if (!nodata) if (!nodata)
Bprint(&tabout, "\\v'-.5m'"); fprintf(tabout, "\\v'-.5m'");
for (ln = oldpos = 0; ln < lcount; ln++) { for (ln = oldpos = 0; ln < lcount; ln++) {
linpos = 2 * ln - lcount + 1; linpos = 2 * ln - lcount + 1;
if (linpos != oldpos) if (linpos != oldpos)
Bprint(&tabout, "\\v'%dp'", linpos - oldpos); fprintf(tabout, "\\v'%dp'", linpos - oldpos);
oldpos = linpos; oldpos = linpos;
if (shortl == 0) { if (shortl == 0) {
tohcol(cl); tohcol(cl);
@ -90,7 +90,7 @@ drawline(int i, int cl, int cr, int lintype, int noheight, int shortl)
break; break;
} }
if (exhl[0]) if (exhl[0])
Bprint(&tabout, "\\h'%s'", exhl); fprintf(tabout, "\\h'%s'", exhl);
} else if (lcount == 1) { } else if (lcount == 1) {
switch (interv(i, cl)) { switch (interv(i, cl)) {
case TOP: case TOP:
@ -102,7 +102,7 @@ drawline(int i, int cl, int cr, int lintype, int noheight, int shortl)
break; break;
} }
if (exhl[0]) if (exhl[0])
Bprint(&tabout, "\\h'%s'", exhl); fprintf(tabout, "\\h'%s'", exhl);
} }
if (lcount > 1) { if (lcount > 1) {
switch (interv(i, cr + 1)) { switch (interv(i, cr + 1)) {
@ -128,31 +128,31 @@ drawline(int i, int cl, int cr, int lintype, int noheight, int shortl)
} }
} }
} else } else
Bprint(&tabout, "\\h'|\\n(%2su'", reg(cl, CLEFT)); fprintf(tabout, "\\h'|\\n(%2su'", reg(cl, CLEFT));
Bprint(&tabout, "\\s\\n(%d", LSIZE); fprintf(tabout, "\\s\\n(%d", LSIZE);
if (linsize) if (linsize)
Bprint(&tabout, "\\v'-\\n(%dp/6u'", LSIZE); fprintf(tabout, "\\v'-\\n(%dp/6u'", LSIZE);
if (shortl) if (shortl)
Bprint(&tabout, "\\l'|\\n(%2su'", reg(cr, CRIGHT)); fprintf(tabout, "\\l'|\\n(%2su'", reg(cr, CRIGHT));
else else
{ {
lnch = "\\(ul"; lnch = "\\(ul";
if (pr1403) if (pr1403)
lnch = lintype == 2 ? "=" : "\\(ru"; lnch = lintype == 2 ? "=" : "\\(ru";
if (cr + 1 >= ncol) if (cr + 1 >= ncol)
Bprint(&tabout, "\\l'|\\n(TWu%s%s'", exhr, lnch); fprintf(tabout, "\\l'|\\n(TWu%s%s'", exhr, lnch);
else else
Bprint(&tabout, "\\l'(|\\n(%2su+|\\n(%2su)/2u%s%s'", reg(cr, CRIGHT), fprintf(tabout, "\\l'(|\\n(%2su+|\\n(%2su)/2u%s%s'", reg(cr, CRIGHT),
reg(cr + 1, CLEFT), exhr, lnch); reg(cr + 1, CLEFT), exhr, lnch);
} }
if (linsize) if (linsize)
Bprint(&tabout, "\\v'\\n(%dp/6u'", LSIZE); fprintf(tabout, "\\v'\\n(%dp/6u'", LSIZE);
Bprint(&tabout, "\\s0"); fprintf(tabout, "\\s0");
} }
if (oldpos != 0) if (oldpos != 0)
Bprint(&tabout, "\\v'%dp'", -oldpos); fprintf(tabout, "\\v'%dp'", -oldpos);
if (!nodata) if (!nodata)
Bprint(&tabout, "\\v'+.5m'"); fprintf(tabout, "\\v'+.5m'");
} }

View file

@ -16,7 +16,7 @@ drawvert(int start, int end, int c, int lwid)
epb = ept = 0; epb = ept = 0;
pos = 2 * ln - lwid + 1; pos = 2 * ln - lwid + 1;
if (pos != tp) if (pos != tp)
Bprint(&tabout, "\\h'%dp'", pos - tp); fprintf(tabout, "\\h'%dp'", pos - tp);
tp = pos; tp = pos;
if (end < nlin) { if (end < nlin) {
if (fullbot[end] || (!instead[end] && allh(end))) if (fullbot[end] || (!instead[end] && allh(end)))
@ -102,33 +102,33 @@ drawvert(int start, int end, int c, int lwid)
break; break;
} }
if (exb) if (exb)
Bprint(&tabout, "\\v'%s'", exb); fprintf(tabout, "\\v'%s'", exb);
if (epb) if (epb)
Bprint(&tabout, "\\v'%dp'", epb); fprintf(tabout, "\\v'%dp'", epb);
Bprint(&tabout, "\\s\\n(%d", LSIZE); fprintf(tabout, "\\s\\n(%d", LSIZE);
if (linsize) if (linsize)
Bprint(&tabout, "\\v'-\\n(%dp/6u'", LSIZE); fprintf(tabout, "\\v'-\\n(%dp/6u'", LSIZE);
Bprint(&tabout, "\\h'-\\n(#~u'"); /* adjustment for T450 nroff boxes */ fprintf(tabout, "\\h'-\\n(#~u'"); /* adjustment for T450 nroff boxes */
Bprint(&tabout, "\\L'|\\n(#%cu-%s", linestop[start] + 'a' - 1, fprintf(tabout, "\\L'|\\n(#%cu-%s", linestop[start] + 'a' - 1,
vm == 'v' ? "1v" : "\\n(35u"); vm == 'v' ? "1v" : "\\n(35u");
if (ext) if (ext)
Bprint(&tabout, "-(%s)", ext); fprintf(tabout, "-(%s)", ext);
if (exb) if (exb)
Bprint(&tabout, "-(%s)", exb); fprintf(tabout, "-(%s)", exb);
pos = ept - epb; pos = ept - epb;
if (pos) if (pos)
Bprint(&tabout, "%s%dp", pos >= 0 ? "+" : "", pos); fprintf(tabout, "%s%dp", pos >= 0 ? "+" : "", pos);
/* the string #d is either "nl" or ".d" depending /* the string #d is either "nl" or ".d" depending
on diversions; on GCOS not the same */ on diversions; on GCOS not the same */
Bprint(&tabout, "'\\s0\\v'\\n(\\*(#du-\\n(#%cu+%s", fprintf(tabout, "'\\s0\\v'\\n(\\*(#du-\\n(#%cu+%s",
linestop[start] + 'a' - 1, vm == 'v' ? "1v" : "\\n(35u"); linestop[start] + 'a' - 1, vm == 'v' ? "1v" : "\\n(35u");
if (ext) if (ext)
Bprint(&tabout, "+%s", ext); fprintf(tabout, "+%s", ext);
if (ept) if (ept)
Bprint(&tabout, "%s%dp", (-ept) > 0 ? "+" : "", (-ept)); fprintf(tabout, "%s%dp", (-ept) > 0 ? "+" : "", (-ept));
Bprint(&tabout, "'"); fprintf(tabout, "'");
if (linsize) if (linsize)
Bprint(&tabout, "\\v'\\n(%dp/6u'", LSIZE); fprintf(tabout, "\\v'\\n(%dp/6u'", LSIZE);
} }
} }
@ -154,7 +154,7 @@ midbcol(int i, int c)
c--; c--;
if (ct == '-' || ct == '=') if (ct == '-' || ct == '=')
return(ct); return(ct);
if (ct = barent(table[i][c].col)) if ((ct = barent(table[i][c].col)))
return(ct); return(ct);
return(0); return(0);
} }

View file

@ -143,6 +143,8 @@ void DWBdebug(dwbinit *ptr, int level)
/*****************************************************************************/ /*****************************************************************************/
extern char *unsharp(char*);
char *DWBhome(void) char *DWBhome(void)
{ {
@ -186,6 +188,7 @@ char *DWBhome(void)
if ( (home = DWBHOME) == NULL || *home == '\0' || *home == ' ' ) if ( (home = DWBHOME) == NULL || *home == '\0' || *home == ' ' )
home = NULL; home = NULL;
} /* End if */ } /* End if */
home = unsharp(home);
} /* End if */ } /* End if */
while (home && *home == '/' && *(home +1) == '/') /* remove extra slashes */ while (home && *home == '/' && *(home +1) == '/') /* remove extra slashes */

View file

@ -1,3 +1,5 @@
#define devname p9_devname
extern int TROFF; extern int TROFF;
extern int alphabet; extern int alphabet;

View file

@ -1,6 +1,7 @@
/* /*
* other * other
*/ */
#ifdef NOTDEF
int pclose(FILE*); int pclose(FILE*);
long filesize(int fd); long filesize(int fd);
int open(char *, int); int open(char *, int);
@ -8,6 +9,7 @@ int read(int, char *, int);
int lseek(int, long, int); int lseek(int, long, int);
int close(int); int close(int);
int getpid(void); int getpid(void);
#endif
/* /*
* c1.c * c1.c

View file

@ -130,7 +130,7 @@ mbstowcs(wchar_t *pwcs, const char *s, size_t n)
size_t size_t
wcstombs(char *s, const wchar_t *pwcs, size_t n) wcstombs(char *s, const wchar_t *pwcs, size_t n)
{ {
int i, d; int /*i,*/ d;
long c; long c;
char *p, *pe; char *p, *pe;
char buf[3]; char buf[3];

View file

@ -10,9 +10,6 @@
#include "ext.h" #include "ext.h"
#include "dwbinit.h" #include "dwbinit.h"
#undef MB_CUR_MAX
#define MB_CUR_MAX 3
#include <setjmp.h> #include <setjmp.h>
#include <time.h> #include <time.h>
@ -50,6 +47,7 @@ char *progname; /* program name (troff or nroff) */
int trace = 0; /* tracing mode: default off */ int trace = 0; /* tracing mode: default off */
int trace1 = 0; int trace1 = 0;
int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
char *p; char *p;
@ -57,7 +55,7 @@ main(int argc, char *argv[])
Tchar i; Tchar i;
char buf[100]; char buf[100];
ifile = stdin; ifile = stdin; /* gcc */
ptid = stdout; ptid = stdout;
buf[0] = '\0'; /* make sure it's empty (silly 3b2) */ buf[0] = '\0'; /* make sure it's empty (silly 3b2) */
@ -279,7 +277,7 @@ void init2(void)
void cvtime(void) void cvtime(void)
{ {
long tt; time_t tt;
struct tm *ltime; struct tm *ltime;
time(&tt); time(&tt);
@ -676,7 +674,6 @@ char ifilt[32] = { 0, 001, 002, 003, 0, 005, 006, 007, 010, 011, 012 };
Tchar getch0(void) Tchar getch0(void)
{ {
int j;
Tchar i; Tchar i;
again: again:
@ -719,7 +716,7 @@ g0:
if (ip) if (ip)
goto again; goto again;
} }
g2: //g2:
if (i >= 040) /* zapped: && i < 0177 */ if (i >= 040) /* zapped: && i < 0177 */
goto g4; goto g4;
i = ifilt[i]; i = ifilt[i];
@ -754,6 +751,7 @@ Tchar get1ch(FILE *fp) /* get one "character" from input, figure out what alphab
if ((n = mbtowc(&wc, buf, p-buf)) >= 0) if ((n = mbtowc(&wc, buf, p-buf)) >= 0)
break; break;
} }
if (n == 1) /* real ascii, presumably */ if (n == 1) /* real ascii, presumably */
return wc; return wc;
if (n == 0) if (n == 0)
@ -830,7 +828,7 @@ n1:
if (p[0] == '-' && p[1] == 0) { if (p[0] == '-' && p[1] == 0) {
ifile = stdin; ifile = stdin;
strcpy(cfname[ifi], "stdin"); strcpy(cfname[ifi], "stdin");
} else if ((ifile = fopen(unsharp(p), "r")) == NULL) { } else if ((ifile = fopen(p, "r")) == NULL) {
ERROR "cannot open file %s", p WARN; ERROR "cannot open file %s", p WARN;
nfo -= mflg; nfo -= mflg;
done(02); done(02);
@ -840,7 +838,7 @@ n1:
return(0); return(0);
} }
int
popf(void) popf(void)
{ {
--ifi; --ifi;
@ -874,6 +872,7 @@ void flushi(void)
* (internal names), spaces and special cookies (below 040). * (internal names), spaces and special cookies (below 040).
* Leave STX ETX ENQ ACK and BELL in to maintain compatibility with v7 troff. * Leave STX ETX ENQ ACK and BELL in to maintain compatibility with v7 troff.
*/ */
int
getach(void) getach(void)
{ {
Tchar i; Tchar i;
@ -913,11 +912,10 @@ void casenx(void)
nxf = frame + 1; nxf = frame + 1;
} }
int
getname(void) getname(void)
{ {
int j, k; int j, k;
Tchar i;
lgf++; lgf++;
for (k = 0; k < NS - 1; k++) { for (k = 0; k < NS - 1; k++) {
@ -934,12 +932,11 @@ getname(void)
void caseso(void) void caseso(void)
{ {
FILE *fp; FILE *fp = 0;
char *p, *q;
lgf++; lgf++;
nextf[0] = 0; nextf[0] = 0;
if (skip() || !getname() || (fp = fopen(unsharp(nextf), "r")) == NULL || ifi >= NSO) { if (skip() || !getname() || (fp = fopen(nextf, "r")) == NULL || ifi >= NSO) {
ERROR "can't open file %s", nextf WARN; ERROR "can't open file %s", nextf WARN;
done(02); done(02);
} }
@ -1008,7 +1005,7 @@ void casecf(void)
nextf[0] = 0; nextf[0] = 0;
if (!skip() && getname()) { if (!skip() && getname()) {
if (strncmp("<<", nextf, 2) != 0) { if (strncmp("<<", nextf, 2) != 0) {
if ((fd = fopen(unsharp(nextf), "r")) == NULL) { if ((fd = fopen(nextf, "r")) == NULL) {
ERROR "can't open file %s", nextf WARN; ERROR "can't open file %s", nextf WARN;
done(02); done(02);
} }

View file

@ -74,14 +74,13 @@ static char *parse(char *s, int typeit) /* convert \0, etc to nroff driving tabl
static int getnrfont(FILE *fp) /* read the nroff description file */ static int getnrfont(FILE *fp) /* read the nroff description file */
{ {
FILE *fin;
Chwid chtemp[NCHARS]; Chwid chtemp[NCHARS];
static Chwid chinit; static Chwid chinit;
int i, nw, n, wid, code, type; int i, nw, n, wid, code, type;
char buf[100], ch[100], s1[100], s2[100], cmd[300]; char buf[100], ch[100], s1[100], s2[100];
wchar_t wc; wchar_t wc;
code = 0;
chinit.wid = 1; chinit.wid = 1;
chinit.str = ""; chinit.str = "";
for (i = 0; i < ALPHABET; i++) { for (i = 0; i < ALPHABET; i++) {
@ -139,7 +138,7 @@ static int getnrfont(FILE *fp) /* read the nroff description file */
void n_ptinit(void) void n_ptinit(void)
{ {
int i; int i;
char *p, *cp; char *p;
char opt[50], cmd[100]; char opt[50], cmd[100];
FILE *fp; FILE *fp;
@ -186,7 +185,7 @@ void n_ptinit(void)
/* hyphalg = 0; /* for testing */ /* hyphalg = 0; /* for testing */
strcat(termtab, devname); strcat(termtab, devname);
if ((fp = fopen(unsharp(termtab), "r")) == NULL) { if ((fp = fopen(termtab, "r")) == NULL) {
ERROR "cannot open %s", termtab WARN; ERROR "cannot open %s", termtab WARN;
exit(-1); exit(-1);
} }

View file

@ -137,7 +137,6 @@ void outweird(int k) /* like ptchname() but ascii */
void outascii(Tchar i) /* print i in best-guess ascii */ void outascii(Tchar i) /* print i in best-guess ascii */
{ {
char *p;
int j = cbits(i); int j = cbits(i);
/* is this ever called with NROFF set? probably doesn't work at all. */ /* is this ever called with NROFF set? probably doesn't work at all. */

View file

@ -64,7 +64,7 @@ void blockinit(void)
char *grow(char *ptr, int num, int size) /* make array bigger */ char *grow(char *ptr, int num, int size) /* make array bigger */
{ {
char *p, new; char *p;
if (ptr == NULL) if (ptr == NULL)
p = (char *) calloc(num, size); p = (char *) calloc(num, size);
@ -307,7 +307,6 @@ void growcontab(void)
Offset finds(int mn) Offset finds(int mn)
{ {
int i; int i;
Tchar j = IMP;
Offset savip; Offset savip;
oldmn = findmn(mn); oldmn = findmn(mn);
@ -372,6 +371,7 @@ int copyb(void)
Offset savoff; Offset savoff;
Uchar *p; Uchar *p;
savoff = 0;
if (skip() || !(j = getrq())) if (skip() || !(j = getrq()))
j = '.'; j = '.';
req = j; req = j;

View file

@ -141,7 +141,7 @@ void setn(void)
for( i = 0; tabtab[i] != 0 && i < NTAB; i++) { for( i = 0; tabtab[i] != 0 && i < NTAB; i++) {
if (i > 0) if (i > 0)
buf[j++] = ' '; buf[j++] = ' ';
sprintf(&buf[j], "%d", tabtab[i] & TABMASK); sprintf(&buf[j], "%ld", tabtab[i] & TABMASK);
j = strlen(buf); j = strlen(buf);
if ( tabtab[i] & RTAB) if ( tabtab[i] & RTAB)
sprintf(&buf[j], "uR"); sprintf(&buf[j], "uR");

View file

@ -78,11 +78,12 @@ void casens(void)
dip->nls++; dip->nls++;
} }
int
chget(int c) chget(int c)
{ {
Tchar i; Tchar i;
i = 0;
if (skip() || ismot(i = getch()) || cbits(i) == ' ' || cbits(i) == '\n') { if (skip() || ismot(i = getch()) || cbits(i) == ' ' || cbits(i) == '\n') {
ch = i; ch = i;
return(c); return(c);
@ -142,7 +143,7 @@ void casenh(void)
hyf = 0; hyf = 0;
} }
int
max(int aa, int bb) max(int aa, int bb)
{ {
if (aa > bb) if (aa > bb)
@ -333,7 +334,7 @@ void casech(void)
nlist[k] = i; nlist[k] = i;
} }
int
findn(int i) findn(int i)
{ {
int k; int k;
@ -408,7 +409,7 @@ void casefm(void)
return; return;
} }
if (fcache[i].fp == NULL) { if (fcache[i].fp == NULL) {
if( (fcache[i].fp = fopen(unsharp(nextf), "w")) == NULL) { if( (fcache[i].fp = fopen(nextf, "w")) == NULL) {
ERROR "fm: cannot open %s", nextf WARN; ERROR "fm: cannot open %s", nextf WARN;
return; return;
} }
@ -742,7 +743,7 @@ void eatblk(int inblk)
} }
} }
int
cmpstr(Tchar c) cmpstr(Tchar c)
{ {
int j, delim; int j, delim;
@ -830,7 +831,7 @@ void caserd(void)
pushi(RD_OFFSET, PAIR('r','d')); pushi(RD_OFFSET, PAIR('r','d'));
} }
int
rdtty(void) rdtty(void)
{ {
char onechar; char onechar;

View file

@ -7,6 +7,7 @@
* n6.c -- width functions, sizes and fonts * n6.c -- width functions, sizes and fonts
*/ */
int
n_width(Tchar j) n_width(Tchar j)
{ {
int i, k; int i, k;
@ -294,7 +295,7 @@ void n_casebd(void)
{ {
int i, j, k; int i, j, k;
k = 0; j = k = 0;
bd0: bd0:
if (skip() || !(i = getrq()) || (j = findft(i)) == -1) { if (skip() || !(i = getrq()) || (j = findft(i)) == -1) {
if (k) if (k)

View file

@ -354,6 +354,7 @@ void newline(int a)
int i, j, nlss; int i, j, nlss;
int opn; int opn;
nlss = 0;
if (a) if (a)
goto nl1; goto nl1;
if (dip != d) { if (dip != d) {
@ -445,7 +446,7 @@ nl2:
} }
} }
int
findn1(int a) findn1(int a)
{ {
int i, j; int i, j;
@ -477,7 +478,7 @@ void chkpn(void)
} }
} }
int
findt(int a) findt(int a)
{ {
int i, j, k; int i, j, k;
@ -504,7 +505,7 @@ findt(int a)
return(k); return(k);
} }
int
findt1(void) findt1(void)
{ {
int i; int i;
@ -539,7 +540,7 @@ e1:
goto e1; goto e1;
} }
int
movword(void) movword(void)
{ {
int w; int w;
@ -648,7 +649,7 @@ void setnel(void)
} }
} }
int
getword(int x) getword(int x)
{ {
int j, k; int j, k;
@ -656,6 +657,7 @@ getword(int x)
int noword; int noword;
int obits; int obits;
j = 0;
noword = 0; noword = 0;
if (x) if (x)
if (pendw) { if (pendw) {

View file

@ -72,7 +72,7 @@ void hyphen(Tchar *wp)
} }
} }
static alpha(Tchar i) /* non-zero if really alphabetic */ static int alpha(Tchar i) /* non-zero if really alphabetic */
{ {
if (ismot(i)) if (ismot(i))
return 0; return 0;
@ -82,7 +82,7 @@ static alpha(Tchar i) /* non-zero if really alphabetic */
return isalpha(cbits(i)); return isalpha(cbits(i));
} }
int
punct(Tchar i) punct(Tchar i)
{ {
if (!i || alpha(i)) if (!i || alpha(i))
@ -217,7 +217,7 @@ int exword(void)
} }
} }
int
suffix(void) suffix(void)
{ {
Tchar *w; Tchar *w;
@ -269,7 +269,7 @@ mark:
goto again; goto again;
} }
int
maplow(int i) maplow(int i)
{ {
if (isupper(i)) if (isupper(i))
@ -277,7 +277,7 @@ maplow(int i)
return(i); return(i);
} }
int
vowel(int i) vowel(int i)
{ {
switch (i) { switch (i) {
@ -310,7 +310,7 @@ void digram(void)
Tchar *nhyend, *maxw; Tchar *nhyend, *maxw;
int maxval; int maxval;
extern char bxh[26][13], bxxh[26][13], xxh[26][13], xhx[26][13], hxx[26][13]; extern char bxh[26][13], bxxh[26][13], xxh[26][13], xhx[26][13], hxx[26][13];
maxw = 0;
again: again:
if (!(w = chkvow(hyend + 1))) if (!(w = chkvow(hyend + 1)))
return; return;
@ -341,7 +341,7 @@ again:
goto again; goto again;
} }
int
dilook(int a, int b, char t[26][13]) dilook(int a, int b, char t[26][13])
{ {
int i, j; int i, j;
@ -461,13 +461,19 @@ static int texit(Tchar *start, Tchar *end) /* hyphenate as in tex, return # foun
characters. sigh. characters. sigh.
*/ */
extern char *unsharp(char*);
static char *texhyphens;
static int readpats(void) static int readpats(void)
{ {
FILE *fp; FILE *fp;
char buf[200], buf1[200]; char buf[200], buf1[200];
if ((fp = fopen(unsharp(TEXHYPHENS), "r")) == NULL if(texhyphens == 0)
&& (fp = fopen(unsharp(DWBalthyphens), "r")) == NULL) { texhyphens = unsharp(TEXHYPHENS);
if ((fp = fopen(texhyphens, "r")) == NULL
&& (fp = fopen(DWBalthyphens, "r")) == NULL) {
ERROR "warning: can't find hyphen.tex" WARN; ERROR "warning: can't find hyphen.tex" WARN;
return 0; return 0;
} }

View file

@ -75,7 +75,7 @@ s1:
pushback(linebuf); pushback(linebuf);
} }
int
eat(int c) eat(int c)
{ {
int i; int i;
@ -341,6 +341,7 @@ Tchar setfield(int x)
int savepos; int savepos;
static Tchar wbuf[] = { WORDSP, 0}; static Tchar wbuf[] = { WORDSP, 0};
rchar = 0;
if (x == tabch) if (x == tabch)
rchar = tabc | chbits; rchar = tabc | chbits;
else if (x == ldrch) else if (x == ldrch)

View file

@ -159,6 +159,7 @@ int ptout0(Tchar *pi)
Tchar i; Tchar i;
int outsize; /* size of object being printed */ int outsize; /* size of object being printed */
w = 0;
outsize = 1; /* default */ outsize = 1; /* default */
i = *pi; i = *pi;
k = cbits(i); k = cbits(i);
@ -176,11 +177,11 @@ int ptout0(Tchar *pi)
xpts = fbits(i); /* sneaky, font bits as size bits */ xpts = fbits(i); /* sneaky, font bits as size bits */
if (xpts != mpts) if (xpts != mpts)
ptps(); ptps();
OUT "x H %d\n", sbits(i) PUT; OUT "x H %ld\n", sbits(i) PUT;
return(outsize); return(outsize);
} }
if (k == SLANT) { if (k == SLANT) {
OUT "x S %d\n", sfbits(i)-180 PUT; OUT "x S %ld\n", sfbits(i)-180 PUT;
return(outsize); return(outsize);
} }
if (k == WORDSP) { if (k == WORDSP) {
@ -300,7 +301,7 @@ int ptout0(Tchar *pi)
pi[1] = '~'; pi[1] = '~';
case DRAWSPLINE: /* spline */ case DRAWSPLINE: /* spline */
default: /* something else; copy it like spline */ default: /* something else; copy it like spline */
OUT "D%c %d %d", cbits(pi[1]), dx, dy PUT; OUT "D%ld %d %d", cbits(pi[1]), dx, dy PUT;
hpos += dx; hpos += dx;
vpos += dy; vpos += dy;
if (cbits(pi[3]) == DRAWFCN || cbits(pi[4]) == DRAWFCN) { if (cbits(pi[3]) == DRAWFCN || cbits(pi[4]) == DRAWFCN) {

View file

@ -17,13 +17,14 @@ Font fonts[MAXFONTS+1]; /* font info + ptr to width info */
#define eq(s1, s2) (strcmp(s1, s2) == 0) #define eq(s1, s2) (strcmp(s1, s2) == 0)
int
getdesc(char *name) getdesc(char *name)
{ {
FILE *fin; FILE *fin;
char cmd[100], s[100]; char cmd[100], s[100];
int i, v; int i, v;
if ((fin = fopen(unsharp(name), "r")) == NULL) if ((fin = fopen(name, "r")) == NULL)
return -1; return -1;
while (fscanf(fin, "%s", cmd) != EOF) { while (fscanf(fin, "%s", cmd) != EOF) {
if (strcmp(cmd, "res") == 0) { if (strcmp(cmd, "res") == 0) {
@ -64,7 +65,7 @@ static int checkfont(char *name)
char buf[300], buf2[300]; char buf[300], buf2[300];
int i, status = -1; int i, status = -1;
if ((fp = fopen(unsharp(name), "r")) == NULL) if ((fp = fopen(name, "r")) == NULL)
return -1; return -1;
for (i = 1; i <= 10; i++) { for (i = 1; i <= 10; i++) {
if (fgets(buf, sizeof buf, fp) == NULL) if (fgets(buf, sizeof buf, fp) == NULL)
@ -85,6 +86,7 @@ static int checkfont(char *name)
} }
int
getfont(char *name, int pos) /* create width tab for font */ getfont(char *name, int pos) /* create width tab for font */
{ {
FILE *fin; FILE *fin;
@ -94,10 +96,11 @@ getfont(char *name, int pos) /* create width tab for font */
int i, nw, n, wid, kern, code, type; int i, nw, n, wid, kern, code, type;
char buf[100], ch[100], s1[100], s2[100], s3[100], cmd[300]; char buf[100], ch[100], s1[100], s2[100], s3[100], cmd[300];
nw = code = 0;
/* fprintf(stderr, "read font %s onto %d\n", name, pos); */ /* fprintf(stderr, "read font %s onto %d\n", name, pos); */
if (checkfont(name) == -1) if (checkfont(name) == -1)
return -1; return -1;
if ((fin = fopen(unsharp(name), "r")) == NULL) if ((fin = fopen(name, "r")) == NULL)
return -1; return -1;
for (i = 0; i < ALPHABET; i++) for (i = 0; i < ALPHABET; i++)
chtemp[i] = chinit; /* zero out to begin with */ chtemp[i] = chinit; /* zero out to begin with */
@ -189,6 +192,7 @@ getfont(char *name, int pos) /* create width tab for font */
return 1; return 1;
} }
int
chadd(char *s, int type, int install) /* add s to global character name table; */ chadd(char *s, int type, int install) /* add s to global character name table; */
{ /* or just look it up */ { /* or just look it up */
@ -231,6 +235,7 @@ char *chname(int n) /* return string for char with index n */
return ""; return "";
} }
int
getlig(FILE *fin) /* pick up ligature list */ getlig(FILE *fin) /* pick up ligature list */
{ {
int lig; int lig;

View file

@ -14,6 +14,7 @@ int ccstab[MAXFONTS+1];
int bdtab[MAXFONTS+1]; int bdtab[MAXFONTS+1];
int sbold = 0; int sbold = 0;
int
t_width(Tchar j) t_width(Tchar j)
{ {
int i, k; int i, k;
@ -75,6 +76,7 @@ void zapwcache(int s)
widcache[i].fontpts = 0; widcache[i].fontpts = 0;
} }
int
onfont(int n, int f) /* is char n on font f? */ onfont(int n, int f) /* is char n on font f? */
{ {
int i; int i;
@ -108,6 +110,7 @@ onfont(int n, int f) /* is char n on font f? */
return -1; /* vanilla not found */ return -1; /* vanilla not found */
} }
int
getcw(int i) getcw(int i)
{ {
int k, n, x; int k, n, x;
@ -218,6 +221,7 @@ Tchar t_setch(int c)
char temp[50]; char temp[50];
char *s; char *s;
j = 0;
s = temp; s = temp;
if (c == '(') { /* \(xx */ if (c == '(') { /* \(xx */
if ((*s++ = getach()) == 0 || (*s++ = getach()) == 0) if ((*s++ = getach()) == 0 || (*s++ = getach()) == 0)
@ -283,7 +287,7 @@ Tchar t_setabs(void) /* set absolute char from \N'...' */
* returns -1 on error * returns -1 on error
*/ */
int
t_findft(int i) t_findft(int i)
{ {
int k; int k;
@ -362,7 +366,7 @@ void casps1(int i)
mchbits(); mchbits();
} }
int
findps(int i) findps(int i)
{ {
int j, k; int j, k;
@ -396,6 +400,7 @@ void t_setps(void)
{ {
int i, j; int i, j;
j = 0;
i = cbits(getch()); i = cbits(getch());
if (isdigit(i)) { /* \sd or \sdd */ if (isdigit(i)) { /* \sd or \sdd */
i -= '0'; i -= '0';
@ -703,10 +708,12 @@ char *strdupl(const char *s) /* make a copy of s */
return t; return t;
} }
int
setfp(int pos, int f, char *truename, int print) /* mount font f at position pos[0...nfonts] */ setfp(int pos, int f, char *truename, int print) /* mount font f at position pos[0...nfonts] */
{ {
char pathname[NS], shortname[NS], *sl; char pathname[NS], shortname[NS], *sl;
sl = (char*)0;
zapwcache(0); zapwcache(0);
if (truename) if (truename)
strcpy(shortname, truename); strcpy(shortname, truename);
@ -780,6 +787,7 @@ void casebd(void)
{ {
int i, j, k; int i, j, k;
j=0;
if (!TROFF) { if (!TROFF) {
n_casebd(); n_casebd();
return; return;

View file

@ -3,10 +3,13 @@
#include <limits.h> #include <limits.h>
#include <ctype.h> #include <ctype.h>
#include <string.h> #include <string.h>
#include <unistd.h>
#undef MB_CUR_MAX
#define MB_CUR_MAX 3
#define NROFF (!TROFF) #define NROFF (!TROFF)
/* Site dependent definitions */ /* Site dependent definitions */
#ifndef TMACDIR #ifndef TMACDIR