| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | #include "f2c.h"#include "fio.h"#include "string.h"#ifdef NON_UNIX_STDIO#ifndef MSDOS#include "unistd.h" /* for access() */#endif#endif#ifdef KR_headersinteger f_inqu(a) inlist *a;#else#ifdef __cplusplusextern "C" integer f_inqu(inlist*);#endif#ifdef MSDOS#undef abs#undef min#undef max#include "io.h"#endifinteger f_inqu(inlist *a)#endif{	flag byfile;	int i;#ifndef NON_UNIX_STDIO	int n;#endif	unit *p;	char buf[256];	long x;	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;				}#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;				}#endif	}	else	{		byfile=0;		if(a->inunit<MXUNIT && a->inunit>=0)		{			p= &f__units[a->inunit];		}		else		{			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=(ftnint)(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);}
 |