Pristine Ack-5.5
[Ack-5.5.git] / lang / fortran / lib / libI77 / uio.c
1 #include "f2c.h"
2 #include "fio.h"
3 int reclen;
4 do_us(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
5 {
6         if(reading)
7         {
8                 recpos += *number * len;
9                 if(recpos>reclen)
10                 {
11                         err(elist->ciend,(-1), "eof/uio");
12                 }
13                 (void) fread(ptr,(int)len,(int)(*number),cf);
14                 return(0);
15         }
16         else
17         {
18                 reclen += *number * len;
19                 (void) fwrite(ptr,(int)len,(int)(*number),cf);
20                 return(0);
21         }
22 }
23 integer do_uio(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
24 {
25         if(sequential)
26                 return(do_us(number,ptr,len));
27         else    return(do_ud(number,ptr,len));
28 }
29 do_ud(number,ptr,len) ftnint *number; ftnlen len; char *ptr;
30 {
31         recpos += *number * len;
32         if(recpos > curunit->url && curunit->url!=1)
33                 err(elist->cierr,110,"eof/uio");
34         if(reading)
35         {
36                 if(fread(ptr,(int)len,(int)(*number),cf)
37                         != *number)
38                         err(elist->cierr,27,"eof/uio")
39                 else return(0);
40         }
41         (void) fwrite(ptr,(int)len,(int)(*number),cf);
42         return(0);
43 }