|
|
1.1 ! root 1: #include <stdio.h> ! 2: #define STDIN (char *)0 ! 3: int col=0; ! 4: int lastc=0; ! 5: int nprintfiles=0; ! 6: int sflag=0; ! 7: int tflag=0; ! 8: main(argc, argv) ! 9: char *argv[]; ! 10: { ! 11: while(argc > 1) { ! 12: --argc; argv++; ! 13: if(argv[0][0] == '-'){ ! 14: switch(argv[0][1]){ ! 15: case 's': ! 16: sflag++; ! 17: break; ! 18: case 't': ! 19: tflag++; ! 20: break; ! 21: } ! 22: }else{ ! 23: printfile(argv[0]); ! 24: nprintfiles++; ! 25: } ! 26: } ! 27: if(nprintfiles == 0) ! 28: printfile(STDIN); ! 29: } ! 30: printfile(s) ! 31: register char *s; ! 32: { ! 33: register c; ! 34: register FILE *f=s? fopen(s, "r"): stdin; ! 35: if(f == NULL){ ! 36: perror(s); ! 37: return; ! 38: } ! 39: while((c=getc(f)) != EOF) ! 40: if(sflag) ! 41: sput(c); ! 42: else ! 43: put(c); ! 44: fclose(f); ! 45: } ! 46: sput(c) ! 47: register c; ! 48: { ! 49: if((c>=' ' && c<='~') || c=='\t' || c=='\n') ! 50: putchar(c); ! 51: } ! 52: put(c) ! 53: register c; ! 54: { ! 55: register inc=c; ! 56: if (c=='\n') { ! 57: if(lastc == ' ') { ! 58: putchar('\\'); ! 59: putchar('n'); ! 60: } ! 61: } else { ! 62: if (col >= (72-4-2)) { ! 63: putchar('\\'); ! 64: putchar('\n'); ! 65: putchar('\t'); ! 66: col = 8; ! 67: } ! 68: if(tflag && c=='\t') ! 69: col |= 7; ! 70: else if (c=='\b' || c=='\\' || c=='\t') { ! 71: putchar('\\'); ! 72: c = c=='\b'? 'b' : c=='\t'? 't' : '\\'; ! 73: col++; ! 74: } else if ((c&0200) || c<' ' || c=='\177') { ! 75: putchar('\\'); ! 76: putchar(((c>>6)&03)+'0'); ! 77: putchar(((c>>3)&07)+'0'); ! 78: c = ( c &07)+'0'; ! 79: col += 3; ! 80: } ! 81: col++; ! 82: } ! 83: putchar(c); ! 84: if(c == '\n') ! 85: col=0; ! 86: lastc=inc; ! 87: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.