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