Annotation of researchv10no/cmd/sort/cgets.c, revision 1.1.1.1

1.1       root        1: /* Copyright AT&T Bell Laboratories, 1993 */
                      2: #include       <stdio.h>
                      3: 
                      4: /* same as fgets, but returns a char count instead of first arg.
                      5: *  robust against null bytes in input */
                      6: 
                      7: int
                      8: cgets(char *ptr, int n, FILE *iop)
                      9: {
                     10:        int l;
                     11:        char *s = ptr;
                     12:        unsigned char *t;
                     13:        while(--n > 0) {
                     14:                l = iop->_cnt;
                     15:                if(l > 0) {
                     16:                        if(l > n) l = n;
                     17:                        t = iop->_ptr;
                     18:                        while(--l >= 0 && (*s++ = *t++) != '\n')
                     19:                                continue;
                     20:                        l = t - iop->_ptr;
                     21:                        iop->_ptr = t;
                     22:                        iop->_cnt -= l;
                     23:                        if(t[-1] == '\n' || (n -= l) <= 0)
                     24:                                break;
                     25:                }
                     26:                l = getc(iop);
                     27:                if(l == EOF)
                     28:                        break;
                     29:                *s++ = l;
                     30:                if(l == '\n')
                     31:                        break;
                     32:        }
                     33:        *s = 0;
                     34:        return s - ptr;
                     35: }

unix.superglobalmegacorp.com

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