13e12c5d1SDavid du Colombier #define EOF (-1) 23e12c5d1SDavid du Colombier #define NBUF 512 3276e7d6dSDavid du Colombier 43e12c5d1SDavid du Colombier struct io{ 53e12c5d1SDavid du Colombier int fd; 6276e7d6dSDavid du Colombier uchar *bufp, *ebuf, *strp; 7276e7d6dSDavid du Colombier uchar buf[NBUF]; 8*c6df1444SDavid du Colombier uchar output; /* flag */ 93e12c5d1SDavid du Colombier }; 103e12c5d1SDavid du Colombier io *err; 11276e7d6dSDavid du Colombier 123e12c5d1SDavid du Colombier io *openfd(int), *openstr(void), *opencore(char *, int); 133e12c5d1SDavid du Colombier int emptybuf(io*); 147dd7cddfSDavid du Colombier void pchr(io*, int); 157dd7cddfSDavid du Colombier int rchr(io*); 1685497287SDavid du Colombier int rutf(io*, char*, Rune*); 17*c6df1444SDavid du Colombier void rewind(io*); 183e12c5d1SDavid du Colombier void closeio(io*); 193e12c5d1SDavid du Colombier void flush(io*); 203e12c5d1SDavid du Colombier int fullbuf(io*, int); 2173e742d7SDavid du Colombier void pdec(io*, int); 2273e742d7SDavid du Colombier void poct(io*, unsigned); 2373e742d7SDavid du Colombier void pptr(io*, void*); 243e12c5d1SDavid du Colombier void pquo(io*, char*); 253e12c5d1SDavid du Colombier void pwrd(io*, char*); 263e12c5d1SDavid du Colombier void pstr(io*, char*); 273e12c5d1SDavid du Colombier void pcmd(io*, tree*); 283e12c5d1SDavid du Colombier void pval(io*, word*); 293e12c5d1SDavid du Colombier void pfnc(io*, thread*); 303e12c5d1SDavid du Colombier void pfmt(io*, char*, ...); 31