Merge from vendor branch GCC:
[dragonfly.git] / contrib / libf2c / libI77 / fio.h
1 #include <stdio.h>
2 #include <errno.h>
3 #ifndef NULL
4 /* ANSI C */
5 #include <stddef.h>
6 #endif
7 #ifdef STDC_HEADERS
8 #include <string.h>
9 #endif
10
11 #ifndef SEEK_SET
12 #define SEEK_SET 0
13 #define SEEK_CUR 1
14 #define SEEK_END 2
15 #endif
16
17 #if defined (MSDOS) && !defined (GO32)
18 #ifndef NON_UNIX_STDIO
19 #define NON_UNIX_STDIO
20 #endif
21 #endif
22
23 #ifdef UIOLEN_int
24 typedef int uiolen;
25 #else
26 typedef long uiolen;
27 #endif
28
29 /*units*/
30 typedef struct
31 {       FILE *ufd;      /*0=unconnected*/
32         char *ufnm;
33 #if !(defined (MSDOS) && !defined (GO32))
34         long uinode;
35         int udev;
36 #endif
37         int url;        /*0=sequential*/
38         flag useek;     /*true=can backspace, use dir, ...*/
39         flag ufmt;
40         flag urw;       /* (1 for can read) | (2 for can write) */
41         flag ublnk;
42         flag uend;
43         flag uwrt;      /*last io was write*/
44         flag uscrtch;
45 } unit;
46
47 extern int f__init;
48 extern cilist *f__elist;        /*active external io list*/
49 extern flag f__reading,f__external,f__sequential,f__formatted;
50 #undef Void
51 #ifdef KR_headers
52 #define Void /*void*/
53 extern int (*f__getn)();        /* for formatted input */
54 extern void (*f__putn)();       /* for formatted output */
55 extern void x_putc();
56 extern long f__inode();
57 extern VOID sig_die();
58 extern int (*f__donewrec)(), t_putc(), x_wSL();
59 extern int c_sfe(), err__fl(), xrd_SL(), f__putbuf();
60 #else
61 #define Void void
62 #ifdef __cplusplus
63 extern "C" {
64 #endif
65 extern int (*f__getn)(void);    /* for formatted input */
66 extern void (*f__putn)(int);    /* for formatted output */
67 extern void x_putc(int);
68 extern long f__inode(char*,int*);
69 extern void sig_die(char*,int);
70 extern void f__fatal(int,char*);
71 extern int t_runc(alist*);
72 extern int f__nowreading(unit*), f__nowwriting(unit*);
73 extern int fk_open(int,int,ftnint);
74 extern int en_fio(void);
75 extern void f_init(void);
76 extern int (*f__donewrec)(void), t_putc(int), x_wSL(void);
77 extern void b_char(char*,char*,ftnlen), g_char(char*,ftnlen,char*);
78 extern int c_sfe(cilist*), z_rnew(void);
79 extern int isatty(int);
80 extern int err__fl(int,int,char*);
81 extern int xrd_SL(void);
82 extern int f__putbuf(int);
83 #ifdef __cplusplus
84         }
85 #endif
86 #endif
87 extern int (*f__doend)(Void);
88 extern FILE *f__cf;     /*current file*/
89 extern unit *f__curunit;        /*current unit*/
90 extern unit f__units[];
91 #define err(f,m,s) do {if(f) {f__init &= ~2; errno= m;} else f__fatal(m,s); return(m);} while(0)
92 #define errfl(f,m,s) do {return err__fl((int)f,m,s);} while(0)
93
94 /*Table sizes*/
95 #define MXUNIT 100
96
97 extern int f__recpos;   /*position in current record*/
98 extern int f__cursor;   /* offset to move to */
99 extern int f__hiwater;  /* so TL doesn't confuse us */
100
101 #define WRITE   1
102 #define READ    2
103 #define SEQ     3
104 #define DIR     4
105 #define FMT     5
106 #define UNF     6
107 #define EXT     7
108 #define INT     8
109
110 #define buf_end(x) (x->_flag & _IONBF ? x->_ptr : x->_base + BUFSIZ)