13e12c5d1SDavid du Colombier /* t..c : external declarations */ 23e12c5d1SDavid du Colombier 33e12c5d1SDavid du Colombier #include <u.h> 43e12c5d1SDavid du Colombier #include <libc.h> 5*219b2ee8SDavid du Colombier #include <bio.h> 63e12c5d1SDavid du Colombier # include <ctype.h> 73e12c5d1SDavid du Colombier 83e12c5d1SDavid du Colombier # define MAXLIN 250 93e12c5d1SDavid du Colombier # define MAXHEAD 44 103e12c5d1SDavid du Colombier # define MAXCOL 30 113e12c5d1SDavid du Colombier /* Do NOT make MAXCOL bigger with adjusting nregs[] in tr.c */ 123e12c5d1SDavid du Colombier # define MAXCHS 2000 133e12c5d1SDavid du Colombier #define MAXLINLEN 300 143e12c5d1SDavid du Colombier # define MAXRPT 100 153e12c5d1SDavid du Colombier # define CLLEN 10 163e12c5d1SDavid du Colombier # define SHORTLINE 4 173e12c5d1SDavid du Colombier extern int nlin, ncol, iline, nclin, nslin; 183e12c5d1SDavid du Colombier 193e12c5d1SDavid du Colombier extern int (*style)[MAXHEAD]; 203e12c5d1SDavid du Colombier extern char (*font)[MAXHEAD][2]; 213e12c5d1SDavid du Colombier extern char (*csize)[MAXHEAD][4]; 223e12c5d1SDavid du Colombier extern char (*vsize)[MAXHEAD][4]; 233e12c5d1SDavid du Colombier extern char (*cll)[CLLEN]; 243e12c5d1SDavid du Colombier extern int (*flags)[MAXHEAD]; 253e12c5d1SDavid du Colombier # define ZEROW 001 263e12c5d1SDavid du Colombier # define HALFUP 002 273e12c5d1SDavid du Colombier # define CTOP 004 283e12c5d1SDavid du Colombier # define CDOWN 010 293e12c5d1SDavid du Colombier extern int stynum[]; 303e12c5d1SDavid du Colombier extern int qcol; 313e12c5d1SDavid du Colombier extern int *doubled, *acase, *topat; 323e12c5d1SDavid du Colombier extern int F1, F2; 333e12c5d1SDavid du Colombier extern int (*lefline)[MAXHEAD]; 343e12c5d1SDavid du Colombier extern int fullbot[]; 353e12c5d1SDavid du Colombier extern char *instead[]; 363e12c5d1SDavid du Colombier extern int expflg; 373e12c5d1SDavid du Colombier extern int ctrflg; 383e12c5d1SDavid du Colombier extern int evenflg; 393e12c5d1SDavid du Colombier extern int *evenup; 403e12c5d1SDavid du Colombier extern int boxflg; 413e12c5d1SDavid du Colombier extern int dboxflg; 423e12c5d1SDavid du Colombier extern int linsize; 433e12c5d1SDavid du Colombier extern int tab; 443e12c5d1SDavid du Colombier extern int pr1403; 453e12c5d1SDavid du Colombier extern int linsize, delim1, delim2; 463e12c5d1SDavid du Colombier extern int allflg; 473e12c5d1SDavid du Colombier extern int textflg; 483e12c5d1SDavid du Colombier extern int left1flg; 493e12c5d1SDavid du Colombier extern int rightl; 503e12c5d1SDavid du Colombier struct colstr {char *col, *rcol;}; 513e12c5d1SDavid du Colombier extern struct colstr *table[]; 523e12c5d1SDavid du Colombier extern char *cspace, *cstore; 533e12c5d1SDavid du Colombier extern char *exstore, *exlim, *exspace; 543e12c5d1SDavid du Colombier extern int *sep; 553e12c5d1SDavid du Colombier extern int *used, *lused, *rused; 563e12c5d1SDavid du Colombier extern int linestop[]; 573e12c5d1SDavid du Colombier extern char *leftover; 583e12c5d1SDavid du Colombier extern char *last, *ifile; 593e12c5d1SDavid du Colombier extern int texname; 603e12c5d1SDavid du Colombier extern int texct, texmax; 613e12c5d1SDavid du Colombier extern char texstr[]; 623e12c5d1SDavid du Colombier extern int linstart; 633e12c5d1SDavid du Colombier 643e12c5d1SDavid du Colombier 65*219b2ee8SDavid du Colombier extern Biobuf *tabin, tabout; 663e12c5d1SDavid du Colombier # define CRIGHT 2 673e12c5d1SDavid du Colombier # define CLEFT 0 683e12c5d1SDavid du Colombier # define CMID 1 693e12c5d1SDavid du Colombier # define S1 31 703e12c5d1SDavid du Colombier # define S2 32 713e12c5d1SDavid du Colombier # define S3 33 723e12c5d1SDavid du Colombier # define TMP 38 733e12c5d1SDavid du Colombier #define S9 39 743e12c5d1SDavid du Colombier # define SF 35 753e12c5d1SDavid du Colombier # define SL 34 763e12c5d1SDavid du Colombier # define LSIZE 33 773e12c5d1SDavid du Colombier # define SIND 37 783e12c5d1SDavid du Colombier # define SVS 36 793e12c5d1SDavid du Colombier /* this refers to the relative position of lines */ 803e12c5d1SDavid du Colombier # define LEFT 1 813e12c5d1SDavid du Colombier # define RIGHT 2 823e12c5d1SDavid du Colombier # define THRU 3 833e12c5d1SDavid du Colombier # define TOP 1 843e12c5d1SDavid du Colombier # define BOT 2 853e12c5d1SDavid du Colombier 863e12c5d1SDavid du Colombier int tbl(int argc,char *argv[]); /*t1.c*/ 873e12c5d1SDavid du Colombier void setinp(int, char **); 883e12c5d1SDavid du Colombier int swapin(void); 893e12c5d1SDavid du Colombier 903e12c5d1SDavid du Colombier void tableput(void); /*t2.c*/ 913e12c5d1SDavid du Colombier 923e12c5d1SDavid du Colombier void getcomm(void); /*t3.c*/ 933e12c5d1SDavid du Colombier void backrest(char *); 943e12c5d1SDavid du Colombier 953e12c5d1SDavid du Colombier void getspec(void); /*t4.c*/ 963e12c5d1SDavid du Colombier void readspec(void); 973e12c5d1SDavid du Colombier int findcol(void); 983e12c5d1SDavid du Colombier void garray(int); 993e12c5d1SDavid du Colombier char *getcore(int, int); 1003e12c5d1SDavid du Colombier void freearr(void); 1013e12c5d1SDavid du Colombier 1023e12c5d1SDavid du Colombier void gettbl(void); /*t5.c*/ 1033e12c5d1SDavid du Colombier int nodata(int); 1043e12c5d1SDavid du Colombier int oneh(int); 1053e12c5d1SDavid du Colombier int vspand(int, int, int); 1063e12c5d1SDavid du Colombier int vspen(char *); 1073e12c5d1SDavid du Colombier void permute(void); 1083e12c5d1SDavid du Colombier 1093e12c5d1SDavid du Colombier void maktab(void); /*t6.c*/ 1103e12c5d1SDavid du Colombier void wide(char *, char *, char *); 1113e12c5d1SDavid du Colombier int filler(char *); 1123e12c5d1SDavid du Colombier 1133e12c5d1SDavid du Colombier void runout(void); /*t7.c*/ 1143e12c5d1SDavid du Colombier void runtabs(int, int); 1153e12c5d1SDavid du Colombier int ifline(char *); 1163e12c5d1SDavid du Colombier void need(void); 1173e12c5d1SDavid du Colombier void deftail(void); 1183e12c5d1SDavid du Colombier 1193e12c5d1SDavid du Colombier void putline(int, int); /*t8.c*/ 1203e12c5d1SDavid du Colombier void puttext(char *, char *, char *); 1213e12c5d1SDavid du Colombier void funnies(int, int); 1223e12c5d1SDavid du Colombier void putfont(char *); 1233e12c5d1SDavid du Colombier void putsize(char *); 1243e12c5d1SDavid du Colombier 1253e12c5d1SDavid du Colombier void yetmore(void); /*t9.c*/ 1263e12c5d1SDavid du Colombier int domore(char *); 1273e12c5d1SDavid du Colombier 1283e12c5d1SDavid du Colombier void checkuse(void); /*tb.c*/ 1293e12c5d1SDavid du Colombier int real(char *); 1303e12c5d1SDavid du Colombier char *chspace(void); 1313e12c5d1SDavid du Colombier int *alocv(int); 1323e12c5d1SDavid du Colombier void release(void); 1333e12c5d1SDavid du Colombier 1343e12c5d1SDavid du Colombier void choochar(void); /*tc.c*/ 1353e12c5d1SDavid du Colombier int point(char *); 1363e12c5d1SDavid du Colombier 1373e12c5d1SDavid du Colombier void error(char *); /*te.c*/ 1383e12c5d1SDavid du Colombier char *gets1(char *, int); 1393e12c5d1SDavid du Colombier void un1getc(int); 1403e12c5d1SDavid du Colombier int get1char(void); 1413e12c5d1SDavid du Colombier 1423e12c5d1SDavid du Colombier void savefill(void); /*tf.c*/ 1433e12c5d1SDavid du Colombier void rstofill(void); 1443e12c5d1SDavid du Colombier void endoff(void); 1453e12c5d1SDavid du Colombier void freearr(void); 1463e12c5d1SDavid du Colombier void saveline(void); 1473e12c5d1SDavid du Colombier void ifdivert(void); 1483e12c5d1SDavid du Colombier void restline(void); 1493e12c5d1SDavid du Colombier void cleanfc(void); 1503e12c5d1SDavid du Colombier 1513e12c5d1SDavid du Colombier int gettext(char *, int, int, char *, char *); /*tg.c*/ 1523e12c5d1SDavid du Colombier void untext(void); 1533e12c5d1SDavid du Colombier 1543e12c5d1SDavid du Colombier int interv(int, int); /*ti.c*/ 1553e12c5d1SDavid du Colombier int interh(int, int); 1563e12c5d1SDavid du Colombier int up1(int); 1573e12c5d1SDavid du Colombier 1583e12c5d1SDavid du Colombier char *maknew(char *); /*tm.c*/ 1593e12c5d1SDavid du Colombier int ineqn (char *, char *); 1603e12c5d1SDavid du Colombier 1613e12c5d1SDavid du Colombier char *reg(int, int); /*tr.c*/ 1623e12c5d1SDavid du Colombier 1633e12c5d1SDavid du Colombier int match (char *, char *); /*ts.c*/ 1643e12c5d1SDavid du Colombier int prefix(char *, char *); 1653e12c5d1SDavid du Colombier int letter (int); 1663e12c5d1SDavid du Colombier int numb(char *); 1673e12c5d1SDavid du Colombier int digit(int); 1683e12c5d1SDavid du Colombier int max(int, int); 1693e12c5d1SDavid du Colombier void tcopy (char *, char *); 1703e12c5d1SDavid du Colombier 1713e12c5d1SDavid du Colombier int ctype(int, int); /*tt.c*/ 1723e12c5d1SDavid du Colombier int min(int, int); 1733e12c5d1SDavid du Colombier int fspan(int, int); 1743e12c5d1SDavid du Colombier int lspan(int, int); 1753e12c5d1SDavid du Colombier int ctspan(int, int); 1763e12c5d1SDavid du Colombier void tohcol(int); 1773e12c5d1SDavid du Colombier int allh(int); 1783e12c5d1SDavid du Colombier int thish(int, int); 1793e12c5d1SDavid du Colombier 1803e12c5d1SDavid du Colombier void makeline(int, int, int); /*tu.c*/ 1813e12c5d1SDavid du Colombier void fullwide(int, int); 1823e12c5d1SDavid du Colombier void drawline(int, int, int, int, int, int); 1833e12c5d1SDavid du Colombier void getstop(void); 1843e12c5d1SDavid du Colombier int left(int, int, int *); 1853e12c5d1SDavid du Colombier int lefdata(int, int); 1863e12c5d1SDavid du Colombier int next(int); 1873e12c5d1SDavid du Colombier int prev(int); 1883e12c5d1SDavid du Colombier 1893e12c5d1SDavid du Colombier void drawvert(int, int, int, int); /*tv.c*/ 1903e12c5d1SDavid du Colombier int midbar(int, int); 1913e12c5d1SDavid du Colombier int midbcol(int, int); 1923e12c5d1SDavid du Colombier int barent(char *); 193