|
|
1.1 root 1: #ifndef SRBHDR
2: #include "defs.h"
3: #endif
4:
5:
6: STRUCT fileblk FILEBLK;
7: STRUCT filehdr FILEHDR;
8: STRUCT fileblk *FILE;
9: #define NIL 0
10:
11: /* the following nonsense is required
12: * because casts turn an Lvalue
13: * into an Rvalue so two cheats
14: * are necessary, one for each context.
15: */
16: union { int _cheat;};
17: #define Lcheat(a) ((a)._cheat)
18: #define Rcheat(a) ((int)(a))
19:
20: #define BUFSIZ 64
21: struct fileblk {
22: UFD fdes;
23: POS flin;
24: BOOL feof;
25: CHAR fsiz;
26: STRING fnxt;
27: STRING fend;
28: FILE fstak;
29: CHAR fbuf[BUFSIZ];
30: };
31:
32: /* for files not used with file descriptors */
33: struct filehdr {
34: UFD fdes;
35: POS flin;
36: BOOL feof;
37: CHAR fsiz;
38: STRING fnxt;
39: STRING fend;
40: FILE fstak;
41: CHAR _fbuf[1];
42: };
43:
44: #define EOF (-1)
45: INT eof;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.