char id_err[] = "@(#)err.c 1.4";
* file i/o error and initialization routines
char *tmplate
= "tmp.FXXXXXX"; /* scratch file template */
char *fortfile
= "fort.%d"; /* default file template */
unit units
[MXUNIT
] = 0; /*unit table*/
flag reading
; /*1 if reading, 0 if writing*/
flag external
; /*1 if external io, 0 if internal */
flag sequential
; /*1 if sequential io, 0 if direct*/
flag formatted
; /*1 if formatted io, 0 if unformatted, -1 if list*/
char *fmtbuf
, *icptr
, *icend
, *fmtptr
;
int (*doed
)(),(*doned
)();
int (*doend
)(),(*donewrec
)(),(*dorevert
)(),(*dotab
)();
int (*getn
)(),(*putn
)(),(*ungetn
)(); /*for formatted io*/
icilist
*svic
; /* active internal io list */
FILE *cf
; /*current file structure*/
unit
*curunit
; /*current unit structure*/
int lunit
; /*current logical unit*/
char *lfname
; /*current filename*/
int recpos
; /*place in current record*/
ftnint recnum
; /* current record number */
int reclen
; /* current record length */
ioflag signit
,tab
,cplus
,cblank
,elist
,errflag
,endflag
,lquit
,l_first
;
extern char *sys_errlist
[];
extern char *f_errlist
[];
for (lu
=1; lu
< MXUNIT
; lu
++)
fprintf(stderr
,"%s: [%d] end of file\n",s
,n
);
else if(n
>=0 && n
<sys_nerr
)
fprintf(stderr
,"%s: [%d] %s\n",s
,n
,sys_errlist
[n
]);
else if(n
>=F_ER
&& n
<F_MAXERR
)
fprintf(stderr
,"%s: [%d] %s\n",s
,n
,f_errlist
[n
-F_ER
]);
fprintf(stderr
,"%s: [%d] unknown error number\n",s
,n
);
if(!lfname
) switch (lunit
)
{ case STDERR
: lfname
= "stderr";
case STDIN
: lfname
= "stdin";
case STDOUT
: lfname
= "stdout";
fprintf(stderr
,"logical unit %d, named '%s'\n",lunit
,lfname
);
{ fprintf(stderr
,"lately: %s %s %s %s IO\n",
reading
?"reading":"writing",
sequential
?"sequential":"direct",
formatted
>0?"formatted":(formatted
<0?"list":"unformatted"),
external
?"external":"internal");
{ if(fmtbuf
) prnt_fmt(n
);
{ if(reading
&& curunit
->useek
)
prnt_ext(); /* print external data */
else prnt_int(); /* print internal array */
fprintf (stderr
, "part of last data: ");
loc
= ftell(curunit
->ufd
);
{ if(loc
==1L) rewind(curunit
->ufd
);
else for(;i
<12 && last_char(curunit
->ufd
)!='\n';i
++);
while(i
--) ffputc(fgetc(curunit
->ufd
),stderr
);
for(i
=0;i
<5 && (ch
=fgetc(curunit
->ufd
)!=EOF
);i
++) ffputc(ch
,stderr
);
fprintf (stderr
,"part of last string: ");
ep
= icptr
- (recpos
<12?recpos
:12);
while (ep
<icptr
) ffputc(*ep
++,stderr
);
while (ep
<(icptr
+5) && ep
<icend
) ffputc(*ep
++,stderr
);
fprintf(stderr
, "part of last format: ");
ep
= fmtptr
- (i
<20?i
:20);
{ ffputc((*ep
==GLITCH
)?'"':*ep
,stderr
);
if(ep
==fmtptr
) fputc('|',stderr
);
if (c
< ' ' || c
== 0177)
/*initialization routine*/
ini_std(STDERR
, stderr
, WRITE
, 0);
ini_std(STDIN
, stdin
, READ
, 0);
ini_std(STDOUT
, stdout
, WRITE
, init66_
);