xref: /original-bsd/usr.bin/f77/pass1.vax/fio.h (revision 5be0f76f)
1*5be0f76fSbostic /*-
2*5be0f76fSbostic  * Copyright (c) 1980 The Regents of the University of California.
3*5be0f76fSbostic  * All rights reserved.
4f3c01ed2Smckusick  *
5*5be0f76fSbostic  * %sccs.include.proprietary.c%
6*5be0f76fSbostic  *
7*5be0f76fSbostic  *	@(#)fio.h	5.2 (Berkeley) 04/12/91
8f3c01ed2Smckusick  */
9f3c01ed2Smckusick 
10f3c01ed2Smckusick #include <stdio.h>
11f3c01ed2Smckusick typedef long ftnint;
12f3c01ed2Smckusick typedef ftnint flag;
13f3c01ed2Smckusick typedef long ftnlen;
14f3c01ed2Smckusick /*external read, write*/
15f3c01ed2Smckusick typedef struct
16f3c01ed2Smckusick {	flag cierr;
17f3c01ed2Smckusick 	ftnint ciunit;
18f3c01ed2Smckusick 	flag ciend;
19f3c01ed2Smckusick 	char *cifmt;
20f3c01ed2Smckusick 	ftnint cirec;
21f3c01ed2Smckusick } cilist;
22f3c01ed2Smckusick /*internal read, write*/
23f3c01ed2Smckusick typedef struct
24f3c01ed2Smckusick {	flag icierr;
25f3c01ed2Smckusick 	char *iciunit;
26f3c01ed2Smckusick 	flag iciend;
27f3c01ed2Smckusick 	char *icifmt;
28f3c01ed2Smckusick 	ftnint icirlen;
29f3c01ed2Smckusick 	ftnint icirnum;
30f3c01ed2Smckusick } icilist;
31f3c01ed2Smckusick /*open*/
32f3c01ed2Smckusick typedef struct
33f3c01ed2Smckusick {	flag oerr;
34f3c01ed2Smckusick 	ftnint ounit;
35f3c01ed2Smckusick 	char *ofnm;
36f3c01ed2Smckusick 	ftnlen ofnmlen;
37f3c01ed2Smckusick 	char *osta;
38f3c01ed2Smckusick 	char *oacc;
39f3c01ed2Smckusick 	char *ofm;
40f3c01ed2Smckusick 	ftnint orl;
41f3c01ed2Smckusick 	char *oblnk;
42f3c01ed2Smckusick } olist;
43f3c01ed2Smckusick /*close*/
44f3c01ed2Smckusick typedef struct
45f3c01ed2Smckusick {	flag cerr;
46f3c01ed2Smckusick 	ftnint cunit;
47f3c01ed2Smckusick 	char *csta;
48f3c01ed2Smckusick } cllist;
49f3c01ed2Smckusick /*rewind, backspace, endfile*/
50f3c01ed2Smckusick typedef struct
51f3c01ed2Smckusick {	flag aerr;
52f3c01ed2Smckusick 	ftnint aunit;
53f3c01ed2Smckusick } alist;
54f3c01ed2Smckusick /*units*/
55f3c01ed2Smckusick typedef struct
56f3c01ed2Smckusick {	FILE *ufd;	/*0=unconnected*/
57f3c01ed2Smckusick 	char *ufnm;
58f3c01ed2Smckusick 	long uinode;
59f3c01ed2Smckusick 	int url;	/*0=sequential*/
60f3c01ed2Smckusick 	flag useek;	/*true=can backspace, use dir, ...*/
61f3c01ed2Smckusick 	flag ufmt;
62f3c01ed2Smckusick 	flag uprnt;
63f3c01ed2Smckusick 	flag ublnk;
64f3c01ed2Smckusick 	flag uend;
65f3c01ed2Smckusick 	flag uwrt;	/*last io was write*/
66f3c01ed2Smckusick 	flag uscrtch;
67f3c01ed2Smckusick } unit;
68f3c01ed2Smckusick typedef struct
69f3c01ed2Smckusick {	flag inerr;
70f3c01ed2Smckusick 	ftnint inunit;
71f3c01ed2Smckusick 	char *infile;
72f3c01ed2Smckusick 	ftnlen infilen;
73f3c01ed2Smckusick 	ftnint	*inex;	/*parameters in standard's order*/
74f3c01ed2Smckusick 	ftnint	*inopen;
75f3c01ed2Smckusick 	ftnint	*innum;
76f3c01ed2Smckusick 	ftnint	*innamed;
77f3c01ed2Smckusick 	char	*inname;
78f3c01ed2Smckusick 	ftnlen	innamlen;
79f3c01ed2Smckusick 	char	*inacc;
80f3c01ed2Smckusick 	ftnlen	inacclen;
81f3c01ed2Smckusick 	char	*inseq;
82f3c01ed2Smckusick 	ftnlen	inseqlen;
83f3c01ed2Smckusick 	char 	*indir;
84f3c01ed2Smckusick 	ftnlen	indirlen;
85f3c01ed2Smckusick 	char	*infmt;
86f3c01ed2Smckusick 	ftnlen	infmtlen;
87f3c01ed2Smckusick 	char	*inform;
88f3c01ed2Smckusick 	ftnint	informlen;
89f3c01ed2Smckusick 	char	*inunf;
90f3c01ed2Smckusick 	ftnlen	inunflen;
91f3c01ed2Smckusick 	ftnint	*inrecl;
92f3c01ed2Smckusick 	ftnint	*innrec;
93f3c01ed2Smckusick 	char	*inblank;
94f3c01ed2Smckusick 	ftnlen	inblanklen;
95f3c01ed2Smckusick } inlist;
96f3c01ed2Smckusick 
97f3c01ed2Smckusick extern int errno;
98f3c01ed2Smckusick extern flag init;
99f3c01ed2Smckusick extern cilist *elist;	/*active external io list*/
100f3c01ed2Smckusick extern flag reading,external,sequential,formatted;
101f3c01ed2Smckusick extern int (*getn)(),(*putn)();	/*for formatted io*/
102f3c01ed2Smckusick extern FILE *cf;	/*current file*/
103f3c01ed2Smckusick extern unit *curunit;	/*current unit*/
104f3c01ed2Smckusick extern unit units[];
105f3c01ed2Smckusick #define err(f,n,s) {if(f) errno= n; else fatal(n,s); return(n);}
106f3c01ed2Smckusick 
107f3c01ed2Smckusick /*Table sizes*/
108f3c01ed2Smckusick #define MXUNIT 10
109f3c01ed2Smckusick 
110f3c01ed2Smckusick extern int recpos;	/*position in current record*/
111