Annotation of researchv10no/cmd/vis.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.