Annotation of 42BSD/usr.bin/uucp/cfgets.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char sccsid[] = "@(#)cfgets.c   5.1 (Berkeley) 7/2/83";
        !             3: #endif
        !             4: 
        !             5: /*
        !             6:  * get nonblank, non-comment, (possibly continued) line. Alan S. Watt 
        !             7:  */
        !             8: 
        !             9: #include <stdio.h>
        !            10: #define COMMENT                '#'
        !            11: #define CONTINUE       '\\'
        !            12: #define EOLN           '\n'
        !            13: #define EOS            '\0'
        !            14: 
        !            15: char *
        !            16: cfgets (buf, siz, fil)
        !            17: register char *buf;
        !            18: int siz;
        !            19: FILE *fil;
        !            20: {
        !            21:        register char *s;
        !            22:        register i, c, len;
        !            23:        char *fgets();
        !            24: 
        !            25:        for (i=0,s=buf; i = (fgets (s, siz-i, fil) != NULL); i = s - buf) {
        !            26: 
        !            27:                /* get last character of line */
        !            28:                c = s[len = (strlen (s) - 1)];
        !            29: 
        !            30:                /* skip comments; make sure end of comment line seen */
        !            31:                if (*s == COMMENT) {
        !            32:                        while (c != EOLN && c != EOF)
        !            33:                                c = fgetc (fil);
        !            34:                        *s = EOS;
        !            35:                }
        !            36: 
        !            37:                /* skip blank lines */
        !            38:                else if (*s != EOLN) {
        !            39:                        s += len;
        !            40: 
        !            41:                        /* continue lines ending with CONTINUE */
        !            42:                        if (c != EOLN || *--s != CONTINUE)
        !            43:                                break;
        !            44:                }
        !            45:        }
        !            46:        
        !            47:        return (i ? buf : NULL);
        !            48: }
        !            49: 
        !            50: #ifdef TEST
        !            51: main()
        !            52: {
        !            53:        char buf[512];
        !            54: 
        !            55:        while (cfgets (buf, sizeof buf, stdin))
        !            56:                fputs (buf, stdout);
        !            57: }
        !            58: #endif TEST

unix.superglobalmegacorp.com

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