Work on file s6/colrm.c
Synthesized-from: 1bsd
--- /dev/null
+/*
+COLRM removes unwanted columns from a file
+ Jeff Schriebman UC Berkeley 11-74
+*/
+
+struct buf {
+ int fildes;
+ int nleft;
+ char *nextp;
+ char buffer[512];
+} buff[2];
+
+main(argc,argv)
+char **argv;
+{
+ int first;
+ register ct,last;
+ register char c;
+ struct buf *ptrp,*ptrg;
+
+ ptrp = &buff[0];
+ ptrg = &buff[1];
+ ptrp->fildes = 1;
+ ptrg->fildes = 0;
+ ptrp->nleft = 0;
+ ptrg->nleft = 0;
+ ptrp->nextp = ptrp->buffer;
+ ptrg->nextp = ptrg->buffer;
+ first = 20000;
+ last = -1;
+ if (argc>1) {
+ first = getn(*++argv);
+ last = 20000;
+ }
+ if (argc>2)
+ last = getn(*++argv);
+
+start:
+ ct = 0;
+loop1:
+ if ((c=getc(ptrg))<0)
+ goto fin;
+ ct++;
+ if (c=='\n') {
+ putc(c,ptrp);
+ goto start;
+ }
+ if (ct<first) {
+ putc(c,ptrp);
+ goto loop1;
+ }
+
+/* Loop getting rid of characters */
+ for (;ct<last;ct++) {
+ if ((c=getc(ptrg))<0)
+ goto fin;
+ if (c=='\n') {
+ putc(c,ptrp);
+ goto start;
+ }
+ }
+
+/* Output last of the line */
+ while ((c=getc(ptrg))>0) {
+ putc(c,ptrp);
+ if (c=='\n')
+ goto start;
+ }
+fin:
+ fflush(ptrp);
+}
+
+getn(ap)
+char *ap;
+{
+ register int n,c;
+ register char *p;
+
+ p = ap;
+ n = 0;
+ while ((c = *p++) >= '0' && c <= '9')
+ n = n*10 + c - '0';
+ return(n);
+}