- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
(extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
BT game source (never mixed into CODE/). Round 1-3 state:
* 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
(BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
since 1996.
* BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
its binary-recorded line 400 exactly.
* BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
(Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
TeamScore=12 flagged [T4]).
* MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
(VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
the period compiler is the drift detector).
* Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
(per-TU verification sweep under authentic OPT.MAK flags).
* README: corrected roadmap - MECH.HPP is the capstone grown with the mech
TU reconstructions; BTREG.CPP green = the header-family milestone.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
401 lines
15 KiB
C++
401 lines
15 KiB
C++
/* stdio.h
|
|
|
|
Definitions for stream input/output.
|
|
|
|
*/
|
|
|
|
/*
|
|
* C/C++ Run Time Library - Version 6.5
|
|
*
|
|
* Copyright (c) 1987, 1994 by Borland International
|
|
* All Rights Reserved.
|
|
*
|
|
*/
|
|
|
|
#ifndef __STDIO_H
|
|
#define __STDIO_H
|
|
|
|
#if !defined(___DEFS_H)
|
|
#include <_defs.h>
|
|
#endif
|
|
|
|
#if !defined(___NFILE_H)
|
|
#include <_nfile.h>
|
|
#endif
|
|
|
|
#ifndef NULL
|
|
#include <_null.h>
|
|
#endif
|
|
|
|
|
|
#if !defined(RC_INVOKED)
|
|
|
|
#if defined(__STDC__)
|
|
#pragma warn -nak
|
|
#endif
|
|
|
|
#pragma option -a-
|
|
|
|
#endif /* !RC_INVOKED */
|
|
|
|
|
|
#ifndef _SIZE_T
|
|
#define _SIZE_T
|
|
typedef unsigned size_t;
|
|
#endif
|
|
|
|
/* Definition of the file position type
|
|
*/
|
|
typedef long fpos_t;
|
|
|
|
/* An external reference to _floatconvert (using #pragma extref _floatconvert)
|
|
* forces floating point format conversions to be linked.
|
|
*/
|
|
extern int _floatconvert;
|
|
|
|
/* Bufferisation type to be used as 3rd argument for "setvbuf" function
|
|
*/
|
|
#define _IOFBF 0
|
|
#define _IOLBF 1
|
|
#define _IONBF 2
|
|
|
|
/* "flags" bits definitions
|
|
*/
|
|
#define _F_RDWR 0x0003 /* Read/write flag */
|
|
#define _F_READ 0x0001 /* Read only file */
|
|
#define _F_WRIT 0x0002 /* Write only file */
|
|
#define _F_BUF 0x0004 /* Malloc'ed Buffer data */
|
|
#define _F_LBUF 0x0008 /* line-buffered file */
|
|
#define _F_ERR 0x0010 /* Error indicator */
|
|
#define _F_EOF 0x0020 /* EOF indicator */
|
|
#define _F_BIN 0x0040 /* Binary file indicator */
|
|
#define _F_IN 0x0080 /* Data is incoming */
|
|
#define _F_OUT 0x0100 /* Data is outgoing */
|
|
#define _F_TERM 0x0200 /* File is a terminal */
|
|
|
|
/* End-of-file constant definition
|
|
*/
|
|
#define EOF (-1) /* End of file indicator */
|
|
|
|
/* Default buffer size use by "setbuf" function
|
|
*/
|
|
#define BUFSIZ 512 /* Buffer size for stdio */
|
|
|
|
/* Size of an arry large enough to hold a temporary file name string
|
|
*/
|
|
#define L_ctermid 5 /* CON: plus null byte */
|
|
#define P_tmpdir "" /* temporary directory */
|
|
#define L_tmpnam 13 /* tmpnam buffer size */
|
|
|
|
/* Constants to be used as 3rd argument for "fseek" function
|
|
*/
|
|
#define SEEK_CUR 1
|
|
#define SEEK_END 2
|
|
#define SEEK_SET 0
|
|
|
|
/* Number of unique file names that shall be generated by "tmpnam" function
|
|
*/
|
|
#define TMP_MAX 0xFFFF
|
|
|
|
|
|
#if !defined(__FLAT__)
|
|
|
|
/* Definition of the control structure for streams
|
|
*/
|
|
typedef struct {
|
|
int level; /* fill/empty level of buffer */
|
|
unsigned flags; /* File status flags */
|
|
char fd; /* File descriptor */
|
|
unsigned char hold; /* Ungetc char if no buffer */
|
|
int bsize; /* Buffer size */
|
|
unsigned char _FAR *buffer; /* Data transfer buffer */
|
|
unsigned char _FAR *curp; /* Current active pointer */
|
|
unsigned istemp; /* Temporary file indicator */
|
|
short token; /* Used for validity checking */
|
|
} FILE; /* This is the FILE object */
|
|
|
|
/* Number of files that can be open simultaneously
|
|
*/
|
|
#if defined(__STDC__)
|
|
#define FOPEN_MAX (_NFILE_ - 2) /* (_NFILE_ - stdaux & stdprn) */
|
|
#else
|
|
#define FOPEN_MAX (_NFILE_) /* Able to have 20 files */
|
|
#define SYS_OPEN (_NFILE_)
|
|
#endif
|
|
|
|
#define FILENAME_MAX 80
|
|
|
|
/* Standard I/O predefined streams
|
|
*/
|
|
|
|
#if !defined( _RTLDLL )
|
|
extern FILE _RTLENTRY _streams[];
|
|
extern unsigned _RTLENTRY _nfile;
|
|
|
|
#define stdin (&_streams[0])
|
|
#define stdout (&_streams[1])
|
|
#define stderr (&_streams[2])
|
|
#define stdaux (&_streams[3])
|
|
#define stdprn (&_streams[4])
|
|
|
|
#else
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
FILE far * far _RTLENTRY __getStream(int);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#define stdin __getStream(0)
|
|
#define stdout __getStream(1)
|
|
#define stderr __getStream(2)
|
|
|
|
#endif /* _RTLDLL */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
void _RTLENTRY clearerr(FILE _FAR *__stream);
|
|
int _RTLENTRY _EXPFUNC fclose(FILE _FAR *__stream);
|
|
int _RTLENTRY _EXPFUNC fflush(FILE _FAR *__stream);
|
|
int _RTLENTRY _EXPFUNC fgetc(FILE _FAR *__stream);
|
|
int _RTLENTRY fgetpos(FILE _FAR *__stream, fpos_t _FAR *__pos);
|
|
char _FAR *_RTLENTRY _EXPFUNC fgets(char _FAR *__s, int __n, FILE _FAR *__stream);
|
|
FILE _FAR *_RTLENTRY _EXPFUNC fopen(const char _FAR *__path, const char _FAR *__mode);
|
|
int _RTLENTRY _EXPFUNC fprintf(FILE _FAR *__stream, const char _FAR *__format, ...);
|
|
int _RTLENTRY _EXPFUNC fputc(int __c, FILE _FAR *__stream);
|
|
int _RTLENTRY _EXPFUNC fputs(const char _FAR *__s, FILE _FAR *__stream);
|
|
size_t _RTLENTRY _EXPFUNC fread(void _FAR *__ptr, size_t __size, size_t __n,
|
|
FILE _FAR *__stream);
|
|
FILE _FAR *_RTLENTRY _EXPFUNC freopen(const char _FAR *__path, const char _FAR *__mode,
|
|
FILE _FAR *__stream);
|
|
int _RTLENTRY _EXPFUNC fscanf(FILE _FAR *__stream, const char _FAR *__format, ...);
|
|
int _RTLENTRY _EXPFUNC fseek(FILE _FAR *__stream, long __offset, int __whence);
|
|
int _RTLENTRY fsetpos(FILE _FAR *__stream, const fpos_t _FAR *__pos);
|
|
long _RTLENTRY _EXPFUNC ftell(FILE _FAR *__stream);
|
|
size_t _RTLENTRY _EXPFUNC fwrite(const void _FAR *__ptr, size_t __size, size_t __n,
|
|
FILE _FAR *__stream);
|
|
char _FAR *_RTLENTRY gets(char _FAR *__s);
|
|
void _RTLENTRY perror(const char _FAR *__s);
|
|
int _RTLENTRY printf(const char _FAR *__format, ...);
|
|
int _RTLENTRY puts(const char _FAR *__s);
|
|
int _RTLENTRYF remove(const char _FAR *__path);
|
|
int _RTLENTRYF _EXPFUNC rename(const char _FAR *__oldname,const char _FAR *__newname);
|
|
void _RTLENTRY _EXPFUNC rewind(FILE _FAR *__stream);
|
|
int _RTLENTRY scanf(const char _FAR *__format, ...);
|
|
void _RTLENTRY setbuf(FILE _FAR *__stream, char _FAR *__buf);
|
|
int _RTLENTRY _EXPFUNC setvbuf(FILE _FAR *__stream, char _FAR *__buf,
|
|
int __type, size_t __size);
|
|
int _RTLENTRY _EXPFUNC sprintf(char _FAR *__buffer, const char _FAR *__format, ...);
|
|
int _RTLENTRY _EXPFUNC sscanf(const char _FAR *__buffer,
|
|
const char _FAR *__format, ...);
|
|
char _FAR *_RTLENTRY _EXPFUNC strerror(int __errnum);
|
|
FILE _FAR *_RTLENTRY _EXPFUNC tmpfile(void);
|
|
char _FAR *_RTLENTRY _EXPFUNC tmpnam(char _FAR *__s);
|
|
int _RTLENTRY _EXPFUNC ungetc(int __c, FILE _FAR *__stream);
|
|
int _RTLENTRY _EXPFUNC vfprintf(FILE _FAR *__stream, const char _FAR *__format,
|
|
void _FAR *__arglist);
|
|
int _RTLENTRY _EXPFUNC vfscanf(FILE _FAR *__stream, const char _FAR *__format,
|
|
void _FAR *__arglist);
|
|
int _RTLENTRYF vprintf(const char _FAR *__format, void _FAR *__arglist);
|
|
int _RTLENTRY vscanf(const char _FAR *__format, void _FAR *__arglist);
|
|
int _RTLENTRY _EXPFUNC vsprintf(char _FAR *__buffer, const char _FAR *__format,
|
|
void _FAR *__arglist);
|
|
int _RTLENTRY _EXPFUNC vsscanf(const char _FAR *__buffer, const char _FAR *__format,
|
|
void _FAR *__arglist);
|
|
int _RTLENTRYF unlink(const char _FAR *__path);
|
|
int _RTLENTRY getc(FILE _FAR *__fp);
|
|
|
|
int _RTLENTRY getchar(void);
|
|
int _RTLENTRY putchar(const int __c);
|
|
|
|
int _RTLENTRY putc(const int __c, FILE _FAR *__fp);
|
|
int _RTLENTRY feof(FILE _FAR *__fp);
|
|
int _RTLENTRY ferror(FILE _FAR *__fp);
|
|
|
|
int _RTLENTRY _EXPFUNC fcloseall(void);
|
|
FILE _FAR *_RTLENTRY _EXPFUNC fdopen(int __handle, char _FAR *__type);
|
|
int _RTLENTRY _EXPFUNC fgetchar(void);
|
|
int _RTLENTRY _EXPFUNC flushall(void);
|
|
int _RTLENTRY _EXPFUNC fputchar(int __c);
|
|
FILE _FAR * _RTLENTRY _fsopen (const char _FAR *__path, const char _FAR *__mode,
|
|
int __shflag);
|
|
int _RTLENTRY getw(FILE _FAR *__stream);
|
|
int _RTLENTRY putw(int __w, FILE _FAR *__stream);
|
|
int _RTLENTRY rmtmp(void);
|
|
char _FAR * _RTLENTRY _EXPFUNC _strerror(const char _FAR *__s);
|
|
char _FAR * _RTLENTRY _EXPFUNC tempnam(char _FAR *__dir, char _FAR *__pfx);
|
|
|
|
#define fileno(f) ((f)->fd)
|
|
|
|
int _RTLENTRY _EXPFUNC _fgetc(FILE _FAR *__stream); /* used by getc() macro */
|
|
int _RTLENTRY _EXPFUNC _fputc(char __c, FILE _FAR *__stream); /* used by putc() macro */
|
|
void _RTLENTRY _InitEasyWin(void); /* Initialization call for Easy Windows */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#else /* defined __FLAT__ */
|
|
|
|
/* Definition of the control structure for streams
|
|
*/
|
|
typedef struct {
|
|
unsigned char *curp; /* Current active pointer */
|
|
unsigned char *buffer; /* Data transfer buffer */
|
|
int level; /* fill/empty level of buffer */
|
|
int bsize; /* Buffer size */
|
|
unsigned short istemp; /* Temporary file indicator */
|
|
unsigned short flags; /* File status flags */
|
|
short token; /* Used for validity checking */
|
|
char fd; /* File descriptor */
|
|
unsigned char hold; /* Ungetc char if no buffer */
|
|
} FILE; /* This is the FILE object */
|
|
|
|
/* Number of files that can be open simultaneously
|
|
*/
|
|
#if __STDC__
|
|
#define FOPEN_MAX (_NFILE_)
|
|
#else
|
|
#define FOPEN_MAX (_NFILE_)
|
|
#define SYS_OPEN (_NFILE_)
|
|
#endif
|
|
|
|
#define FILENAME_MAX 260
|
|
|
|
/* Standard I/O predefined streams
|
|
*/
|
|
extern FILE _RTLENTRY _EXPDATA _streams[];
|
|
extern unsigned _RTLENTRY _EXPDATA _nfile;
|
|
|
|
#define stdin (&_streams[0])
|
|
#define stdout (&_streams[1])
|
|
#define stderr (&_streams[2])
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
void _RTLENTRY _EXPFUNC clearerr(FILE * __stream);
|
|
int _RTLENTRY _EXPFUNC fclose(FILE * __stream);
|
|
int _RTLENTRY _EXPFUNC fflush(FILE * __stream);
|
|
int _RTLENTRY _EXPFUNC fgetc(FILE * __stream);
|
|
int _RTLENTRY _EXPFUNC fgetpos(FILE * __stream, fpos_t*__pos);
|
|
char * _RTLENTRY _EXPFUNC fgets(char * __s, int __n, FILE * __stream);
|
|
FILE * _RTLENTRY _EXPFUNC fopen(const char * __path, const char * __mode);
|
|
int _RTLENTRY _EXPFUNC fprintf(FILE * __stream, const char * __format, ...);
|
|
int _RTLENTRY _EXPFUNC fputc(int __c, FILE * __stream);
|
|
int _RTLENTRY _EXPFUNC fputs(const char * __s, FILE * __stream);
|
|
size_t _RTLENTRY _EXPFUNC fread(void * __ptr, size_t __size, size_t __n,
|
|
FILE * __stream);
|
|
FILE * _RTLENTRY _EXPFUNC freopen(const char * __path, const char * __mode,
|
|
FILE * __stream);
|
|
int _RTLENTRY _EXPFUNC fscanf(FILE * __stream, const char * __format, ...);
|
|
int _RTLENTRY _EXPFUNC fseek(FILE * __stream, long __offset, int __whence);
|
|
int _RTLENTRY _EXPFUNC fsetpos(FILE * __stream, const fpos_t*__pos);
|
|
long _RTLENTRY _EXPFUNC ftell(FILE * __stream);
|
|
size_t _RTLENTRY _EXPFUNC fwrite(const void * __ptr, size_t __size, size_t __n,
|
|
FILE * __stream);
|
|
char * _RTLENTRY _EXPFUNC gets(char * __s);
|
|
|
|
#if defined(__OS2__) || defined(__WIN32__)
|
|
int _RTLENTRY _EXPFUNC _pclose(FILE *__stream);
|
|
#endif
|
|
|
|
void _RTLENTRY _EXPFUNC perror(const char * __s);
|
|
|
|
#if defined(__OS2__) || defined(__WIN32__)
|
|
FILE * _RTLENTRY _EXPFUNC _popen(const char * __command, const char * __mode);
|
|
#endif
|
|
|
|
int _RTLENTRY _EXPFUNC printf(const char * __format, ...);
|
|
int _RTLENTRY _EXPFUNC puts(const char * __s);
|
|
|
|
int _RTLENTRYF _EXPFUNC remove(const char * __path);
|
|
int _RTLENTRYF _EXPFUNC rename(const char * __oldname,const char * __newname);
|
|
void _RTLENTRY _EXPFUNC rewind(FILE * __stream);
|
|
int _RTLENTRY _EXPFUNC scanf(const char * __format, ...);
|
|
void _RTLENTRY _EXPFUNC setbuf(FILE * __stream, char * __buf);
|
|
int _RTLENTRY _EXPFUNC setvbuf(FILE * __stream, char * __buf,
|
|
int __type, size_t __size);
|
|
int _RTLENTRY _EXPFUNC sprintf(char * __buffer, const char * __format, ...);
|
|
int _RTLENTRY _EXPFUNC sscanf(const char * __buffer,
|
|
const char * __format, ...);
|
|
char * _RTLENTRY _EXPFUNC strerror(int __errnum);
|
|
FILE * _RTLENTRY _EXPFUNC tmpfile(void);
|
|
char * _RTLENTRY _EXPFUNC tmpnam(char * __s);
|
|
int _RTLENTRY _EXPFUNC ungetc(int __c, FILE * __stream);
|
|
int _RTLENTRY _EXPFUNC vfprintf(FILE * __stream, const char * __format,
|
|
void * __arglist);
|
|
int _RTLENTRY _EXPFUNC vfscanf(FILE * __stream, const char * __format,
|
|
void * __arglist);
|
|
int _RTLENTRYF _EXPFUNC vprintf(const char * __format, void * __arglist);
|
|
int _RTLENTRY _EXPFUNC vscanf(const char * __format, void * __arglist);
|
|
int _RTLENTRY _EXPFUNC vsprintf(char * __buffer, const char * __format,
|
|
void * __arglist);
|
|
int _RTLENTRY _EXPFUNC vsscanf(const char * __buffer, const char * __format,
|
|
void * __arglist);
|
|
int _RTLENTRYF _EXPFUNC unlink(const char * __path);
|
|
|
|
int _RTLENTRY _EXPFUNC getc(FILE * __fp);
|
|
int _RTLENTRY _EXPFUNC getchar(void);
|
|
int _RTLENTRY _EXPFUNC putchar(const int __c);
|
|
int _RTLENTRY _EXPFUNC putc(const int __c, FILE * __fp);
|
|
int _RTLENTRY _EXPFUNC feof(FILE * __fp);
|
|
int _RTLENTRY _EXPFUNC ferror(FILE * __fp);
|
|
|
|
int _RTLENTRY _EXPFUNC fcloseall(void);
|
|
FILE * _RTLENTRY _EXPFUNC fdopen(int __handle, char * __type);
|
|
int _RTLENTRY _EXPFUNC fgetchar(void);
|
|
int _RTLENTRY _EXPFUNC flushall(void);
|
|
int _RTLENTRY _EXPFUNC fputchar(int __c);
|
|
FILE * _RTLENTRY _EXPFUNC _fsopen (const char * __path, const char * __mode,
|
|
int __shflag);
|
|
int _RTLENTRY _EXPFUNC getw(FILE * __stream);
|
|
int _RTLENTRY _EXPFUNC putw(int __w, FILE * __stream);
|
|
int _RTLENTRY _EXPFUNC rmtmp(void);
|
|
char * _RTLENTRY _EXPFUNC _strerror(const char * __s);
|
|
char * _RTLENTRY _EXPFUNC tempnam(char * __dir, char * __pfx);
|
|
#define fileno(f) ((f)->fd)
|
|
|
|
int _RTLENTRY _EXPFUNC _fgetc(FILE * __stream); /* used by getc() macro */
|
|
int _RTLENTRY _EXPFUNC _fputc(char __c, FILE * __stream); /* used by putc() macro */
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __FLAT__ */
|
|
|
|
/* The following macros provide for common functions */
|
|
|
|
#define ferror(f) ((f)->flags & _F_ERR)
|
|
#define feof(f) ((f)->flags & _F_EOF)
|
|
|
|
#define getc(f) \
|
|
((--((f)->level) >= 0) ? (unsigned char)(*(f)->curp++) : \
|
|
_fgetc (f))
|
|
|
|
#define putc(c,f) \
|
|
((++((f)->level) < 0) ? (unsigned char)(*(f)->curp++=(c)) : \
|
|
_fputc ((c),f))
|
|
|
|
#define getchar() getc(stdin)
|
|
#define putchar(c) putc((c), stdout)
|
|
|
|
#define ungetc(c,f) ungetc((c),f) /* traditionally a macro */
|
|
|
|
|
|
#if !defined(RC_INVOKED)
|
|
|
|
#pragma option -a. /* restore default packing */
|
|
|
|
#if defined(__STDC__)
|
|
#pragma warn .nak
|
|
#endif
|
|
|
|
#endif /* !RC_INVOKED */
|
|
|
|
|
|
#endif /* __STDIO_H */
|