1 #ifndef SUBSTDIO_H 2 #define SUBSTDIO_H 3 4 typedef struct substdio { 5 char *x; 6 int p; 7 int n; 8 int fd; 9 int (*op)(); 10 } substdio; 11 12 #define SUBSTDIO_FDBUF(op,fd,buf,len) { (buf), 0, (len), (fd), (op) } 13 14 extern void substdio_fdbuf(); 15 16 extern int substdio_flush(); 17 extern int substdio_put(); 18 extern int substdio_bput(); 19 extern int substdio_putflush(); 20 extern int substdio_puts(); 21 extern int substdio_bputs(); 22 extern int substdio_putsflush(); 23 24 extern int substdio_get(); 25 extern int substdio_bget(); 26 extern int substdio_feed(); 27 28 extern char *substdio_peek(); 29 extern void substdio_seek(); 30 31 #define substdio_fileno(s) ((s)->fd) 32 33 #define SUBSTDIO_INSIZE 8192 34 #define SUBSTDIO_OUTSIZE 8192 35 36 #define substdio_PEEK(s) ( (s)->x + (s)->n ) 37 #define substdio_SEEK(s,len) ( ( (s)->p -= (len) ) , ( (s)->n += (len) ) ) 38 39 #define substdio_BPUTC(s,c) \ 40 ( ((s)->n != (s)->p) \ 41 ? ( (s)->x[(s)->p++] = (c), 0 ) \ 42 : substdio_bput((s),&(c),1) \ 43 ) 44 45 extern int substdio_copy(); 46 47 #endif 48