mac-rom/Interfaces/CIncludes/StdIO.h
Elliot Nunn 4325cdcc78 Bring in CubeE sources
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included.

The Tools directory, containing mostly junk, is also excluded.
2017-12-26 09:52:23 +08:00

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