- f->cookie = c = (void *)(f+1);
- f->fd = -1;
- f->lbf = EOF;
- f->buf = (unsigned char *)(c+1) + UNGET;
- f->buf_size = BUFSIZ;
- if (!buf) buf = f->buf + BUFSIZ;
+ memset(&f->f, 0, sizeof f->f);
+ f->f.cookie = &f->c;
+ f->f.fd = -1;
+ f->f.lbf = EOF;
+ f->f.buf = f->buf + UNGET;
+ f->f.buf_size = sizeof f->buf - UNGET;
+ if (!buf) {
+ buf = f->buf2;;
+ memset(buf, 0, size);
+ }