Annotation of researchv9/libc/gen/iread.c, revision 1.1

1.1     ! root        1: /*
        !             2:  *     iread - insistent read.  Same usage as read, but will always return
        !             3:  *     either the exact number of bytes requested, 0, or -1, unless a call
        !             4:  *     to read gets some data and a subsequent call returns 0.
        !             5:  */
        !             6: int
        !             7: iread (fd, buf, n)
        !             8:        int fd, n;
        !             9:        register char *buf;
        !            10: {
        !            11:        register int r, offset;
        !            12: 
        !            13:        r = read (fd, buf, n);
        !            14:        if (r <= 0)
        !            15:                return r;
        !            16:        offset = 0;
        !            17:        while (r != n - offset && r > 0) {
        !            18:                offset += r;
        !            19:                r = read (fd, buf + offset, n - offset);
        !            20:        }
        !            21:        return r < 0? r: r + offset;
        !            22: }

unix.superglobalmegacorp.com

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