Annotation of coherent/b/kernel/tools/wrap.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * wrap.c - fold over lines > 80 characters to avoid truncation during printout
        !             3:  *
        !             4:  * usage:  wrap [-ttablen] [-wwraplen] < infile > outfile
        !             5:  *   tab length defaults to 8
        !             6:  *   wrap column defaults to 80
        !             7:  */
        !             8: #include <stdio.h>
        !             9: 
        !            10: #define WRAPLEN 80
        !            11: #define TABLEN 8
        !            12: 
        !            13: main(argc, argv)
        !            14: int argc;
        !            15: char * argv[];
        !            16: {
        !            17:        /*
        !            18:         * get tab length from command line or default to TABLEN
        !            19:         * get wrap column from command line or default to WRAPLEN
        !            20:         */
        !            21: 
        !            22:        int chars_this_line = 0;
        !            23:        int ch, wl = WRAPLEN, tl = TABLEN;
        !            24:        int argnum;
        !            25: 
        !            26:        for (argnum = 1; argnum < argc; argnum++) {
        !            27:                if (argv[argnum][0] == '-')
        !            28:                        switch (argv[argnum][1]) {
        !            29:                        case 't':
        !            30:                                tl = atoi(argv[argnum]+2);
        !            31:                                if (tl <= 0 || tl >= 256)
        !            32:                                        tl = TABLEN;
        !            33:                                break;
        !            34:                        case 'w':
        !            35:                                wl = atoi(argv[argnum]+2);
        !            36:                                if (wl <= 0 || wl >= 256)
        !            37:                                        wl = WRAPLEN;
        !            38:                                break;
        !            39:                        }
        !            40:        }
        !            41: 
        !            42:        /*
        !            43:         * while (not at end of stdin)
        !            44:         *   get next character
        !            45:         *   if it's newline
        !            46:         *     reset chars_this_line to zero
        !            47:         *   else if it's backspace
        !            48:         *     if chars_this_line is > 0
        !            49:         *       decrement chars_this_line
        !            50:         *   else if it's tab
        !            51:         *     insert the right number of spaces
        !            52:         *   else
        !            53:         *     increment chars_this_line
        !            54:         *     if chars_this_line > WRAPLEN
        !            55:         *       write newline to stdout
        !            56:         *       decrement chars_this_line by WRAPLEN
        !            57:         *   write character to stdout
        !            58:         */
        !            59:        while ((ch = getchar()) != EOF) {
        !            60:                if (ch == '\n') {
        !            61:                        chars_this_line = 0;
        !            62:                        putchar(ch);
        !            63:                } else if (ch == '\b') {
        !            64:                        if (chars_this_line)
        !            65:                                chars_this_line--;
        !            66:                        putchar(ch);
        !            67:                } else if (ch == '\t') {
        !            68:                        do {
        !            69:                                chars_this_line++;
        !            70:                                if (chars_this_line > wl) {
        !            71:                                        putchar('\n');
        !            72:                                        chars_this_line -= wl;
        !            73:                                }
        !            74:                                putchar(' ');
        !            75:                        } while (chars_this_line % tl);
        !            76:                } else {
        !            77:                        chars_this_line++;
        !            78:                        if (chars_this_line > wl) {
        !            79:                                putchar('\n');
        !            80:                                chars_this_line -= wl;
        !            81:                        }
        !            82:                        putchar(ch);
        !            83:                }
        !            84:        }
        !            85: }

unix.superglobalmegacorp.com

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