|
|
1.1 root 1: /* @(#)inquire.c 1.3 */
2:
3: #include "fio.h"
4: f_inqu(a) inlist *a;
5: { flag byfile;
6: int i;
7: unit *p;
8: char buf[256];
9: long x;
10: if(a->infile!=NULL)
11: { byfile=1;
12: g_char(a->infile,a->infilen,buf);
13: x=inode(buf);
14: for(i=0,p=NULL;i<MXUNIT;i++)
15: if(units[i].uinode==x && units[i].ufd!=NULL)
16: p = &units[i];
17: }
18: else
19: {
20: byfile=0;
21: if(a->inunit<MXUNIT && a->inunit>=0)
22: {
23: p= &units[a->inunit];
24: }
25: else
26: {
27: p=NULL;
28: }
29: }
30: if(a->inex!=NULL)
31: if(byfile && x>0 || !byfile && p!=NULL)
32: *a->inex=1;
33: else *a->inex=0;
34: if(a->inopen!=NULL)
35: if(byfile) *a->inopen=(p!=NULL);
36: else *a->inopen=(p!=NULL && p->ufd!=NULL);
37: if(a->innum!=NULL) *a->innum= p-units;
38: if(a->innamed!=NULL)
39: if(byfile || p!=NULL && p->ufnm!=NULL)
40: *a->innamed=1;
41: else *a->innamed=0;
42: if(a->inname!=NULL)
43: if(byfile)
44: b_char(buf,a->inname,a->innamlen);
45: else if(p!=NULL && p->ufnm!=NULL)
46: b_char(p->ufnm,a->inname,a->innamlen);
47: if(a->inacc!=NULL && p!=NULL && p->ufd!=NULL)
48: if(p->url)
49: b_char("direct",a->inacc,a->inacclen);
50: else b_char("sequential",a->inacc,a->inacclen);
51: if(a->inseq!=NULL)
52: if(byfile && p!=NULL && p->url)
53: b_char("no",a->inseq,a->inseqlen);
54: else b_char("yes",a->inseq,a->inseqlen);
55: if(a->indir!=NULL)
56: if(p!=NULL && p->url)
57: b_char("yes",a->indir,a->indirlen);
58: else b_char("no",a->indir,a->indirlen);
59: if(a->infmt!=NULL)
60: if(p!=NULL && p->ufmt==0)
61: b_char("unformatted",a->infmt,a->infmtlen);
62: else b_char("formatted",a->infmt,a->infmtlen);
63: if(a->inform!=NULL)
64: if(p!=NULL && p->ufmt==0)
65: b_char("no",a->inform,a->informlen);
66: else b_char("yes",a->inform,a->informlen);
67: if(a->inunf)
68: if(p!=NULL && p->ufmt==0)
69: b_char("yes",a->inunf,a->inunflen);
70: else if (p!=NULL) b_char("no",a->inunf,a->inunflen);
71: else b_char("unknown",a->inunf,a->inunflen);
72: if(a->inrecl!=NULL && p!=NULL)
73: *a->inrecl=p->url;
74: if(a->innrec!=NULL && p!=NULL && p->url>0)
75: *a->innrec=ftell(p->ufd)/p->url+1;
76: if(a->inblank && p!=NULL && p->ufmt)
77: if(p->ublnk)
78: b_char("zero",a->inblank,a->inblanklen);
79: else b_char("null",a->inblank,a->inblanklen);
80: return(0);
81: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.