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