BSD 4 release
[unix-history] / usr / src / cmd / colrm.c
CommitLineData
31cef89c 1static char *Sccsid = "@(#)colrm.c 4.2 (Berkeley) 10/9/80";
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:
30 if ((c=getc(stdin))<0)
31 goto fin;
83ded028
BJ
32 if (c == '\t')
33 ct = (ct + 8) &~ 7;
34 else if (c == '\b')
35 ct = ct ? ct - 1 : 0;
36 else
37 ct++;
b60303bc
BJ
38 if (c=='\n') {
39 putc(c,stdout);
40 goto start;
41 }
42 if (ct<first) {
43 putc(c,stdout);
44 goto loop1;
45 }
46
47/* Loop getting rid of characters */
48 for (;ct<last;ct++) {
49 if ((c=getc(stdin))<0)
50 goto fin;
51 if (c=='\n') {
52 putc(c,stdout);
53 goto start;
54 }
55 }
56
57/* Output last of the line */
58 while ((c=getc(stdin))>0) {
59 putc(c,stdout);
60 if (c=='\n')
61 goto start;
62 }
63fin:
64 fflush(stdout);
65}
66
67getn(ap)
68char *ap;
69{
70 register int n,c;
71 register char *p;
72
73 p = ap;
74 n = 0;
75 while ((c = *p++) >= '0' && c <= '9')
76 n = n*10 + c - '0';
77 return(n);
78}