source: branches/libc-0.6/src/gcc/libf2c/libI77/uio.c

Last change on this file was 1392, checked in by bird, 21 years ago

This commit was generated by cvs2svn to compensate for changes in r1391,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 1.4 KB
Line 
1#include "config.h"
2#include "f2c.h"
3#include "fio.h"
4#include <sys/types.h>
5uiolen f__reclen;
6
7int
8do_us (ftnint * number, char *ptr, ftnlen len)
9{
10 if (f__reading)
11 {
12 f__recpos += (int) (*number * len);
13 if (f__recpos > f__reclen)
14 err (f__elist->cierr, 110, "do_us");
15 if (fread (ptr, (size_t) len, (size_t) (*number), f__cf) != (size_t) *number)
16 err (f__elist->ciend, EOF, "do_us");
17 return (0);
18 }
19 else
20 {
21 f__reclen += *number * len;
22 (void) fwrite (ptr, (size_t) len, (size_t) (*number), f__cf);
23 return (0);
24 }
25}
26integer
27do_ud (ftnint * number, char *ptr, ftnlen len)
28{
29 f__recpos += (int) (*number * len);
30 if (f__recpos > f__curunit->url && f__curunit->url != 1)
31 err (f__elist->cierr, 110, "do_ud");
32 if (f__reading)
33 {
34#ifdef Pad_UDread
35 size_t i;
36 if (!(i = fread (ptr, (size_t) len, (size_t) (*number), f__cf))
37 && !(f__recpos - *number * len))
38 err (f__elist->cierr, EOF, "do_ud");
39 if (i < (size_t) *number)
40 memset (ptr + i * len, 0, (*number - i) * len);
41 return 0;
42#else
43 if (fread (ptr, (size_t) len, (size_t) (*number), f__cf) != *number)
44 err (f__elist->cierr, EOF, "do_ud");
45 else
46 return (0);
47#endif
48 }
49 (void) fwrite (ptr, (size_t) len, (size_t) (*number), f__cf);
50 return (0);
51}
52
53integer
54do_uio (ftnint * number, char *ptr, ftnlen len)
55{
56 if (f__sequential)
57 return (do_us (number, ptr, len));
58 else
59 return (do_ud (number, ptr, len));
60}
Note: See TracBrowser for help on using the repository browser.