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