1 static char *Sccsid = "@(#)colrm.c 4.3 (Berkeley) 02/13/82"; 2 #include <stdio.h> 3 /* 4 COLRM removes unwanted columns from a file 5 Jeff Schriebman UC Berkeley 11-74 6 */ 7 8 9 main(argc,argv) 10 char **argv; 11 { 12 int first; 13 register ct,last; 14 register char c; 15 char buffer[BUFSIZ]; 16 17 setbuf(stdout, buffer); 18 first = 20000; 19 last = -1; 20 if (argc>1) { 21 first = getn(*++argv); 22 last = 20000; 23 } 24 if (argc>2) 25 last = getn(*++argv); 26 27 start: 28 ct = 0; 29 loop1: 30 c = getc(stdin); 31 if (feof(stdin)) 32 goto fin; 33 if (c == '\t') 34 ct = (ct + 8) &~ 7; 35 else if (c == '\b') 36 ct = ct ? ct - 1 : 0; 37 else 38 ct++; 39 if (c=='\n') { 40 putc(c,stdout); 41 goto start; 42 } 43 if (ct<first) { 44 putc(c,stdout); 45 goto loop1; 46 } 47 48 /* Loop getting rid of characters */ 49 for (;ct<last;ct++) { 50 c = getc(stdin); 51 if (feof(stdin)) 52 goto fin; 53 if (c=='\n') { 54 putc(c,stdout); 55 goto start; 56 } 57 } 58 59 /* Output last of the line */ 60 for (;;) { 61 c = getc(stdin); 62 if (feof(stdin)) 63 break; 64 putc(c,stdout); 65 if (c=='\n') 66 goto start; 67 } 68 fin: 69 fflush(stdout); 70 } 71 72 getn(ap) 73 char *ap; 74 { 75 register int n,c; 76 register char *p; 77 78 p = ap; 79 n = 0; 80 while ((c = *p++) >= '0' && c <= '9') 81 n = n*10 + c - '0'; 82 return(n); 83 } 84