1 #ifndef lint 2 static char sccsid[] = "@(#)main.c 1.3 (CWI) 85/10/02"; 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 35 fprintf(stderr, "tbl: warning: unknown typesetter %s\n", p); 36 } 37 38 tabin = stdin; 39 sargv = ++argv; 40 if((sargc = --argc) > 0) 41 (void) swapin(); 42 43 while(gets1(line)){ 44 printf("%s\n", line); 45 if(prefix(".TS", line)) 46 tableput(); 47 } 48 fclose(tabin); 49 return(0); 50 } 51 52 swapin() 53 { 54 while(sargc > 0 && **sargv == '-'){ 55 if(strcmp("-ms", *sargv) == 0){ 56 *sargv = MACROS; 57 break; 58 } 59 if(strcmp("-mm", *sargv) == 0){ 60 *sargv = PYMACS; 61 break; 62 } 63 if(strcmp("-TX", *sargv) == 0){ 64 pr1403 = 1; 65 sargc--; 66 sargv++; 67 break; 68 } 69 if(strcmp("-Thar", *sargv) == 0){ 70 device = HARRIS; 71 sargc--; 72 sargv++; 73 break; 74 } 75 if(strcmp("-Tver", *sargv) == 0){ 76 device = DEVVER; 77 sargc--; 78 sargv++; 79 break; 80 } 81 if(strcmp("-d", *sargv) == 0){ 82 dbg++; 83 sargc--; 84 sargv++; 85 break; 86 } 87 sargc--; 88 sargv++; 89 } 90 if(sargc <= 0) 91 return(0); 92 if(tabin != stdin) 93 (void) fclose(tabin); 94 if(strcmp(*sargv, "-") == 0) 95 tabin = stdin; 96 else 97 tabin = fopen(ifile = *sargv, "r"); 98 iline = 1; 99 printf(".ds f. %s\n", ifile); 100 /* 101 * support for .lf request (jna) 102 */ 103 printf(".lf 1 %s\n", ifile); 104 if(tabin == NULL) 105 error("Can't open file"); 106 sargc--; 107 sargv++; 108 return(1); 109 } 110 111 badsig() 112 { 113 signal(SIGPIPE, SIG_IGN); 114 exit(0); 115 } 116 117 tableput(){ 118 119 switch(device){ 120 case CAT: 121 dprint(".\\\" -- device CAT\n"); 122 break; 123 case HARRIS: 124 dprint(".\\\" -- device HARRIS\n"); 125 break; 126 case DEVVER: 127 dprint(".\\\" -- device VERSATEC\n"); 128 break; 129 } 130 dprint(".\\\" -- saveline\n"); 131 saveline(); 132 dprint(".\\\" -- savefill\n"); 133 savefill(); 134 dprint(".\\\" -- ifdivert\n"); 135 ifdivert(); 136 dprint(".\\\" -- cleanfc\n"); 137 cleanfc(); 138 dprint(".\\\" -- getcomm\n"); 139 getcomm(); 140 dprint(".\\\" -- getspec\n"); 141 getspec(); 142 dprint(".\\\" -- gettbl\n"); 143 gettbl(); 144 dprint(".\\\" -- getstop\n"); 145 getstop(); 146 dprint(".\\\" -- checkuse\n"); 147 checkuse(); 148 dprint(".\\\" -- choochar\n"); 149 choochar(); 150 dprint(".\\\" -- maktab\n"); 151 maktab(); 152 dprint(".\\\" -- runout\n"); 153 runout(); 154 dprint(".\\\" -- release\n"); 155 release(); 156 dprint(".\\\" -- rstofill\n"); 157 rstofill(); 158 dprint(".\\\" -- endoff\n"); 159 endoff(); 160 dprint(".\\\" -- restline\n"); 161 restline(); 162 dprint(".\\\" -- end off tableput\n"); 163 } 164