if(a
->ounit
>=MXUNIT
|| a
->ounit
<0)
if(b
->ufd
!=0) goto connected
;
if(*a
->oblnk
=='b') b
->ublnk
=1;
{ if(b
->url
>0) b
->ufmt
=0;
else if(*a
->ofm
=='f') b
->ufmt
=1;
if(a
->osta
==0) goto unknown
;
if(a
->ofnm
==0) err(a
->oerr
,107,"open")
g_char(a
->ofnm
,a
->ofnmlen
,buf
);
if(*a
->osta
=='o' && access(buf
,0))
err(a
->oerr
,errno
,"open")
b
->ufnm
=(char *) calloc(strlen(buf
)+1,sizeof(char));
if(b
->ufnm
==NULL
) err(a
->oerr
,113,"no space");
{ b
->ufd
= fopen(buf
,"r");
if(b
->ufd
==NULL
) err(a
->oerr
,errno
,buf
)
{ b
->ufd
= fopen(buf
, "a");
if(b
->ufd
!= NULL
) b
->uwrt
= 1;
else if((b
->ufd
= fopen(buf
, "r")) != NULL
)
else err(a
->oerr
, errno
, buf
)
b
->useek
=canseek(b
->ufd
);
if((b
->uinode
=inode(buf
))==-1)
if(a
->orl
&& b
->useek
) rewind(b
->ufd
);
strcpy(buf
,"tmp.FXXXXXX");
if(a
->ofnm
==0) err(a
->oerr
,107,"open")
g_char(a
->ofnm
,a
->ofnmlen
,buf
);
if(access(buf
, 0) == 0) creat(buf
, 0666);
same
: if(a
->oblnk
!= 0) b
->ublnk
= *a
->oblnk
== 'b'?0:1;
g_char(a
->ofnm
,a
->ofnmlen
,buf
);
if(inode(buf
)==b
->uinode
) goto same
;
if((n
=f_clos(&x
))!=0) return(n
);
fk_open(rd
,seq
,fmt
,n
) ftnint n
;
sprintf(nbuf
,"fort.%D",n
);
a
.oacc
= seq
==SEQ
?"s":"d";
a
.ofm
= fmt
==FMT
?"f":"u";
if(stat(s
, &x
) == -1) return(0);
if((j
= (x
.st_mode
&S_IFMT
)) == S_IFREG
|| j
== S_IFDIR
) return(0);