BSD 1 development
authorJeff Schriebman <jeff@ucbvax.Berkeley.EDU>
Sun, 27 Nov 1977 02:13:58 +0000 (18:13 -0800)
committerJeff Schriebman <jeff@ucbvax.Berkeley.EDU>
Sun, 27 Nov 1977 02:13:58 +0000 (18:13 -0800)
Work on file s6/colrm.c

Synthesized-from: 1bsd

s6/colrm.c [new file with mode: 0644]

diff --git a/s6/colrm.c b/s6/colrm.c
new file mode 100644 (file)
index 0000000..0754555
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+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);
+}