|
|
1.1 ! root 1: #define FIO_IMP ! 2: #include "fio.h" ! 3: #include <libc.h> ! 4: ! 5: Fwrite(fd, addr, nbytes) ! 6: register char *addr; ! 7: register long nbytes; ! 8: { ! 9: register Fbuffer *f; ! 10: register COUNT n; ! 11: long nnbytes = nbytes; ! 12: ! 13: FIOSET(f, fd); ! 14: f->end = 0; /* mark as writing */ ! 15: n = &f->buf[FIOBSIZE] - f->next; ! 16: if(nbytes < n) n = nbytes; ! 17: memcpy(f->next, addr, n); ! 18: f->next += n; ! 19: nbytes -= n; ! 20: addr += n; ! 21: if(nbytes){ ! 22: F_flush(f, fd); ! 23: while(nbytes >= FIOBSIZE){ ! 24: if(write(fd, addr, (COUNT)FIOBSIZE) != FIOBSIZE) ! 25: return(-1L); ! 26: addr += FIOBSIZE; ! 27: nbytes -= FIOBSIZE; ! 28: } ! 29: memcpy(f->next = f->buf, addr, (COUNT)(n = nbytes)); ! 30: f->next += n; ! 31: } ! 32: return(nnbytes); ! 33: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.