/usr/lib/iraf/unix/hlib/libc/stdio.h is in iraf-dev 2.16.1+2018.03.10-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | /*
* U_STDIO.H -- C defines used to emulate the UNIX standard i/o package upon
* IRAF file i/o. These definitions are portable, but highly dependent on
* the guts of IRAF FIO.
*/
#ifndef D_libc
#ifndef import_libc
#include "libc.h"
#endif
#endif
#define BUFSIZ SZ_DEFIOBUF
#define _NFILE FIO_MAXFD
#define FILE struct _iobuf
# ifndef NULL
#define NULL 0
# endif
# ifndef EOF
#define EOF (-1)
# endif
/* Filler space is defined here to reduce clutter in the struct def below.
*/
#define _F1 _filler1[_NFILE-1]
#define _F2 _filler2[_NFILE-1]
#define _F3 _filler3[_NFILE-1]
#define _F4 _filler4[_NFILE-1]
#define _F5 _filler5[_NFILE-1]
#define _F6 _filler6[_NFILE-1]
#define _F7 _filler7[_NFILE-1]
/* The _iobuf structure is the C version of the FIO common /fiocom/, which
* contains all the FIO buffer and i/o pointers. Each structure field is
* maintained in the common as an array of length _NFILE, hence in terms of
* C the structures are interleaved. The file pointers are indices into
* the array Memc, an array of XCHAR.
*/
struct _iobuf {
XLONG _boffset, _F1; /* XCHAR file offset of buffer */
XINT _bufptr, _F2; /* buffer pointer */
XINT _buftop, _F3; /* pointer to top of buffer + 1 */
XINT _iop, _F4; /* pointer to next XCHAR */
XINT _itop, _F5; /* call filbuf when _iop >= */
XINT _otop, _F6; /* call flsbuf when _iop >= */
XINT _fiodes, _F7; /* FIO file descriptor */
XINT _fflags; /* bit flags */
};
extern XINT FIOCOM[]; /* the FIO common */
#define _FFLUSHNL 01 /* flush buffer on newline */
#define _FREAD 02 /* read perm on file */
#define _FWRITE 04 /* read perm on file */
#define _FEOF 010 /* file positioned to EOF */
#define _FERR 020 /* i/o error on file */
#define _FKEEP 040 /* keep file open at exit */
#define _FFLUSH 0100 /* write to device on newline */
#define _FRAW 0200 /* raw input mode */
#define _FNDELAY 0400 /* nonblocking i/o */
#define _FPUSH 01000 /* data is pushed back */
#define _FIPC 02000 /* file is an IPC channel */
/* Convert FILE pointers to and from FIO integer file descriptors.
*/
#define FDTOFP(fd) ((FILE *)(&FIOCOM[(fd)-1]))
#define FPTOFD(fp) ((XINT)((XINT *)(fp) - FIOCOM + 1))
#define stdin (FDTOFP(3))
#define stdout (FDTOFP(4))
#define stderr (FDTOFP(5))
/* I/O macro defines. I/O is assumed to be sequential, i.e., we do not check
* for _iop < _bufptr. This is consistent with UNIX usage. The getc and putc
* macros are quite efficient despite their complex appearance.
*/
#define getchar() fgetc(stdin)
#define getc(fp) \
(((fp)->_iop >= (fp)->_itop) ? c_filbuf((fp)) : Memc[(fp)->_iop++] & 0377)
#define putchar(ch) fputc((ch),stdout)
#define putc(ch,fp) \
(((fp)->_iop >= (fp)->_otop || ((ch) == '\n' && (fp)->_fflags&_FFLUSH)) ? \
c_flsbuf((unsigned)(ch),(fp)) : ((int)(Memc[(fp)->_iop++] = (unsigned)(ch))))
#define fileno(fp) (FPTOFD((fp)))
#define feof(fp) ((fp)->_fflags & _FEOF)
#define ferror(fp) ((fp)->_fflags & _FERR)
#define clearerr(fp) ((fp)->_fflags &= ~_FERR)
FILE *fopen();
FILE *fdopen();
char *fgets();
char *gets();
#define D_stdio
|