BSD 4_1c_2 release
[unix-history] / usr / src / ucb / colrm.c
CommitLineData
e804469b 1static char *Sccsid = "@(#)colrm.c 4.3 (Berkeley) 2/13/82";
b60303bc
BJ
2#include <stdio.h>
3/*
4COLRM removes unwanted columns from a file
5 Jeff Schriebman UC Berkeley 11-74
6*/
7
8
9main(argc,argv)
10char **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
27start:
28 ct = 0;
29loop1:
dbd0bde5
BJ
30 c = getc(stdin);
31 if (feof(stdin))
b60303bc 32 goto fin;
83ded028
BJ
33 if (c == '\t')
34 ct = (ct + 8) &~ 7;
35 else if (c == '\b')
36 ct = ct ? ct - 1 : 0;
37 else
38 ct++;
b60303bc
BJ
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++) {
dbd0bde5
BJ
50 c = getc(stdin);
51 if (feof(stdin))
b60303bc
BJ
52 goto fin;
53 if (c=='\n') {
54 putc(c,stdout);
55 goto start;
56 }
57 }
58
59/* Output last of the line */
dbd0bde5
BJ
60 for (;;) {
61 c = getc(stdin);
62 if (feof(stdin))
63 break;
b60303bc
BJ
64 putc(c,stdout);
65 if (c=='\n')
66 goto start;
67 }
68fin:
69 fflush(stdout);
70}
71
72getn(ap)
73char *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}