char id_open[] = "@(#)open.c 1.2";
* open.c - f77 file open routines
#define SCRATCH (st=='s')
#define FROM_OPEN "\1" /* for use in f_clos() */
external
= YES
; /* for err */
if(not_legal(lunit
)) err(errflag
,F_ERUNIT
,"open")
if(a
->osta
) st
= lcase(*a
->osta
);
else if(a
->ofnm
) g_char(a
->ofnm
,a
->ofnmlen
,buf
);
else sprintf(buf
,fortfile
,lunit
);
if(!a
->ofnm
|| inode(buf
)==b
->uinode
)
if(a
->oblnk
) b
->ublnk
= (lcase(*a
->oblnk
)== 'z');
if(a
->ofm
&& b
->ufmt
) b
->uprnt
= (lcase(*a
->ofm
)== 'p');
if(n
=f_clos(&x
)) return(n
);
exists
= (access(buf
,0)==NULL
);
if(!exists
&& OLD
) err(errflag
,F_EROLDF
,"open");
if( exists
&& NEW
) err(errflag
,F_ERNEWF
,"open");
{ if((b
->ufd
= fopen(buf
,"r")) != NULL
) b
->uwrt
= NO
;
else err(errflag
,errno
,buf
)
{ if((b
->ufd
= fopen(buf
, "a")) != NULL
) b
->uwrt
= YES
;
else if((b
->ufd
= fopen(buf
, "r")) != NULL
)
else err(errflag
, errno
, buf
)
if((b
->uinode
=finode(b
->ufd
))==-1) err(errflag
,F_ERSTAT
,"open")
b
->ufnm
= (char *) calloc(strlen(buf
)+1,sizeof(char));
if(b
->ufnm
==NULL
) err(errflag
,F_ERSPACE
,"open")
b
->useek
= canseek(b
->ufd
);
b
->ublnk
= (a
->oblnk
&& (lcase(*a
->oblnk
)=='z'));
case 'p': /* print file *** NOT STANDARD FORTRAN ***/
err(errflag
,F_ERARG
,"open form=")
if(b
->url
&& b
->useek
) rewind(b
->ufd
);
fk_open(rd
,seq
,fmt
,n
) ftnint n
;
sprintf(nbuf
, fortfile
, (int)n
);
a
.oacc
= seq
==SEQ
?"s":"d";
a
.ofm
= fmt
==FMT
?"f":"u";
if(stat(s
, &x
) == -1) return(NO
);
if((j
= (x
.st_mode
&S_IFMT
)) == S_IFREG
|| j
== S_IFDIR
) return(NO
);