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