V10/libc/fio/fioinit.c
#define FIO_IMP
#include "fio.h"
#include <libc.h>
static Fdie()
{
Fexit(0);
}
void
Finit(fd, buf)
char *buf;
{
register Fbuffer *f;
static setfioexit = 1;
if(setfioexit){
setfioexit = 0;
atexit(Fdie);
}
fd &= 0x7f;
if(buf){
Ffb[fd] = (Fbuffer *)buf;
Ffb[fd]->flags = 0;
} else if(!Ffb[fd]){
Ffb[fd] = (Fbuffer *)FIOMALLOC((COUNT)sizeof(Fbuffer));
Ffb[fd]->flags = FIO_MALLOCED;
}
f = Ffb[fd];
FIORESET(f);
f->offset = SEEK(fd, 0L, 1);
if(f->offset < 0)
f->offset = 0; /* file not been written yet */
}
#ifdef GNOT
#define NOFILE 128
#endif
#ifndef GNOT
#include <sys/param.h>
#endif
Fbuffer *Ffb[NOFILE];
Fexit(type)
{
register n;
for(n = 0; n < NOFILE; n++)
if(Ffb[n])
if(type == 0)
Fflush(n);
else
Fclose(n);
}