home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / libI77 / inquire.c < prev    next >
Encoding:
C/C++ Source or Header  |  1979-01-10  |  1.9 KB  |  78 lines

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