Pristine Ack-5.5
[Ack-5.5.git] / lang / fortran / lib / libI77 / fio.h
1 #include "stdio.h"
2 #ifndef NULL
3 /* ANSI C */
4 #include "stddef.h"
5 #endif
6
7 #ifndef SEEK_SET
8 #define SEEK_SET 0
9 #define SEEK_CUR 1
10 #define SEEK_END 2
11 #endif
12
13 #ifdef MSDOS
14 #ifndef NON_UNIX_STDIO
15 #define NON_UNIX_STDIO
16 #endif
17 #endif
18
19 /*units*/
20 typedef struct
21 {       FILE *ufd;      /*0=unconnected*/
22         char *ufnm;
23 #ifndef MSDOS
24         long uinode;
25         int udev;
26 #endif
27         int url;        /*0=sequential*/
28         flag useek;     /*true=can backspace, use dir, ...*/
29         flag ufmt;
30         flag uprnt;
31         flag ublnk;
32         flag uend;
33         flag uwrt;      /*last io was write*/
34         flag uscrtch;
35 } unit;
36
37 extern int errno;
38 extern flag init;
39 extern cilist *elist;   /*active external io list*/
40 extern flag reading,external,sequential,formatted;
41 extern int (*getn)(),(*putn)(); /*for formatted io*/
42 extern long inode();
43 extern FILE *cf;        /*current file*/
44 extern unit *curunit;   /*current unit*/
45 extern unit units[];
46 extern VOID sig_die();
47 #define err(f,m,s) {if(f) errno= m; else fatal(m,s); return(m);}
48
49 /*Table sizes*/
50 #define MXUNIT 100
51
52 extern int recpos;      /*position in current record*/
53 extern int cursor;      /* offset to move to */
54 extern int hiwater;     /* so TL doesn't confuse us */
55
56 #define WRITE   1
57 #define READ    2
58 #define SEQ     3
59 #define DIR     4
60 #define FMT     5
61 #define UNF     6
62 #define EXT     7
63 #define INT     8
64
65 #define buf_end(x) (x->_flag & _IONBF ? x->_ptr : x->_base + BUFSIZ)