source: branches/libc-0.6/src/gcc/libf2c/libI77/fio.h

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: 2.5 KB
Line 
1#include <sys/types.h>
2#include <stdio.h>
3#include <errno.h>
4#ifndef NULL
5/* ANSI C */
6#include <stddef.h>
7#endif
8#ifdef STDC_HEADERS
9#include <string.h>
10#endif
11
12#ifndef SEEK_SET
13#define SEEK_SET 0
14#define SEEK_CUR 1
15#define SEEK_END 2
16#endif
17
18/* Only use fseeko/ftello if they are both there. */
19
20#if defined (HAVE_FSEEKO) && defined (HAVE_FTELLO)
21#define FSEEK fseeko
22#define FTELL ftello
23#else
24#define FSEEK fseek
25#define FTELL ftell
26#endif
27
28#if defined (MSDOS) && !defined (GO32)
29#ifndef NON_UNIX_STDIO
30#define NON_UNIX_STDIO
31#endif
32#endif
33
34#ifdef UIOLEN_int
35typedef int uiolen;
36#else
37typedef long uiolen;
38#endif
39
40/*units*/
41typedef struct
42{
43 FILE *ufd; /*0=unconnected */
44 char *ufnm;
45#if !(defined (MSDOS) && !defined (GO32))
46 long uinode;
47 int udev;
48#endif
49 int url; /*0=sequential */
50 flag useek; /*true=can backspace, use dir, ... */
51 flag ufmt;
52 flag urw; /* (1 for can read) | (2 for can write) */
53 flag ublnk;
54 flag uend;
55 flag uwrt; /*last io was write */
56 flag uscrtch;
57}
58unit;
59
60extern int f__init;
61extern cilist *f__elist; /*active external io list */
62extern flag f__reading, f__external, f__sequential, f__formatted;
63extern int (*f__getn) (void); /* for formatted input */
64extern void (*f__putn) (int); /* for formatted output */
65extern void x_putc (int);
66extern long f__inode (char *, int *);
67extern void sig_die (char *, int);
68extern void f__fatal (int, char *);
69extern int t_runc (alist *);
70extern int f__nowreading (unit *), f__nowwriting (unit *);
71extern int fk_open (int, int, ftnint);
72extern int en_fio (void);
73extern void f_init (void);
74extern int (*f__donewrec) (void), t_putc (int), x_wSL (void);
75extern void b_char (char *, char *, ftnlen), g_char (char *, ftnlen, char *);
76extern int c_sfe (cilist *), z_rnew (void);
77extern int isatty (int);
78extern int err__fl (int, int, char *);
79extern int xrd_SL (void);
80extern int f__putbuf (int);
81extern int (*f__doend) (void);
82extern FILE *f__cf; /*current file */
83extern unit *f__curunit; /*current unit */
84extern unit f__units[];
85#define err(f,m,s) do {if(f) {f__init &= ~2; errno= m;} else f__fatal(m,s); return(m);} while(0)
86#define errfl(f,m,s) do {return err__fl((int)f,m,s);} while(0)
87
88/*Table sizes*/
89#define MXUNIT 100
90
91extern int f__recpos; /*position in current record */
92extern int f__cursor; /* offset to move to */
93extern int f__hiwater; /* so TL doesn't confuse us */
94
95#define WRITE 1
96#define READ 2
97#define SEQ 3
98#define DIR 4
99#define FMT 5
100#define UNF 6
101#define EXT 7
102#define INT 8
103
104#define buf_end(x) (x->_flag & _IONBF ? x->_ptr : x->_base + BUFSIZ)
Note: See TracBrowser for help on using the repository browser.