home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 2
/
fishmore-publicdomainlibraryvol.ii1991xetec.iso
/
fish
/
languages
/
dice_443
/
include
/
stdio.h
< prev
next >
Wrap
C/C++ Source or Header
|
1991-01-12
|
4KB
|
149 lines
/*
* STDIO.H
*
* (c)Copyright 1990, Matthew Dillon, All Rights Reserved
*/
#ifndef _STDIO_H
#define _STDIO_H
#ifndef _STDDEF_H
#include <stddef.h>
#endif
#ifndef _STDARG_H
typedef void *va_list;
#endif
typedef long fpos_t;
typedef struct FILE {
struct FILE *sd_Next;
struct FILE **sd_Prev;
unsigned char *sd_RBuf;
unsigned char *sd_RPtr;
unsigned char *sd_WBuf;
unsigned char *sd_WPtr;
long sd_BufSiz;
int sd_RLeft;
int sd_WLeft;
int sd_Flags;
int sd_Error; /* error: 0 / non-0 */
fpos_t sd_Offset; /* level 1 current off */
int sd_Fd;
short sd_UC; /* ungotten character or -1 */
char *sd_Name; /* use for tmpfile() */
} FILE;
typedef struct _IOFDS {
long fd_Fh;
long fd_Flags;
long (*fd_Exec)(long, int, void *, void *); /* exec function */
long fd_Reserved;
} _IOFDS;
extern FILE _Iob[3]; /* fixed fps */
extern FILE *_Iod; /* dynamic fps */
extern _IOFDS _IoStaticFD[3]; /* 0,1,2 */
extern _IOFDS *_IoFD; /* descriptors */
extern short _IoFDLimit;
#define __SIF_ERROR 0x0001 /* XXX */
#define __SIF_EOF 0x0002
#define __SIF_READ 0x0004
#define __SIF_WRITE 0x0008
#define __SIF_IOLBF 0x0010
#define __SIF_REMOVE 0x0020 /* unlink file after closing */
#define __SIF_APPEND 0x0040
#define __SIF_NOFREE 0x0080 /* not a freeable descriptor */
#define __SIF_OPEN 0x0100 /* file is open */
#define __SIF_MYBUF 0x0200 /* I allocated the buffer(s) */
#define __SIF_BINARY 0x0400
#define __SIF_RAW 0x0800 /* RAW terminal , see setvbuf */
#define __SIF_FILE 0x1000 /* a seekable file */
#define _IOFBF -1
#define _IOLBF __SIF_IOLBF
#define _IONBF 0
#define BUFSIZ 1024
#define EOF -1
#define FILENAME_MAX 1024
#define FOPEN_MAX 20 /* lets be reasonable */
#define L_tmpnam 32
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
#define TMP_MAX 4096
#define stdin (&_Iob[0])
#define stdout (&_Iob[1])
#define stderr (&_Iob[2])
#define clearerr(fi) (((fi)->sd_Flags &= ~__SIF_EOF), ((fi)->sd_Error = 0))
#define feof(fi) ((fi)->sd_Flags & __SIF_EOF)
#define ferror(fi) ((fi)->sd_Error)
#define fileno(fi) ((fi)->sd_Fd)
extern void perror(const char *);
extern int fclose(FILE *);
extern int fflush(FILE *);
extern FILE * fopen(const char *, const char *);
extern FILE * freopen(const char *, const char *, FILE *);
extern void setbuf(FILE *, char *);
extern int setvbuf(FILE *, char *, int, size_t);
extern int remove(const char *);
extern int rename(const char *, const char *);
extern FILE * tmpfile(void);
extern char * tmpnam(char *);
extern int fgetpos(FILE *, fpos_t *);
extern int fseek(FILE *, long, int);
extern int fsetpos(FILE *, const fpos_t *);
extern long ftell(FILE *);
extern void rewind(FILE *);
extern int fgetc(FILE *);
extern char * fgets(char *, int, FILE *);
extern int fputc(char, FILE *);
extern int fputs(const char *, FILE *);
#define getc(fi) ( ((fi)->sd_UC >= 0) ? fgetc(fi) : ((fi)->sd_RLeft <= 0) ? fgetc(fi) : (--(fi)->sd_RLeft, (int)*(fi)->sd_RPtr++))
#define putc(c,fi) (((c) == '\n' || (fi)->sd_WLeft <= 0) ? fputc((c),(fi)) : (*(fi)->sd_WPtr++ = (c), --(fi)->sd_WLeft, (c)))
#define getchar() fgetc(stdin)
#define putchar(c) fputc((c),stdout)
extern char * gets(char *);
extern int puts(const char *);
extern int ungetc(int, FILE *);
extern size_t fread(void *, size_t, size_t, FILE *);
extern size_t fwrite(const void *, size_t, size_t, FILE *);
extern int fprintf(FILE *, const char *, ...);
extern int fscanf(FILE *, const char *, ...);
extern int printf(const char *, ...);
extern int scanf(const char *, ...);
extern int sprintf(char *, const char *, ...);
extern int sscanf(char *, const char *, ...);
extern int vfprintf(FILE *, const char *, va_list);
extern int vprintf(const char *, va_list);
extern int vsprintf(char *, const char *, va_list);
/*
* Standard, but not ANSI
*/
extern FILE * fdopen(int, const char *);
extern int chdir(const char *);
extern char * getcwd(char *, int);
extern int unlink(const char *);
#endif