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