Annotation of researchv10dc/libc/fio/fiowrite.c, revision 1.1

1.1     ! root        1: #define        FIO_IMP
        !             2: #include       "fio.h"
        !             3: #include       <libc.h>
        !             4: 
        !             5: long
        !             6: Fwrite(fd, addr, nbytes)
        !             7:        register char *addr;
        !             8:        register long nbytes;
        !             9: {
        !            10:        register Fbuffer *f;
        !            11:        register COUNT n;
        !            12:        long nnbytes = nbytes;
        !            13: 
        !            14:        FIOSET(f, fd);
        !            15:        f->flags |= FIO_WRITING;
        !            16:        n = &f->buf[FIOBSIZE] - f->next;
        !            17:        if(nbytes < n) n = nbytes;
        !            18:        memcpy(f->next, addr, n);
        !            19:        f->end = (f->next += n);
        !            20:        f->offset += n;
        !            21:        nbytes -= n;
        !            22:        addr += n;
        !            23:        if(nbytes){
        !            24:                if(F_flush(f, fd))
        !            25:                        return(-1L);
        !            26:                while(nbytes >= FIOBSIZE){
        !            27:                        if(write(fd, addr, (COUNT)FIOBSIZE) != FIOBSIZE)
        !            28:                                return(-1L);
        !            29:                        addr += FIOBSIZE;
        !            30:                        nbytes -= FIOBSIZE;
        !            31:                        f->offset += FIOBSIZE;
        !            32:                }
        !            33:                memcpy(f->buf, addr, (COUNT)(n = nbytes));
        !            34:                f->end = f->next = f->buf+n;
        !            35:                f->offset += n;
        !            36:                f->flags |= FIO_WRITING;
        !            37:        }
        !            38:        return(nnbytes);
        !            39: }

unix.superglobalmegacorp.com

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