|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: */ ! 6: ! 7: #ifndef lint ! 8: char copyright[] = ! 9: "@(#) Copyright (c) 1980 Regents of the University of California.\n\ ! 10: All rights reserved.\n"; ! 11: #endif not lint ! 12: ! 13: #ifndef lint ! 14: static char sccsid[] = "@(#)colrm.c 5.1 (Berkeley) 5/31/85"; ! 15: #endif not lint ! 16: ! 17: #include <stdio.h> ! 18: /* ! 19: COLRM removes unwanted columns from a file ! 20: Jeff Schriebman UC Berkeley 11-74 ! 21: */ ! 22: ! 23: ! 24: main(argc,argv) ! 25: char **argv; ! 26: { ! 27: register c, ct, first, last; ! 28: ! 29: first = 0; ! 30: last = 0; ! 31: if (argc > 1) ! 32: first = getn(*++argv); ! 33: if (argc > 2) ! 34: last = getn(*++argv); ! 35: ! 36: start: ! 37: ct = 0; ! 38: loop1: ! 39: c = getc(stdin); ! 40: if (feof(stdin)) ! 41: goto fin; ! 42: if (c == '\t') ! 43: ct = (ct + 8) & ~7; ! 44: else if (c == '\b') ! 45: ct = ct ? ct - 1 : 0; ! 46: else ! 47: ct++; ! 48: if (c == '\n') { ! 49: putc(c, stdout); ! 50: goto start; ! 51: } ! 52: if (!first || ct < first) { ! 53: putc(c, stdout); ! 54: goto loop1; ! 55: } ! 56: ! 57: /* Loop getting rid of characters */ ! 58: while (!last || ct < last) { ! 59: c = getc(stdin); ! 60: if (feof(stdin)) ! 61: goto fin; ! 62: if (c == '\n') { ! 63: putc(c, stdout); ! 64: goto start; ! 65: } ! 66: if (c == '\t') ! 67: ct = (ct + 8) & ~7; ! 68: else if (c == '\b') ! 69: ct = ct ? ct - 1 : 0; ! 70: else ! 71: ct++; ! 72: } ! 73: ! 74: /* Output last of the line */ ! 75: for (;;) { ! 76: c = getc(stdin); ! 77: if (feof(stdin)) ! 78: break; ! 79: putc(c, stdout); ! 80: if (c == '\n') ! 81: goto start; ! 82: } ! 83: fin: ! 84: fflush(stdout); ! 85: } ! 86: ! 87: getn(ap) ! 88: char *ap; ! 89: { ! 90: register int n,c; ! 91: register char *p; ! 92: ! 93: p = ap; ! 94: n = 0; ! 95: while ((c = *p++) >= '0' && c <= '9') ! 96: n = n*10 + c - '0'; ! 97: return(n); ! 98: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.