Commit | Line | Data |
---|---|---|
bae7117f WH |
1 | #include "f2c.h" |
2 | #include "fio.h" | |
3 | #ifdef KR_headers | |
4 | integer f_inqu(a) inlist *a; | |
5 | #else | |
6 | #ifdef MSDOS | |
7 | #undef abs | |
8 | #undef min | |
9 | #undef max | |
10 | #include "string.h" | |
11 | #include "io.h" | |
12 | #endif | |
13 | integer f_inqu(inlist *a) | |
14 | #endif | |
15 | { flag byfile; | |
16 | int i, n; | |
17 | unit *p; | |
18 | char buf[256]; | |
19 | long x; | |
20 | if(a->infile!=NULL) | |
21 | { byfile=1; | |
22 | g_char(a->infile,a->infilen,buf); | |
23 | #ifdef NON_UNIX_STDIO | |
24 | x = access(buf,0) ? -1 : 0; | |
25 | for(i=0,p=NULL;i<MXUNIT;i++) | |
26 | if(f__units[i].ufd != NULL | |
27 | && f__units[i].ufnm != NULL | |
28 | && !strcmp(f__units[i].ufnm,buf)) { | |
29 | p = &f__units[i]; | |
30 | break; | |
31 | } | |
32 | #else | |
33 | x=f__inode(buf, &n); | |
34 | for(i=0,p=NULL;i<MXUNIT;i++) | |
35 | if(f__units[i].uinode==x | |
36 | && f__units[i].ufd!=NULL | |
37 | && f__units[i].udev == n) { | |
38 | p = &f__units[i]; | |
39 | break; | |
40 | } | |
41 | #endif | |
42 | } | |
43 | else | |
44 | { | |
45 | byfile=0; | |
46 | if(a->inunit<MXUNIT && a->inunit>=0) | |
47 | { | |
48 | p= &f__units[a->inunit]; | |
49 | } | |
50 | else | |
51 | { | |
52 | p=NULL; | |
53 | } | |
54 | } | |
55 | if(a->inex!=NULL) | |
56 | if(byfile && x != -1 || !byfile && p!=NULL) | |
57 | *a->inex=1; | |
58 | else *a->inex=0; | |
59 | if(a->inopen!=NULL) | |
60 | if(byfile) *a->inopen=(p!=NULL); | |
61 | else *a->inopen=(p!=NULL && p->ufd!=NULL); | |
62 | if(a->innum!=NULL) *a->innum= p-f__units; | |
63 | if(a->innamed!=NULL) | |
64 | if(byfile || p!=NULL && p->ufnm!=NULL) | |
65 | *a->innamed=1; | |
66 | else *a->innamed=0; | |
67 | if(a->inname!=NULL) | |
68 | if(byfile) | |
69 | b_char(buf,a->inname,a->innamlen); | |
70 | else if(p!=NULL && p->ufnm!=NULL) | |
71 | b_char(p->ufnm,a->inname,a->innamlen); | |
72 | if(a->inacc!=NULL && p!=NULL && p->ufd!=NULL) | |
73 | if(p->url) | |
74 | b_char("DIRECT",a->inacc,a->inacclen); | |
75 | else b_char("SEQUENTIAL",a->inacc,a->inacclen); | |
76 | if(a->inseq!=NULL) | |
77 | if(p!=NULL && p->url) | |
78 | b_char("NO",a->inseq,a->inseqlen); | |
79 | else b_char("YES",a->inseq,a->inseqlen); | |
80 | if(a->indir!=NULL) | |
81 | if(p==NULL || p->url) | |
82 | b_char("YES",a->indir,a->indirlen); | |
83 | else b_char("NO",a->indir,a->indirlen); | |
84 | if(a->infmt!=NULL) | |
85 | if(p!=NULL && p->ufmt==0) | |
86 | b_char("UNFORMATTED",a->infmt,a->infmtlen); | |
87 | else b_char("FORMATTED",a->infmt,a->infmtlen); | |
88 | if(a->inform!=NULL) | |
89 | if(p!=NULL && p->ufmt==0) | |
90 | b_char("NO",a->inform,a->informlen); | |
91 | else b_char("YES",a->inform,a->informlen); | |
92 | if(a->inunf) | |
93 | if(p!=NULL && p->ufmt==0) | |
94 | b_char("YES",a->inunf,a->inunflen); | |
95 | else if (p!=NULL) b_char("NO",a->inunf,a->inunflen); | |
96 | else b_char("UNKNOWN",a->inunf,a->inunflen); | |
97 | if(a->inrecl!=NULL && p!=NULL) | |
98 | *a->inrecl=p->url; | |
99 | if(a->innrec!=NULL && p!=NULL && p->url>0) | |
100 | *a->innrec=ftell(p->ufd)/p->url+1; | |
101 | if(a->inblank && p!=NULL && p->ufmt) | |
102 | if(p->ublnk) | |
103 | b_char("ZERO",a->inblank,a->inblanklen); | |
104 | else b_char("NULL",a->inblank,a->inblanklen); | |
105 | return(0); | |
106 | } |