ack/lang/fortran/lib/libI77/uio.c
1991-10-07 16:59:33 +00:00

44 lines
906 B
C

#include "f2c.h"
#include "fio.h"
int reclen;
do_us(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
{
if(reading)
{
recpos += *number * len;
if(recpos>reclen)
{
err(elist->ciend,(-1), "eof/uio");
}
(void) fread(ptr,(int)len,(int)(*number),cf);
return(0);
}
else
{
reclen += *number * len;
(void) fwrite(ptr,(int)len,(int)(*number),cf);
return(0);
}
}
integer do_uio(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
{
if(sequential)
return(do_us(number,ptr,len));
else return(do_ud(number,ptr,len));
}
do_ud(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
{
recpos += *number * len;
if(recpos > curunit->url && curunit->url!=1)
err(elist->cierr,110,"eof/uio");
if(reading)
{
if(fread(ptr,(int)len,(int)(*number),cf)
!= *number)
err(elist->cierr,27,"eof/uio")
else return(0);
}
(void) fwrite(ptr,(int)len,(int)(*number),cf);
return(0);
}