summaryrefslogtreecommitdiffstats
path: root/contrib/libf2c/libI77/inquire.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libf2c/libI77/inquire.c')
-rw-r--r--contrib/libf2c/libI77/inquire.c218
1 files changed, 126 insertions, 92 deletions
diff --git a/contrib/libf2c/libI77/inquire.c b/contrib/libf2c/libI77/inquire.c
index 5c5575a..dae869c 100644
--- a/contrib/libf2c/libI77/inquire.c
+++ b/contrib/libf2c/libI77/inquire.c
@@ -2,108 +2,142 @@
#include "f2c.h"
#include "fio.h"
#include <string.h>
-#ifdef KR_headers
-integer f_inqu(a) inlist *a;
-#else
#if defined (MSDOS) && !defined (GO32)
#undef abs
#undef min
#undef max
#include "io.h"
#endif
-integer f_inqu(inlist *a)
-#endif
-{ flag byfile;
- int i, n;
- unit *p;
- char buf[256];
- long x;
- if (f__init & 2)
- f__fatal (131, "I/O recursion");
- if(a->infile!=NULL)
- { byfile=1;
- g_char(a->infile,a->infilen,buf);
+integer
+f_inqu (inlist * a)
+{
+ flag byfile;
+ int i, n;
+ unit *p;
+ char buf[256];
+ long x;
+ if (f__init & 2)
+ f__fatal (131, "I/O recursion");
+ if (a->infile != NULL)
+ {
+ byfile = 1;
+ g_char (a->infile, a->infilen, buf);
#ifdef NON_UNIX_STDIO
- x = access(buf,0) ? -1 : 0;
- for(i=0,p=NULL;i<MXUNIT;i++)
- if(f__units[i].ufd != NULL
- && f__units[i].ufnm != NULL
- && !strcmp(f__units[i].ufnm,buf)) {
- p = &f__units[i];
- break;
- }
+ x = access (buf, 0) ? -1 : 0;
+ for (i = 0, p = NULL; i < MXUNIT; i++)
+ if (f__units[i].ufd != NULL
+ && f__units[i].ufnm != NULL && !strcmp (f__units[i].ufnm, buf))
+ {
+ p = &f__units[i];
+ break;
+ }
#else
- x=f__inode(buf, &n);
- for(i=0,p=NULL;i<MXUNIT;i++)
- if(f__units[i].uinode==x
- && f__units[i].ufd!=NULL
- && f__units[i].udev == n) {
- p = &f__units[i];
- break;
- }
+ x = f__inode (buf, &n);
+ for (i = 0, p = NULL; i < MXUNIT; i++)
+ if (f__units[i].uinode == x
+ && f__units[i].ufd != NULL && f__units[i].udev == n)
+ {
+ p = &f__units[i];
+ break;
+ }
#endif
+ }
+ else
+ {
+ byfile = 0;
+ if (a->inunit < MXUNIT && a->inunit >= 0)
+ {
+ p = &f__units[a->inunit];
}
- else
+ else
{
- byfile=0;
- if(a->inunit<MXUNIT && a->inunit>=0)
- {
- p= &f__units[a->inunit];
- }
- else
- {
- p=NULL;
- }
+ p = NULL;
}
- if(a->inex!=NULL)
- if(byfile && x != -1 || !byfile && p!=NULL)
- *a->inex=1;
- else *a->inex=0;
- if(a->inopen!=NULL)
- if(byfile) *a->inopen=(p!=NULL);
- else *a->inopen=(p!=NULL && p->ufd!=NULL);
- if(a->innum!=NULL) *a->innum= p-f__units;
- if(a->innamed!=NULL)
- if(byfile || p!=NULL && p->ufnm!=NULL)
- *a->innamed=1;
- else *a->innamed=0;
- if(a->inname!=NULL)
- if(byfile)
- b_char(buf,a->inname,a->innamlen);
- else if(p!=NULL && p->ufnm!=NULL)
- b_char(p->ufnm,a->inname,a->innamlen);
- if(a->inacc!=NULL && p!=NULL && p->ufd!=NULL)
- if(p->url)
- b_char("DIRECT",a->inacc,a->inacclen);
- else b_char("SEQUENTIAL",a->inacc,a->inacclen);
- if(a->inseq!=NULL)
- if(p!=NULL && p->url)
- b_char("NO",a->inseq,a->inseqlen);
- else b_char("YES",a->inseq,a->inseqlen);
- if(a->indir!=NULL)
- if(p==NULL || p->url)
- b_char("YES",a->indir,a->indirlen);
- else b_char("NO",a->indir,a->indirlen);
- if(a->infmt!=NULL)
- if(p!=NULL && p->ufmt==0)
- b_char("UNFORMATTED",a->infmt,a->infmtlen);
- else b_char("FORMATTED",a->infmt,a->infmtlen);
- if(a->inform!=NULL)
- if(p!=NULL && p->ufmt==0)
- b_char("NO",a->inform,a->informlen);
- else b_char("YES",a->inform,a->informlen);
- if(a->inunf)
- if(p!=NULL && p->ufmt==0)
- b_char("YES",a->inunf,a->inunflen);
- else if (p!=NULL) b_char("NO",a->inunf,a->inunflen);
- else b_char("UNKNOWN",a->inunf,a->inunflen);
- if(a->inrecl!=NULL && p!=NULL)
- *a->inrecl=p->url;
- if(a->innrec!=NULL && p!=NULL && p->url>0)
- *a->innrec=FTELL(p->ufd)/p->url+1;
- if(a->inblank && p!=NULL && p->ufmt)
- if(p->ublnk)
- b_char("ZERO",a->inblank,a->inblanklen);
- else b_char("NULL",a->inblank,a->inblanklen);
- return(0);
+ }
+ if (a->inex != NULL)
+ {
+ if ((byfile && x != -1) || (!byfile && p != NULL))
+ *a->inex = 1;
+ else
+ *a->inex = 0;
+ }
+ if (a->inopen != NULL)
+ {
+ if (byfile)
+ *a->inopen = (p != NULL);
+ else
+ *a->inopen = (p != NULL && p->ufd != NULL);
+ }
+ if (a->innum != NULL)
+ *a->innum = p - f__units;
+ if (a->innamed != NULL)
+ {
+ if (byfile || (p != NULL && p->ufnm != NULL))
+ *a->innamed = 1;
+ else
+ *a->innamed = 0;
+ }
+ if (a->inname != NULL)
+ {
+ if (byfile)
+ b_char (buf, a->inname, a->innamlen);
+ else if (p != NULL && p->ufnm != NULL)
+ b_char (p->ufnm, a->inname, a->innamlen);
+ }
+ if (a->inacc != NULL && p != NULL && p->ufd != NULL)
+ {
+ if (p->url)
+ b_char ("DIRECT", a->inacc, a->inacclen);
+ else
+ b_char ("SEQUENTIAL", a->inacc, a->inacclen);
+ }
+ if (a->inseq != NULL)
+ {
+ if (p != NULL && p->url)
+ b_char ("NO", a->inseq, a->inseqlen);
+ else
+ b_char ("YES", a->inseq, a->inseqlen);
+ }
+ if (a->indir != NULL)
+ {
+ if (p == NULL || p->url)
+ b_char ("YES", a->indir, a->indirlen);
+ else
+ b_char ("NO", a->indir, a->indirlen);
+ }
+ if (a->infmt != NULL)
+ {
+ if (p != NULL && p->ufmt == 0)
+ b_char ("UNFORMATTED", a->infmt, a->infmtlen);
+ else
+ b_char ("FORMATTED", a->infmt, a->infmtlen);
+ }
+ if (a->inform != NULL)
+ {
+ if (p != NULL && p->ufmt == 0)
+ b_char ("NO", a->inform, a->informlen);
+ else
+ b_char ("YES", a->inform, a->informlen);
+ }
+ if (a->inunf)
+ {
+ if (p != NULL && p->ufmt == 0)
+ b_char ("YES", a->inunf, a->inunflen);
+ else if (p != NULL)
+ b_char ("NO", a->inunf, a->inunflen);
+ else
+ b_char ("UNKNOWN", a->inunf, a->inunflen);
+ }
+ if (a->inrecl != NULL && p != NULL)
+ *a->inrecl = p->url;
+ if (a->innrec != NULL && p != NULL && p->url > 0)
+ *a->innrec = FTELL (p->ufd) / p->url + 1;
+ if (a->inblank && p != NULL && p->ufmt)
+ {
+ if (p->ublnk)
+ b_char ("ZERO", a->inblank, a->inblanklen);
+ else
+ b_char ("NULL", a->inblank, a->inblanklen);
+ }
+ return (0);
}
OpenPOWER on IntegriCloud