1*47955Sbostic /*- 2*47955Sbostic * Copyright (c) 1980 The Regents of the University of California. 3*47955Sbostic * All rights reserved. 422814Smckusick * 5*47955Sbostic * %sccs.include.proprietary.c% 6*47955Sbostic * 7*47955Sbostic * @(#)fio.h 5.2 (Berkeley) 04/12/91 822814Smckusick */ 922814Smckusick 1022814Smckusick #include <stdio.h> 1122814Smckusick typedef long ftnint; 1222814Smckusick typedef ftnint flag; 1322814Smckusick typedef long ftnlen; 1422814Smckusick /*external read, write*/ 1522814Smckusick typedef struct 1622814Smckusick { flag cierr; 1722814Smckusick ftnint ciunit; 1822814Smckusick flag ciend; 1922814Smckusick char *cifmt; 2022814Smckusick ftnint cirec; 2122814Smckusick } cilist; 2222814Smckusick /*internal read, write*/ 2322814Smckusick typedef struct 2422814Smckusick { flag icierr; 2522814Smckusick char *iciunit; 2622814Smckusick flag iciend; 2722814Smckusick char *icifmt; 2822814Smckusick ftnint icirlen; 2922814Smckusick ftnint icirnum; 3022814Smckusick } icilist; 3122814Smckusick /*open*/ 3222814Smckusick typedef struct 3322814Smckusick { flag oerr; 3422814Smckusick ftnint ounit; 3522814Smckusick char *ofnm; 3622814Smckusick ftnlen ofnmlen; 3722814Smckusick char *osta; 3822814Smckusick char *oacc; 3922814Smckusick char *ofm; 4022814Smckusick ftnint orl; 4122814Smckusick char *oblnk; 4222814Smckusick } olist; 4322814Smckusick /*close*/ 4422814Smckusick typedef struct 4522814Smckusick { flag cerr; 4622814Smckusick ftnint cunit; 4722814Smckusick char *csta; 4822814Smckusick } cllist; 4922814Smckusick /*rewind, backspace, endfile*/ 5022814Smckusick typedef struct 5122814Smckusick { flag aerr; 5222814Smckusick ftnint aunit; 5322814Smckusick } alist; 5422814Smckusick /*units*/ 5522814Smckusick typedef struct 5622814Smckusick { FILE *ufd; /*0=unconnected*/ 5722814Smckusick char *ufnm; 5822814Smckusick long uinode; 5922814Smckusick int url; /*0=sequential*/ 6022814Smckusick flag useek; /*true=can backspace, use dir, ...*/ 6122814Smckusick flag ufmt; 6222814Smckusick flag uprnt; 6322814Smckusick flag ublnk; 6422814Smckusick flag uend; 6522814Smckusick flag uwrt; /*last io was write*/ 6622814Smckusick flag uscrtch; 6722814Smckusick } unit; 6822814Smckusick typedef struct 6922814Smckusick { flag inerr; 7022814Smckusick ftnint inunit; 7122814Smckusick char *infile; 7222814Smckusick ftnlen infilen; 7322814Smckusick ftnint *inex; /*parameters in standard's order*/ 7422814Smckusick ftnint *inopen; 7522814Smckusick ftnint *innum; 7622814Smckusick ftnint *innamed; 7722814Smckusick char *inname; 7822814Smckusick ftnlen innamlen; 7922814Smckusick char *inacc; 8022814Smckusick ftnlen inacclen; 8122814Smckusick char *inseq; 8222814Smckusick ftnlen inseqlen; 8322814Smckusick char *indir; 8422814Smckusick ftnlen indirlen; 8522814Smckusick char *infmt; 8622814Smckusick ftnlen infmtlen; 8722814Smckusick char *inform; 8822814Smckusick ftnint informlen; 8922814Smckusick char *inunf; 9022814Smckusick ftnlen inunflen; 9122814Smckusick ftnint *inrecl; 9222814Smckusick ftnint *innrec; 9322814Smckusick char *inblank; 9422814Smckusick ftnlen inblanklen; 9522814Smckusick } inlist; 9622814Smckusick 9722814Smckusick extern int errno; 9822814Smckusick extern flag init; 9922814Smckusick extern cilist *elist; /*active external io list*/ 10022814Smckusick extern flag reading,external,sequential,formatted; 10122814Smckusick extern int (*getn)(),(*putn)(); /*for formatted io*/ 10222814Smckusick extern FILE *cf; /*current file*/ 10322814Smckusick extern unit *curunit; /*current unit*/ 10422814Smckusick extern unit units[]; 10522814Smckusick #define err(f,n,s) {if(f) errno= n; else fatal(n,s); return(n);} 10622814Smckusick 10722814Smckusick /*Table sizes*/ 10822814Smckusick #define MXUNIT 10 10922814Smckusick 11022814Smckusick extern int recpos; /*position in current record*/ 111