Annotation of cci/usr/src/usr.lib/libI77/inquire.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1980 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)inquire.c   5.1     6/7/85
                      7:  */
                      8: 
                      9: /*
                     10:  * inquire.c - f77 i/o inquire statement routine
                     11:  */
                     12: 
                     13: #include "fio.h"
                     14: 
                     15: f_inqu(a) inlist *a;
                     16: {      flag byfile;
                     17:        int i;
                     18:        unit *p;
                     19:        char buf[256], *s;
                     20:        long x_inode;
                     21:        if(a->infile!=NULL)
                     22:        {       byfile=1;
                     23:                g_char(a->infile,a->infilen,buf);
                     24:                x_inode=inode(buf);
                     25:                for(i=0,p=NULL;i<MXUNIT;i++)
                     26:                        if(units[i].uinode==x_inode && units[i].ufd!=NULL)
                     27:                                p = &units[i];
                     28:        }
                     29:        else
                     30:        {
                     31:                byfile=0;
                     32:                if(a->inunit<MXUNIT && a->inunit>=0)
                     33:                {
                     34:                        p= &units[a->inunit];
                     35:                }
                     36:                else
                     37:                {
                     38:                        p=NULL;
                     39:                }
                     40:        }
                     41:        if(a->inex!=NULL)
                     42:                if(byfile && x_inode>0 || !byfile && p!=NULL)
                     43:                        *a->inex=1;
                     44:                else *a->inex=0;
                     45:        if(a->inopen!=NULL)
                     46:                if(byfile) *a->inopen=(p!=NULL);
                     47:                else *a->inopen=(p!=NULL && p->ufd!=NULL);
                     48:        if(a->innum) *a->innum= (p?(p-units):-1);
                     49:        if(a->innamed) *a->innamed= (byfile || (p && p->ufnm));
                     50:        if(a->inname)
                     51:        {
                     52:                if(byfile) s = buf;
                     53:                else if(p && p->ufnm) s = p->ufnm;
                     54:                else s="";
                     55:                b_char(s,a->inname,a->innamlen);
                     56:        }
                     57:        if(a->inacc && p)
                     58:        {
                     59:                if(p->url) s = "DIRECT";
                     60:                else    s = "SEQUENTIAL";
                     61:                b_char(s,a->inacc,a->inacclen);
                     62:        }
                     63:        if(a->inseq)
                     64:        {
                     65:                s= ((byfile && !p) || (p && !p->url))? "YES" : "NO";
                     66:                b_char(s,a->inseq,a->inseqlen);
                     67:        }
                     68:        if(a->indir)
                     69:        {
                     70:                s= ((byfile && !p) || (p && p->useek && p->url))? "YES" : "NO";
                     71:                b_char(s,a->indir,a->indirlen);
                     72:        }
                     73:        if(a->inform)
                     74:        {       if(p)
                     75:                {
                     76: #ifndef KOSHER
                     77:                        if(p->uprnt) s = "PRINT"; /*** NOT STANDARD FORTRAN ***/
                     78:                        else
                     79: #endif
                     80:                                s = p->ufmt?"FORMATTED":"UNFORMATTED";
                     81:                }
                     82:                else s = "UNKNOWN";
                     83:                b_char(s,a->inform,a->informlen);
                     84:        }
                     85:        if(a->infmt)
                     86:        {
                     87:                if (p) s= p->ufmt? "YES" : "NO";
                     88:                else s= "unknown";
                     89:                b_char(s,a->infmt,a->infmtlen);
                     90:        }
                     91:        if(a->inunf)
                     92:        {
                     93:                if (p) s= p->ufmt? "NO" : "YES";
                     94:                else s= "UNKNOWN";
                     95:                b_char(s,a->inunf,a->inunflen);
                     96:        }
                     97:        if(a->inrecl && p) *a->inrecl=p->url;
                     98:        if(a->innrec && p && p->url)
                     99:                *a->innrec=((ftell(p->ufd) + p->url - 1)/p->url) + 1;
                    100:        if(a->inblank && p && p->ufmt)
                    101:        {
                    102:                b_char(p->ublnk? "ZERO" : "NULL",a->inblank,a->inblanklen);
                    103:        }
                    104:        return(OK);
                    105: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.