Annotation of coherent/g/usr/lib/misc/splitter.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Split output lines with \ along whitespace boundarys.
        !             3:  * Adds a \n at end of line if none exists.
        !             4:  */
        !             5: #include <misc.h>
        !             6: 
        !             7: void
        !             8: splitter(ofp, line, limit)
        !             9: FILE *ofp;
        !            10: char *line;
        !            11: {
        !            12:        int     pos,    /* display location on line */
        !            13:                i,      /* data location on line */
        !            14:                j,      /* location of last white space on 0 */
        !            15:                c, w;   /* current char and work */
        !            16: 
        !            17:        for (pos = j = i = 0; c = line[i]; i++) {
        !            18:                if ((pos >= limit) && j) { /* split condition */
        !            19:                        w = line[j];
        !            20:                        line[j] = '\0';
        !            21:                        fprintf(ofp, "%s \\\n", line);
        !            22:                        line += j;
        !            23:                        line[pos = i = j = 0] = w;
        !            24:                }
        !            25:                switch (c) {
        !            26:                case '\n':
        !            27:                        j = pos = 0;
        !            28:                        break;
        !            29:                case '\t':
        !            30:                        pos |= 7;
        !            31:                case ' ':
        !            32:                        j = i;
        !            33:                default:
        !            34:                        pos++;
        !            35:                }
        !            36:        }
        !            37:        fprintf(ofp, "%s", line);
        !            38:        if(pos)
        !            39:                fputc('\n', ofp);
        !            40: }
        !            41: #ifdef TEST
        !            42: main()
        !            43: {
        !            44:        char buf[100];
        !            45: 
        !            46:        while (NULL != ask(buf, "string"))
        !            47:                splitter(stdout, buf, 20);
        !            48: }
        !            49: #endif

unix.superglobalmegacorp.com

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