plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

t1.c (1541B)


      1 /* t1.c: main control and input switching */
      2 #
      3 # include "t.h"
      4 
      5 # define MACROS "/usr/lib/tmac.s"
      6 # define PYMACS "/usr/lib/tmac.m"
      7 
      8 
      9 # define ever (;;)
     10 
     11 void
     12 main(int argc, char *argv[])
     13 {
     14 	exits(tbl(argc, argv)? "error" : 0);
     15 }
     16 
     17 
     18 int
     19 tbl(int argc, char *argv[])
     20 {
     21 	char	line[5120];
     22 	/*int x;*/
     23 	/*x=malloc((char *)0);	uncomment when allocation breaks*/
     24 	Binit(&tabout, 1, OWRITE);
     25 	setinp(argc, argv);
     26 	while (gets1(line, sizeof(line))) {
     27 		Bprint(&tabout, "%s\n", line);
     28 		if (prefix(".TS", line))
     29 			tableput();
     30 	}
     31 	Bterm(tabin);
     32 	return(0);
     33 }
     34 
     35 
     36 int	sargc;
     37 char	**sargv;
     38 
     39 void
     40 setinp(int argc, char **argv)
     41 {
     42 	sargc = argc;
     43 	sargv = argv;
     44 	sargc--;
     45 	sargv++;
     46 	if (sargc > 0)
     47 		swapin();
     48 	else {
     49 		tabin = (Biobuf*)getcore(sizeof(Biobuf), 1);
     50 		Binit(tabin, 0, OREAD);
     51 	}
     52 }
     53 
     54 
     55 int
     56 swapin(void)
     57 {
     58 	char	*name;
     59 	while (sargc > 0 && **sargv == '-') {
     60 		if (match("-ms", *sargv)) {
     61 			*sargv = MACROS;
     62 			break;
     63 		}
     64 		if (match("-mm", *sargv)) {
     65 			*sargv = PYMACS;
     66 			break;
     67 		}
     68 		if (match("-TX", *sargv))
     69 			pr1403 = 1;
     70 		if (match("-", *sargv))
     71 			break;
     72 		sargc--;
     73 		sargv++;
     74 	}
     75 	if (sargc <= 0)
     76 		return(0);
     77 	/* file closing is done by GCOS troff preprocessor */
     78 	if(tabin)
     79 		Bterm(tabin);
     80 	ifile = *sargv;
     81 	name = ifile;
     82 	if (match(ifile, "-")) {
     83 		tabin = (Biobuf*)getcore(sizeof(Biobuf), 1);
     84 		Binit(tabin, 0, OREAD);
     85 	} else
     86 		tabin = Bopen(ifile, OREAD);
     87 	iline = 1;
     88 	Bprint(&tabout, ".ds f. %s\n", ifile);
     89 	Bprint(&tabout, ".lf %d %s\n", iline, name);
     90 	if (tabin == 0)
     91 		error("Can't open file");
     92 	sargc--;
     93 	sargv++;
     94 	return(1);
     95 }