1 #ifndef lint 2 static char sccsid[] = "@(#)main.c 1.4 (CWI) 86/11/10"; 3 #endif lint 4 5 /* 6 * tbl troff preprocessor. 7 * 8 * Tidied, and changed by jna 9 * 10 */ 11 12 #include <signal.h> 13 #include "defs.h" 14 #include "ext.h" 15 16 static int sargc; 17 static char **sargv; 18 19 main(argc, argv) 20 int argc; char *argv[]; 21 { 22 char line[BUFSIZ]; 23 register char *p; 24 char *getenv(); 25 extern int badsig(); 26 27 signal(SIGPIPE, badsig); 28 29 if (p = getenv("TYPESETTER")) { 30 if(strcmp(p, "har") == 0) 31 device = HARRIS; 32 else if(strcmp(p, "ver") == 0) 33 device = DEVVER; 34 else if(strcmp(p, "psc") == 0) 35 device = DEVPSC; 36 /* johan doesnt want to see error messages in a context like 37 TYPESETTER=1650.10 tbl files | eqn | nroff -ms 38 so I removed the warning here. Besides, there is no complaint 39 for an option -Tfoo either. */ 40 } 41 42 tabin = stdin; 43 sargv = ++argv; 44 if((sargc = --argc) > 0) 45 (void) swapin(); 46 47 while(gets1(line)){ 48 printf("%s\n", line); 49 if(prefix(".TS", line)) 50 tableput(); 51 } 52 fclose(tabin); 53 return(0); 54 } 55 56 swapin() 57 { 58 while(sargc > 0 && **sargv == '-'){ 59 if(strcmp("-ms", *sargv) == 0){ 60 *sargv = MACROS; 61 break; 62 } 63 if(strcmp("-mm", *sargv) == 0){ 64 *sargv = PYMACS; 65 break; 66 } 67 if(strcmp("-TX", *sargv) == 0){ 68 pr1403 = 1; 69 sargc--; 70 sargv++; 71 break; 72 } 73 if(strcmp("-Thar", *sargv) == 0){ 74 device = HARRIS; 75 sargc--; 76 sargv++; 77 break; 78 } 79 if(strcmp("-Tver", *sargv) == 0){ 80 device = DEVVER; 81 sargc--; 82 sargv++; 83 break; 84 } 85 if(strcmp("-Tpsc", *sargv) == 0){ 86 device = DEVPSC; 87 sargc--; 88 sargv++; 89 break; 90 } 91 if(strcmp("-d", *sargv) == 0){ 92 dbg++; 93 sargc--; 94 sargv++; 95 break; 96 } 97 sargc--; 98 sargv++; 99 } 100 if(sargc <= 0) 101 return(0); 102 if(tabin != stdin) 103 (void) fclose(tabin); 104 if(strcmp(*sargv, "-") == 0) 105 tabin = stdin; 106 else 107 tabin = fopen(ifile = *sargv, "r"); 108 iline = 1; 109 printf(".ds f. %s\n", ifile); 110 /* 111 * support for .lf request (jna) 112 */ 113 printf(".lf 1 %s\n", ifile); 114 if(tabin == NULL) 115 error("Can't open file"); 116 sargc--; 117 sargv++; 118 return(1); 119 } 120 121 badsig() 122 { 123 signal(SIGPIPE, SIG_IGN); 124 exit(0); 125 } 126 127 tableput(){ 128 129 switch(device){ 130 case CAT: 131 dprint(".\\\" -- device CAT\n"); 132 break; 133 case HARRIS: 134 dprint(".\\\" -- device HARRIS\n"); 135 break; 136 case DEVPSC: 137 dprint(".\\\" -- device PostScript\n"); 138 break; 139 case DEVVER: 140 dprint(".\\\" -- device VERSATEC\n"); 141 break; 142 } 143 dprint(".\\\" -- saveline\n"); 144 saveline(); 145 dprint(".\\\" -- savefill\n"); 146 savefill(); 147 dprint(".\\\" -- ifdivert\n"); 148 ifdivert(); 149 dprint(".\\\" -- cleanfc\n"); 150 cleanfc(); 151 dprint(".\\\" -- getcomm\n"); 152 getcomm(); 153 dprint(".\\\" -- getspec\n"); 154 getspec(); 155 dprint(".\\\" -- gettbl\n"); 156 gettbl(); 157 dprint(".\\\" -- getstop\n"); 158 getstop(); 159 dprint(".\\\" -- checkuse\n"); 160 checkuse(); 161 dprint(".\\\" -- choochar\n"); 162 choochar(); 163 dprint(".\\\" -- maktab\n"); 164 maktab(); 165 dprint(".\\\" -- runout\n"); 166 runout(); 167 dprint(".\\\" -- release\n"); 168 release(); 169 dprint(".\\\" -- rstofill\n"); 170 rstofill(); 171 dprint(".\\\" -- endoff\n"); 172 endoff(); 173 dprint(".\\\" -- restline\n"); 174 restline(); 175 dprint(".\\\" -- end off tableput\n"); 176 } 177