|
|
1.1 ! root 1: #define FIO_IMP ! 2: #include "fio.h" ! 3: #include <libc.h> ! 4: ! 5: void ! 6: Finit(fd, buf) ! 7: char *buf; ! 8: { ! 9: register Fbuffer *f; ! 10: static setfioexit = 1; ! 11: extern Fexit(); ! 12: ! 13: if(setfioexit){ ! 14: setfioexit = 0; ! 15: onexit(Fexit); ! 16: } ! 17: fd &= 0x7f; ! 18: if(buf) ! 19: Ffb[fd] = (Fbuffer *)buf; ! 20: else if(!Ffb[fd]) ! 21: Ffb[fd] = (Fbuffer *)FIOMALLOC((COUNT)sizeof(Fbuffer)); ! 22: f = Ffb[fd]; ! 23: FIORESET(f); ! 24: f->offset = SEEK(fd, 0L, 1); ! 25: } ! 26: ! 27: #include <sys/param.h> ! 28: ! 29: Fbuffer *Ffb[NOFILE]; ! 30: ! 31: Fexit() ! 32: { ! 33: register n; ! 34: ! 35: for(n = 0; n < NOFILE; n++) ! 36: if(Ffb[n] && (Ffb[n]->end == 0)) ! 37: F_flush(Ffb[n], n); ! 38: } ! 39: ! 40: F_flush(f, fd) ! 41: register Fbuffer *f; ! 42: { ! 43: register COUNT n; ! 44: ! 45: f->end = 0; /* mark as writing */ ! 46: if(f->next != f->buf){ ! 47: n = f->next - f->buf; ! 48: if(write(fd, f->buf, n) != n) ! 49: return(1); ! 50: f->next = f->buf; ! 51: } ! 52: return(0); ! 53: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.