255 lines
6 KiB
C
255 lines
6 KiB
C
/***
|
|
*stdio.h - definitions/declarations for standard I/O routines
|
|
*
|
|
* Copyright (c) 1985-1990, Microsoft Corporation. All rights reserved.
|
|
*
|
|
*Purpose:
|
|
* This file defines the structures, values, macros, and functions
|
|
* used by the level 2 I/O ("standard I/O") routines.
|
|
* [ANSI/System V]
|
|
*
|
|
****/
|
|
|
|
#if defined(_DLL) && !defined(_MT)
|
|
#error Cannot define _DLL without _MT
|
|
#endif
|
|
|
|
#ifdef _MT
|
|
#define _FAR_ _far
|
|
#else
|
|
#define _FAR_
|
|
#endif
|
|
|
|
#ifndef _SIZE_T_DEFINED
|
|
typedef unsigned int size_t;
|
|
#define _SIZE_T_DEFINED
|
|
#endif
|
|
|
|
#ifndef _VA_LIST_DEFINED
|
|
typedef char _FAR_ *va_list;
|
|
#define _VA_LIST_DEFINED
|
|
#endif
|
|
|
|
/* buffered I/O macros */
|
|
|
|
#define BUFSIZ 512
|
|
#ifdef _MT
|
|
#define _NFILE 40
|
|
#else
|
|
#define _NFILE 20
|
|
#endif
|
|
#define EOF (-1)
|
|
|
|
#ifndef _FILE_DEFINED
|
|
struct _iobuf {
|
|
char _FAR_ *_ptr;
|
|
int _cnt;
|
|
char _FAR_ *_base;
|
|
char _flag;
|
|
char _file;
|
|
};
|
|
typedef struct _iobuf FILE;
|
|
#define _FILE_DEFINED
|
|
#endif
|
|
|
|
|
|
/* P_tmpnam: Directory where temporary files may be created.
|
|
* L_tmpnam size = size of P_tmpdir
|
|
* + 1 (in case P_tmpdir does not end in "\\")
|
|
* + 6 (for the temp number string)
|
|
* + 1 (for the null terminator)
|
|
*/
|
|
|
|
#define P_tmpdir "\\"
|
|
#define L_tmpnam sizeof(P_tmpdir)+8
|
|
|
|
|
|
/* fseek constants */
|
|
|
|
#define SEEK_CUR 1
|
|
#define SEEK_END 2
|
|
#define SEEK_SET 0
|
|
|
|
|
|
/* minimum guaranteed filename length, open file count, and unique
|
|
* tmpnam filenames.
|
|
*/
|
|
|
|
#define FILENAME_MAX 63
|
|
#define FOPEN_MAX 20
|
|
#define SYS_OPEN 20
|
|
#define TMP_MAX 32767
|
|
|
|
|
|
/* define NULL pointer value */
|
|
|
|
#ifndef NULL
|
|
#if (_MSC_VER >= 600)
|
|
#define NULL ((void *)0)
|
|
#elif (defined(M_I86SM) || defined(M_I86MM))
|
|
#define NULL 0
|
|
#else
|
|
#define NULL 0L
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/* declare _iob[] array */
|
|
|
|
#ifndef _STDIO_DEFINED
|
|
#ifdef _DLL
|
|
extern FILE _FAR_ _cdecl _iob[];
|
|
#else
|
|
extern FILE _near _cdecl _iob[];
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/* define file position type */
|
|
|
|
#ifndef _FPOS_T_DEFINED
|
|
typedef long fpos_t;
|
|
#define _FPOS_T_DEFINED
|
|
#endif
|
|
|
|
|
|
/* standard file pointers */
|
|
|
|
#ifndef _WINDOWS
|
|
#define stdin (&_iob[0])
|
|
#define stdout (&_iob[1])
|
|
#define stderr (&_iob[2])
|
|
#define stdaux (&_iob[3])
|
|
#define stdprn (&_iob[4])
|
|
#endif
|
|
|
|
|
|
#define _IOREAD 0x01
|
|
#define _IOWRT 0x02
|
|
|
|
#define _IOFBF 0x0
|
|
#define _IOLBF 0x40
|
|
#define _IONBF 0x04
|
|
|
|
#define _IOMYBUF 0x08
|
|
#define _IOEOF 0x10
|
|
#define _IOERR 0x20
|
|
#define _IOSTRG 0x40
|
|
#define _IORW 0x80
|
|
|
|
|
|
/* function prototypes */
|
|
|
|
#ifndef _STDIO_DEFINED
|
|
int _FAR_ _cdecl _filbuf(FILE _FAR_ *);
|
|
int _FAR_ _cdecl _flsbuf(int, FILE _FAR_ *);
|
|
FILE _FAR_ * _FAR_ _cdecl _fsopen(const char _FAR_ *,
|
|
const char _FAR_ *, int);
|
|
void _FAR_ _cdecl clearerr(FILE _FAR_ *);
|
|
int _FAR_ _cdecl fclose(FILE _FAR_ *);
|
|
int _FAR_ _cdecl fcloseall(void);
|
|
FILE _FAR_ * _FAR_ _cdecl fdopen(int, const char _FAR_ *);
|
|
int _FAR_ _cdecl feof(FILE _FAR_ *);
|
|
int _FAR_ _cdecl ferror(FILE _FAR_ *);
|
|
int _FAR_ _cdecl fflush(FILE _FAR_ *);
|
|
int _FAR_ _cdecl fgetc(FILE _FAR_ *);
|
|
#ifndef _WINDOWS
|
|
int _FAR_ _cdecl fgetchar(void);
|
|
#endif
|
|
int _FAR_ _cdecl fgetpos(FILE _FAR_ *, fpos_t _FAR_ *);
|
|
char _FAR_ * _FAR_ _cdecl fgets(char _FAR_ *, int, FILE _FAR_ *);
|
|
int _FAR_ _cdecl fileno(FILE _FAR_ *);
|
|
int _FAR_ _cdecl flushall(void);
|
|
FILE _FAR_ * _FAR_ _cdecl fopen(const char _FAR_ *,
|
|
const char _FAR_ *);
|
|
#ifndef _WINDLL
|
|
int _FAR_ _cdecl fprintf(FILE _FAR_ *, const char _FAR_ *, ...);
|
|
#endif
|
|
int _FAR_ _cdecl fputc(int, FILE _FAR_ *);
|
|
#ifndef _WINDOWS
|
|
int _FAR_ _cdecl fputchar(int);
|
|
#endif
|
|
int _FAR_ _cdecl fputs(const char _FAR_ *, FILE _FAR_ *);
|
|
size_t _FAR_ _cdecl fread(void _FAR_ *, size_t, size_t, FILE _FAR_ *);
|
|
FILE _FAR_ * _FAR_ _cdecl freopen(const char _FAR_ *,
|
|
const char _FAR_ *, FILE _FAR_ *);
|
|
#ifndef _WINDLL
|
|
int _FAR_ _cdecl fscanf(FILE _FAR_ *, const char _FAR_ *, ...);
|
|
#endif
|
|
int _FAR_ _cdecl fsetpos(FILE _FAR_ *, const fpos_t _FAR_ *);
|
|
int _FAR_ _cdecl fseek(FILE _FAR_ *, long, int);
|
|
long _FAR_ _cdecl ftell(FILE _FAR_ *);
|
|
size_t _FAR_ _cdecl fwrite(const void _FAR_ *, size_t, size_t,
|
|
FILE _FAR_ *);
|
|
int _FAR_ _cdecl getc(FILE _FAR_ *);
|
|
#ifndef _WINDOWS
|
|
int _FAR_ _cdecl getchar(void);
|
|
char _FAR_ * _FAR_ _cdecl gets(char _FAR_ *);
|
|
#endif
|
|
int _FAR_ _cdecl getw(FILE _FAR_ *);
|
|
#ifndef _WINDOWS
|
|
void _FAR_ _cdecl perror(const char _FAR_ *);
|
|
#endif
|
|
int _FAR_ _cdecl _pclose(FILE _FAR_ *);
|
|
FILE _FAR_ * _FAR_ _cdecl _popen(const char _FAR_ *,
|
|
const char _FAR_ *);
|
|
#ifndef _WINDOWS
|
|
int _FAR_ _cdecl printf(const char _FAR_ *, ...);
|
|
#endif
|
|
int _FAR_ _cdecl putc(int, FILE _FAR_ *);
|
|
#ifndef _WINDOWS
|
|
int _FAR_ _cdecl putchar(int);
|
|
int _FAR_ _cdecl puts(const char _FAR_ *);
|
|
#endif
|
|
int _FAR_ _cdecl putw(int, FILE _FAR_ *);
|
|
int _FAR_ _cdecl remove(const char _FAR_ *);
|
|
int _FAR_ _cdecl rename(const char _FAR_ *, const char _FAR_ *);
|
|
void _FAR_ _cdecl rewind(FILE _FAR_ *);
|
|
int _FAR_ _cdecl rmtmp(void);
|
|
#ifndef _WINDOWS
|
|
int _FAR_ _cdecl scanf(const char _FAR_ *, ...);
|
|
#endif
|
|
void _FAR_ _cdecl setbuf(FILE _FAR_ *, char _FAR_ *);
|
|
int _FAR_ _cdecl setvbuf(FILE _FAR_ *, char _FAR_ *, int, size_t);
|
|
#ifndef _WINDLL
|
|
int _FAR_ _cdecl sprintf(char _FAR_ *, const char _FAR_ *, ...);
|
|
int _FAR_ _cdecl sscanf(const char _FAR_ *, const char _FAR_ *, ...);
|
|
#endif
|
|
char _FAR_ * _FAR_ _cdecl tempnam(char _FAR_ *, char _FAR_ *);
|
|
FILE _FAR_ * _FAR_ _cdecl tmpfile(void);
|
|
char _FAR_ * _FAR_ _cdecl tmpnam(char _FAR_ *);
|
|
int _FAR_ _cdecl ungetc(int, FILE _FAR_ *);
|
|
int _FAR_ _cdecl unlink(const char _FAR_ *);
|
|
#ifndef _WINDLL
|
|
int _FAR_ _cdecl vfprintf(FILE _FAR_ *, const char _FAR_ *, va_list);
|
|
#endif
|
|
#ifndef _WINDOWS
|
|
int _FAR_ _cdecl vprintf(const char _FAR_ *, va_list);
|
|
#endif
|
|
#ifndef _WINDLL
|
|
int _FAR_ _cdecl vsprintf(char _FAR_ *, const char _FAR_ *, va_list);
|
|
#endif
|
|
#define _STDIO_DEFINED
|
|
#endif
|
|
|
|
/* macro definitions */
|
|
|
|
#define feof(_stream) ((_stream)->_flag & _IOEOF)
|
|
#define ferror(_stream) ((_stream)->_flag & _IOERR)
|
|
#define fileno(_stream) ((int)(unsigned char)(_stream)->_file)
|
|
#define getc(_stream) (--(_stream)->_cnt >= 0 ? 0xff & *(_stream)->_ptr++ \
|
|
: _filbuf(_stream))
|
|
#define putc(_c,_stream) (--(_stream)->_cnt >= 0 \
|
|
? 0xff & (*(_stream)->_ptr++ = (char)(_c)) : _flsbuf((_c),(_stream)))
|
|
#ifndef _WINDOWS
|
|
#define getchar() getc(stdin)
|
|
#define putchar(_c) putc((_c),stdout)
|
|
#endif
|
|
|
|
#ifdef _MT
|
|
#undef getc
|
|
#undef putc
|
|
#undef getchar
|
|
#undef putchar
|
|
#endif
|