Doxygen Source Code Documentation
inquire.c File Reference
#include "f2c.h"
#include "fio.h"
#include <unistd.h>
#include <string.h>
Go to the source code of this file.
Functions | |
integer | f_inqu (inlist *a) |
Function Documentation
|
Definition at line 17 of file inquire.c. References a, b_char(), f__inode(), g_char(), i, MXUNIT, p, unit::ublnk, unit::ufd, unit::ufmt, unit::ufnm, and unit::url.
00019 { flag byfile; 00020 int i, n; 00021 unit *p; 00022 char buf[256]; 00023 long x; 00024 if(a->infile!=NULL) 00025 { byfile=1; 00026 g_char(a->infile,a->infilen,buf); 00027 #ifdef NON_UNIX_STDIO 00028 x = access(buf,0) ? -1 : 0; 00029 for(i=0,p=NULL;i<MXUNIT;i++) 00030 if(f__units[i].ufd != NULL 00031 && f__units[i].ufnm != NULL 00032 && !strcmp(f__units[i].ufnm,buf)) { 00033 p = &f__units[i]; 00034 break; 00035 } 00036 #else 00037 x=f__inode(buf, &n); 00038 for(i=0,p=NULL;i<MXUNIT;i++) 00039 if(f__units[i].uinode==x 00040 && f__units[i].ufd!=NULL 00041 && f__units[i].udev == n) { 00042 p = &f__units[i]; 00043 break; 00044 } 00045 #endif 00046 } 00047 else 00048 { 00049 byfile=0; 00050 if(a->inunit<MXUNIT && a->inunit>=0) 00051 { 00052 p= &f__units[a->inunit]; 00053 } 00054 else 00055 { 00056 p=NULL; 00057 } 00058 } 00059 if(a->inex!=NULL) 00060 if(byfile && x != -1 || !byfile && p!=NULL) 00061 *a->inex=1; 00062 else *a->inex=0; 00063 if(a->inopen!=NULL) 00064 if(byfile) *a->inopen=(p!=NULL); 00065 else *a->inopen=(p!=NULL && p->ufd!=NULL); 00066 if(a->innum!=NULL) *a->innum= p-f__units; 00067 if(a->innamed!=NULL) 00068 if(byfile || p!=NULL && p->ufnm!=NULL) 00069 *a->innamed=1; 00070 else *a->innamed=0; 00071 if(a->inname!=NULL) 00072 if(byfile) 00073 b_char(buf,a->inname,a->innamlen); 00074 else if(p!=NULL && p->ufnm!=NULL) 00075 b_char(p->ufnm,a->inname,a->innamlen); 00076 if(a->inacc!=NULL && p!=NULL && p->ufd!=NULL) 00077 if(p->url) 00078 b_char("DIRECT",a->inacc,a->inacclen); 00079 else b_char("SEQUENTIAL",a->inacc,a->inacclen); 00080 if(a->inseq!=NULL) 00081 if(p!=NULL && p->url) 00082 b_char("NO",a->inseq,a->inseqlen); 00083 else b_char("YES",a->inseq,a->inseqlen); 00084 if(a->indir!=NULL) 00085 if(p==NULL || p->url) 00086 b_char("YES",a->indir,a->indirlen); 00087 else b_char("NO",a->indir,a->indirlen); 00088 if(a->infmt!=NULL) 00089 if(p!=NULL && p->ufmt==0) 00090 b_char("UNFORMATTED",a->infmt,a->infmtlen); 00091 else b_char("FORMATTED",a->infmt,a->infmtlen); 00092 if(a->inform!=NULL) 00093 if(p!=NULL && p->ufmt==0) 00094 b_char("NO",a->inform,a->informlen); 00095 else b_char("YES",a->inform,a->informlen); 00096 if(a->inunf) 00097 if(p!=NULL && p->ufmt==0) 00098 b_char("YES",a->inunf,a->inunflen); 00099 else if (p!=NULL) b_char("NO",a->inunf,a->inunflen); 00100 else b_char("UNKNOWN",a->inunf,a->inunflen); 00101 if(a->inrecl!=NULL && p!=NULL) 00102 *a->inrecl=p->url; 00103 if(a->innrec!=NULL && p!=NULL && p->url>0) 00104 *a->innrec=ftell(p->ufd)/p->url+1; 00105 if(a->inblank && p!=NULL && p->ufmt) 00106 if(p->ublnk) 00107 b_char("ZERO",a->inblank,a->inblanklen); 00108 else b_char("NULL",a->inblank,a->inblanklen); 00109 return(0); 00110 } |