#include #include #define ISKB 1 #define ISBAD 1 #ifdef ISKB #include #endif char *_prmpt = "-i infile -o outfile -l linenumber :"; char ch = 0; char *inp = 0; FILE inf = 0; char *otp = 0; FILE otf = 0; int line = 1; int page = 1; main(ac,av) int ac; char *av[]; { inp = 0; #ifdef ISBAD otp = "LQ:"; #else otp = "KB:"; #endif if (getflags(&ac,&av,"l#,L#,i*,I*,o*,O*",&line,&line,&inp,&inp,&otp,&otp)) { errfmt("Invalid flags\n"); return(RETRY); } if ((!inp) && (ac==1)) { inp = *av; } else if ((!ac) && (!inp)) { errfmt("Specify input file\n"); return(RETRY); } else if (ac>1) { errfmt("Too many input files\n"); return(RETRY); } if ( (inf=open(inp,READ,1)) < 0 ) { errfmt("Could not open input file '%p'\n",inp); return(RETRY); } #ifdef ISKB if ( (otf=open(otp,WRITE,1)) < 0 ) { errfmt("Could not open output file '%p'\n",otp); return(RETRY); } #ifndef ISBAD if ( sdinit(otf) < 0 ) { errfmt("Could not initialize '%p'\n",otp); return(RETRY); } #endif #endif sdwrite(otf,"\r",1); tprompt(); while(read(inf,&ch,1)==1) { if (ch!='\f') sdwrite(otf,&ch,1); else tprompt(); } #ifdef ISKB close(otf); #endif errfmt("All done\n"); } tprompt() { char ch, cc; int i, cont; errfmt("\035S"); errfmt("Insert next sheet.\007\n"); errfmt("P - print next page\nU/D - up/down\nL - down 30 lines\nS - skip next page\n"); cont = YES; while (cont) { ch = grab(); ch = tolower(ch); switch (ch) { case 'p': errfmt("printing page %i\n",page++); cont = NO; sdwrite(otf,"\r",1); break; case 'd': sdwrite(otf,"~G",2); break; case 'u': sdwrite(otf,"~7",2); break; case 'l': sdwrite(otf,"\r",1); for (i=0 ; i<30 ; i++) sdwrite(otf," ",1); for (i=0 ; i<56 ; i++) sdwrite(otf,"~G",2); break; case 's': errfmt("Skipping page %i\n",page++); while(read(inf,&cc,1)==1) if (cc=='\f') break; break; case '\r': ch = grab(); sdwrite(otf,"\r",1); break; default: errfmt("\007"); } } sdwrite(otf,'\r',1); errfmt("\035T"); /* undo single char activation */ } #ifndef ISKB sdwrite(otf,bf,ln) int otf; char *bf; int ln; { for (; ln>0 ; ln--) typech(line,*(bf++)); } typech(ln,ch) int ln; char ch; { char cc[2] ; cc[0] = ch; cc[1] = NULL; emt375(0127<<8,ln,cc); } #endif