Coherent4.2.10/include/stdio.h

Compare this file to the similar file:
Show the results in this format:

/* (-lgl
 *	Coherent 386 release 4.2
 *	Copyright (c) 1982, 1993 by Mark Williams Company.
 *	All rights reserved. May not be copied without permission.
 *	For copying permission and licensing info, write licensing@mwc.com
 -lgl) */
/*
 * COHERENT Standard Input/Output library header.
 * ANSI C Standard, Section 4.9.
 */

#ifndef	__STDIO_H__
#define	__STDIO_H__

#include <common/feature.h>
#include <common/ccompat.h>
#include <common/__off.h>
#include <common/__valist.h>
#include <common/_size.h>
#include <common/_null.h>
#include <common/whence.h>

/* Macros. */
#define	BUFSIZ		512		/* default buffer size	*/
#define	EOF		(-1)		/* end of file		*/
#define	_EOFCHAR	26		/* ASCII EOF character	*/
#define	FILENAME_MAX	64		/* max filename length	*/
#define	FOPEN_MAX	_NFILE		/* max # of open files	*/
#define	_NFILE		60		/* number of FILEs	*/
#define	_NSTDFILE	3		/* number of predefined FILEs	*/
#define	L_ctermid	9		/* ctermid () length */
#define	L_tmpnam	64		/* tmpnam length	*/
#define	P_tmpdir	"/tmp"		/* default temporary directory */
#define	TMP_MAX		91		/* number of tmpnams	*/

/* Types. */
typedef long		fpos_t;		/* file position type	*/

/*
 * The order the first five FILE members corresponds to the order in iBCS2,
 * to allow a degree of binary compatibility.
 */
typedef struct	FILE {
	int		_cc;		/* character count	*/
	unsigned char	*_cp;		/* current character	*/
	struct _FILE2	*_f2p;		/* more info		*/
	char		_ff1;		/* flags		*/
	char		_fd;		/* file descriptor	*/
	char		_ff2;		/* more flags; see below */
	char		_mode;		/* mode			*/
}	FILE;
/* These additional members are not in struct FILE for compatibility reasons. */
typedef	struct	_FILE2 {
	int	(*_gt) __PROTO ((FILE *));	/* getc function	*/
	int	(*_pt) __PROTO ((int, FILE *));	/* putc function	*/
	unsigned char	*_bp;		/* start of buffer	*/
	unsigned char	*_dp;		/* start of data	*/
	unsigned char	*_ep;		/* end of buffer	*/
	char		*_nm;		/* temp file name	*/
	int		_uc;		/* ungot char		*/
}	_FILE2;

/* iBCS2 compatibility. */
#define	_cnt	_cc
#define	_ptr	_cp
#define	_base	_f2p->_dp
#define	_flag	_ff1
#define	_file	_fd

/*
 * Standard FILEs. Technically, these definitions violate the user name-space,
 * but these names are required for iBCS2.
 */
extern	FILE	_iob[_NSTDFILE];
extern	FILE	*_fp[_NFILE];
#define	stdin	(&_iob[0])
#define	stdout	(&_iob[1])
#define	stderr	(&_iob[2])

/* _IO[FLN]BF are used for setvbuf() type args. */
#define	_IOFBF		0x00		/* fully buffered	*/
#define	_IONBF		0x04		/* unbuffered		*/
#define	_IOLBF		0x40		/* line buffered	*/

/* Flags in _ff1, cf. iBCS2. */
#define	_FEOF		0x10		/* end of file		*/
#define	_FERR		0x20		/* error		*/

/* Non-iBCS2 flags in _ff1. */
#define	_FRONLY		0x01		/* read only		*/
#define	_FWONLY		0x02		/* write only		*/
#define	_FRW		0x80		/* read and write	*/

/* Flags in _ff2, not in iBCS2. */
#define	_FINUSE		0x01		/* in use		*/
#define	_FAPPND		0x02		/* append		*/
#define _FASCII		0x04		/* ASCII		*/
#define	_FDONTC		0x08		/* do not close		*/
#define	_FFREEB		0x10		/* free buffer when closed	*/
#define	_FUNGOT		0x80		/* ungotten char present	*/

/* Mode field values. */
#define	_MODE_FBUF	0x01		/* fully buffered	*/
#define	_MODE_LBUF	0x02		/* line buffered	*/
#define	_MODE_NBUF	0x04		/* unbuffered		*/
#define	_MODE_STR	0x08		/* string		*/
#define	_MODE_UNINIT	0x10		/* uninitialized	*/


/* Standard functions. */

__EXTERN_C_BEGIN__

int		remove		__PROTO ((__CONST__ char * _filename));
int		rename		__PROTO ((__CONST__ char * _old,
					  __CONST__ char * _new));
