char id_due[] = "@(#)due.c 1.3";
* direct unformatted external i/o
char rdue
[] = "read due";
char wdue
[] = "write due";
if(n
=c_due(a
,READ
)) return(n
);
if(curunit
->uwrt
&& ! nowreading(curunit
)) err(errflag
, errno
, rdue
);
if(n
=c_due(a
,WRITE
)) return(n
);
if(!curunit
->uwrt
&& ! nowwriting(curunit
)) err(errflag
, errno
, wdue
)
if(not_legal(lunit
)) err(errflag
,F_ERUNIT
,rdue
+5);
if (!curunit
->ufd
&& (n
=fk_open(flag
,DIR,UNF
,(ftnint
)lunit
)) )
if (curunit
->ufmt
) err(errflag
,F_ERNOUIO
,rdue
+5)
if (!curunit
->useek
|| !curunit
->url
) err(errflag
,F_ERNODIO
,rdue
+5)
if (fseek(cf
, (long)((a
->cirec
-1)*curunit
->url
), 0) < 0)
{/* This is to ensure full records. It is really necessary. */
if (curunit
->url
!=1 && recpos
!=curunit
->url
&&
(fseek(cf
, (long)(curunit
->url
-recpos
-1), 1) < 0
|| fwrite(&n
, 1, 1, cf
) != 1))