mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-22 04:31:30 +00:00
274 lines
6.0 KiB
C
274 lines
6.0 KiB
C
|
/************************************************************
|
||
|
|
||
|
StdIO.h
|
||
|
Input / output
|
||
|
|
||
|
Copyright © Apple Computer,Inc. 1985-1991.
|
||
|
|
||
|
This file is used in these builds: ROM System
|
||
|
|
||
|
Copyright American Telephone & Telegraph
|
||
|
Used with permission, Apple Computer Inc. (1985)
|
||
|
All Rights Reserved.
|
||
|
|
||
|
Change History (most recent first):
|
||
|
|
||
|
<6> 11/19/91 JL Changed int param type of _flsbuf to unsigned char type for
|
||
|
consistency.
|
||
|
<5> 8/8/91 JL Updated copyright
|
||
|
<4> 10/24/90 JL Matching MPW version
|
||
|
|
||
|
To Do:
|
||
|
************************************************************/
|
||
|
|
||
|
|
||
|
#ifndef __STDIO__
|
||
|
#define __STDIO__
|
||
|
|
||
|
#define NULL 0
|
||
|
|
||
|
#ifndef __size_t__
|
||
|
#define __size_t__
|
||
|
typedef unsigned int size_t;
|
||
|
#endif
|
||
|
|
||
|
#ifndef __va_list__
|
||
|
#define __va_list__
|
||
|
typedef char *va_list;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/*
|
||
|
* The basic data structure for a stream is the FILE.
|
||
|
*/
|
||
|
|
||
|
typedef struct {
|
||
|
int _cnt;
|
||
|
unsigned char *_ptr;
|
||
|
unsigned char *_base;
|
||
|
unsigned char *_end;
|
||
|
unsigned short _size;
|
||
|
unsigned short _flag;
|
||
|
unsigned short _file;
|
||
|
} FILE;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* fpos_t is a type that can express any position in a file. A file's
|
||
|
* end-of-file marker has type fpos_t.
|
||
|
*/
|
||
|
|
||
|
typedef long fpos_t;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* These macros give the meanings of bits in a FILE's _flag. setvbuf() takes
|
||
|
* one of _IOFBF, _IOLBF, or _IONBF as its third argument.
|
||
|
*/
|
||
|
|
||
|
#define _IOFBF 0 /* Pseudo-flag, default buffering style */
|
||
|
#define _IOREAD (1<<0) /* Current mode is for reading */
|
||
|
#define _IOWRT (1<<1) /* Current mode is for writing */
|
||
|
#define _IONBF (1<<2) /* no buffering */
|
||
|
#define _IOMYBUF (1<<3) /* buffer was allocated by stdio */
|
||
|
#define _IOEOF (1<<4)
|
||
|
#define _IOERR (1<<5)
|
||
|
#define _IOLBF (1<<6) /* fflush(iop) when a \n is written */
|
||
|
#define _IORW (1<<7) /* Enable read/write access */
|
||
|
#define _IOSYNC (1<<8) /* Input triggers fflush() to output fp's */
|
||
|
#define _IOBINARY (1<<9) /* Binary stream */
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Default file buffer sizes used by setbuf() and setvbuf().
|
||
|
*/
|
||
|
|
||
|
#define BUFSIZ 1024 /* default file buffer size */
|
||
|
#define _LBFSIZ 100 /* Line buffer size */
|
||
|
|
||
|
|
||
|
/*
|
||
|
* The standard end-of-file indicator.
|
||
|
*/
|
||
|
|
||
|
#define EOF (-1)
|
||
|
|
||
|
|
||
|
/*
|
||
|
* L_tmpnam is the size of char array long enough to hold a temporary file name
|
||
|
* generated by tmpnam(), including the trailing null byte. The name is in the
|
||
|
* form tmp.AAAXXXXXX, where AAA is a sequence of lower case letters ("aaa", "baa",
|
||
|
* ... "zzz" on successive calls), and XXXXXX is a lower case letter followed by a sequence
|
||
|
* of digits, all determined at runtime.
|
||
|
* TMP_MAX is the number of distinct file names that tmpnam() can generate.
|
||
|
*/
|
||
|
|
||
|
#define L_tmpnam 14
|
||
|
#define TMP_MAX 17576
|
||
|
|
||
|
|
||
|
/*
|
||
|
* The minimum number of files that a program is guaranteed to be able to have
|
||
|
* open simultaneously (including the pre-opened stdin, stdout, and stderr).
|
||
|
* The numbers are listed in Inside Macintosh, page IV-178, as:
|
||
|
* 64K ROM, 128K Macintosh 12 files
|
||
|
* 64K ROM, 512K Macintosh 40 files
|
||
|
* 128K ROM 40 files per volume
|
||
|
*/
|
||
|
|
||
|
#define FOPEN_MAX 12
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Maximum length of a file name, including a trailing zero byte.
|
||
|
*/
|
||
|
|
||
|
#define FILENAME_MAX 32
|
||
|
|
||
|
|
||
|
/*
|
||
|
* For use by fseek():
|
||
|
*/
|
||
|
|
||
|
#ifndef __FCNTL__ /* these defns exactly paralled in FCntl.h for lseek() */
|
||
|
|
||
|
#define SEEK_CUR 1
|
||
|
#define SEEK_END 2
|
||
|
#define SEEK_SET 0
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/*
|
||
|
* The standard predefined streams.
|
||
|
*/
|
||
|
|
||
|
#define stdin (&_iob[0])
|
||
|
#define stdout (&_iob[1])
|
||
|
#define stderr (&_iob[2])
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Operations on files
|
||
|
*/
|
||
|
|
||
|
int remove(const char *filename);
|
||
|
int rename(const char *oldname, const char *newname);
|
||
|
FILE *tmpfile(void);
|
||
|
char *tmpnam(char *s);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* File access functions
|
||
|
*/
|
||
|
|
||
|
int fclose(FILE *stream);
|
||
|
int fflush(FILE *stream);
|
||
|
FILE *fopen(const char *filename, const char *mode);
|
||
|
FILE *freopen(const char *filename, const char *mode, FILE *stream);
|
||
|
void setbuf(FILE *stream, char *buf);
|
||
|
int setvbuf(FILE *stream, char *buf, int mode, size_t size);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Formatted input/output functions
|
||
|
*/
|
||
|
|
||
|
int fprintf(FILE *stream, const char *format, ...);
|
||
|
int fscanf(FILE *stream, const char *format, ...);
|
||
|
int printf(const char *format, ...);
|
||
|
int scanf(const char *format, ...);
|
||
|
int sprintf(char *s, const char *format, ...);
|
||
|
int sscanf(const char *s, const char *format, ...);
|
||
|
int vfprintf(FILE *stream, const char *format, va_list arg);
|
||
|
int vprintf(const char *format, va_list arg);
|
||
|
int vsprintf(char *s, const char *format, va_list arg);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Character input/output functions and macros
|
||
|
*/
|
||
|
|
||
|
int fgetc(FILE *stream);
|
||
|
char *fgets(char *s, int n, FILE *stream);
|
||
|
int fputc(int c, FILE *stream);
|
||
|
int fputs(const char *s, FILE *stream);
|
||
|
int getc(FILE *stream);
|
||
|
#define getc(p) (--(p)->_cnt >= 0 ? (int) *(p)->_ptr++ : _filbuf(p))
|
||
|
int getchar(void);
|
||
|
#define getchar() getc(stdin)
|
||
|
char *gets(char *s);
|
||
|
int putc(int c, FILE *stream);
|
||
|
#define putc(x, p) (--(p)->_cnt >= 0 ? \
|
||
|
((int) (*(p)->_ptr++ = (unsigned char) (x))) : \
|
||
|
_flsbuf((unsigned char) (x), (p)))
|
||
|
int putchar(int c);
|
||
|
#define putchar(x) putc((x), stdout)
|
||
|
int puts(const char *s);
|
||
|
int ungetc(int c, FILE *stream);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Direct input/output functions
|
||
|
*/
|
||
|
|
||
|
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
|
||
|
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* File positioning functions
|
||
|
*/
|
||
|
|
||
|
int fgetpos(FILE *stream, fpos_t *pos);
|
||
|
int fseek(FILE *stream, long int offset, int whence);
|
||
|
int fsetpos(FILE *stream, const fpos_t *pos);
|
||
|
long int ftell(FILE *stream);
|
||
|
void rewind(FILE *stream);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Error-handling functions and macros
|
||
|
*/
|
||
|
|
||
|
void clearerr(FILE *stream);
|
||
|
#define clearerr(p) ((void)((p)->_flag &= ~(_IOERR | _IOEOF)))
|
||
|
int feof(FILE *stream);
|
||
|
#define feof(p) ((p)->_flag & _IOEOF)
|
||
|
int ferror(FILE *stream);
|
||
|
#define ferror(p) ((p)->_flag & _IOERR)
|
||
|
void perror(const char *s);
|
||
|
|
||
|
/*
|
||
|
* For macros
|
||
|
*/
|
||
|
|
||
|
extern FILE _iob[];
|
||
|
#define _NFILE 20
|
||
|
int _filbuf(FILE *);
|
||
|
int _flsbuf(unsigned char, FILE *);
|
||
|
|
||
|
/*
|
||
|
* Non-ANSI extensions
|
||
|
*/
|
||
|
|
||
|
#ifndef __STDC__
|
||
|
|
||
|
#define fileno(p) (p)->_file
|
||
|
FILE *fdopen(int fildes, const char *mode);
|
||
|
void fsetfileinfo (char *filename, unsigned long newcreator, unsigned long newtype);
|
||
|
int getw(FILE *stream);
|
||
|
int putw(int w, FILE *stream);
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif
|