FILE	      *	tmpfile		__PROTO ((void));
char	      *	tmpnam		__PROTO ((char * _s));
int		fclose		__PROTO ((FILE * _stream));
int		fflush		__PROTO ((FILE * _stream));
FILE	      *	fopen		__PROTO ((__CONST__ char * _filename,
					  __CONST__ char * _mode));
FILE	      *	freopen		__PROTO ((__CONST__ char * _filename,
					  __CONST__ char * _mode,
					  FILE * _stream));
void		setbuf		__PROTO ((FILE * _stream, char * _buf));
int		setvbuf		__PROTO ((FILE * _stream, char * _buf,
					  int _mode, size_t _size));
int		fprintf		__PROTO ((FILE * _stream,
					  __CONST__ char * _format, ...))
				__PRINTF_LIKE (2, 3);
int		fscanf		__PROTO ((FILE * _stream,
					  __CONST__ char * _format, ...))
				__SCANF_LIKE (2, 3);
int		printf		__PROTO ((__CONST__ char * _format, ...))
				__PRINTF_LIKE (1, 2);
int		scanf		__PROTO ((__CONST__ char * _format, ...))
				__SCANF_LIKE (1, 2);
int		sprintf		__PROTO ((char * _s,
					  __CONST__ char * _format, ...))
				__PRINTF_LIKE (2, 3);
int		sscanf		__PROTO ((__CONST__ char * _s,
					  __CONST__ char * _format, ...))
				__SCANF_LIKE (2, 3);
int		vfprintf	__PROTO ((FILE * _stream,
					  __CONST__ char * _format,
					  __va_list arg));
int		vprintf		__PROTO ((__CONST__ char * _format,
					  __va_list arg));
int		vsprintf	__PROTO ((char * _s,
					  __CONST__ char * _format,
					  __va_list arg));
int		fgetc		__PROTO ((FILE * _stream));
char	      *	fgets		__PROTO ((char * _s, int _n, FILE * _stream));
int		fputc		__PROTO ((int _c, FILE * _stream));
int		fputs		__PROTO ((__CONST__ char * _s,
					  FILE * _stream));
int		getc		__PROTO ((FILE * stream));
int		getchar		__PROTO ((void));
char	      *	gets		__PROTO ((char * _s));
int		putc		__PROTO ((int _c, FILE * _stream));
int		putchar		__PROTO ((int _c));
int		puts		__PROTO ((__CONST__ char * _s));
int		ungetc		__PROTO ((int _c, FILE * _stream));
size_t		fread		__PROTO ((__VOID__ * _ptr, size_t _size,
					  size_t _nmemb, FILE * _stream));
size_t		fwrite		__PROTO ((__CONST__ __VOID__ * _ptr,
					  size_t _size, size_t _nmemb,
					  FILE * _stream));
int		fgetpos		__PROTO ((FILE * _stream, fpos_t * _pos));
int		fseek		__PROTO ((FILE * _stream, __off_t _offset,
					  int whence));
int		fsetpos		__PROTO ((FILE * _stream,
					  __CONST__ fpos_t * pos));
__off_t		ftell		__PROTO ((FILE * _stream));
void		rewind		__PROTO ((FILE * _stream));
void		clearerr	__PROTO ((void));
int		feof		__PROTO ((FILE * _stream));
int		ferror		__PROTO ((FILE * _stream));
void		perror		__PROTO ((__CONST__ char * _s));

char	      *	ctermid		__PROTO ((char * _s));

#if	! _STDC_SOURCE

FILE	      *	fdopen		__PROTO ((int _fildes,
					  __CONST__ char * _type));
int		fileno		__PROTO ((FILE * _stream));

#if	_POSIX_C_SOURCE < 2

FILE	      *	popen		__PROTO ((__CONST__ char * _command,
					  __CONST__ char * _mode));
int		pclose		__PROTO ((FILE * _stream));

#endif	/* _POSIX_C_SOURCE < 2 */
#endif	/* ! _STDC_SOURCE */

__EXTERN_C_END__

/* Macros covering standard functions. */
#define	clearerr(fp)	((fp)->_ff1 &= ~(_FERR|_FEOF))
#define	feof(fp)	((fp)->_ff1 & _FEOF)
#define	ferror(fp)	((fp)->_ff1 & _FERR)
#define	getc(fp)	(--(fp)->_cc<0 ? ++(fp)->_cc,(*(fp)->_f2p->_gt)((fp)) \
				       : *(fp)->_cp++)
#define	getchar()	getc(stdin)
#define	putc(c,fp)	(--(fp)->_cc<0 ? ++(fp)->_cc,(*(fp)->_f2p->_pt)((c),(fp)) \
				       : (*(fp)->_cp++=(c)))
#define	putchar(c)	putc((c), stdout)

/* Other macros, non-ANSI. */
#define	fileno(fp)	((fp)->_fd)

#endif	/* ! defined (__STDIO_H__) */