224 lines
6.9 KiB
C
224 lines
6.9 KiB
C
/* This file is part of the AHCC C Library.
|
|
|
|
The AHCC C Library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public License as
|
|
published by the Free Software Foundation; either version 2 of the
|
|
License, or (at your option) any later version.
|
|
|
|
The AHCC C Library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
/* stdio.h */
|
|
|
|
#if !defined( __STDIO_H_ )
|
|
#define __STDIO_H_
|
|
|
|
#include <stdarg.h>
|
|
|
|
#if !defined( __STDDEF )
|
|
#include <stddef.h>
|
|
#endif
|
|
|
|
typedef unsigned long fpos_t;
|
|
|
|
#include <errno.h>
|
|
|
|
/* old
|
|
typedef struct
|
|
{
|
|
short _cnt; /* # of bytes in buffer */
|
|
unsigned char *_ptr; /* current buffer pointer */
|
|
unsigned char *_base; /* base of file buffer */
|
|
unsigned short _flag; /* file status flags */
|
|
short _file; /* file handle */
|
|
size_t _bsiz; /* buffer size */
|
|
unsigned char _ch; /* tiny buffer, for "unbuffered" i/o */
|
|
}
|
|
FILE;
|
|
*/
|
|
/* Try to make Pure C and AHCC FILE structure alike */
|
|
typedef struct
|
|
{
|
|
unsigned char *BufPtr; /* current buffer pointer */
|
|
long _cnt; /* # of bytes in buffer */
|
|
unsigned char *BufStart; /* base of file buffer */
|
|
size_t _bsiz; /* buffer size */
|
|
short Handle; /* file handle */
|
|
unsigned char Flags,Mode; /* file status flags, file mode */
|
|
unsigned char ChrBuf; /* tiny buffer, for "unbuffered" i/o */
|
|
char ungetFlag;
|
|
}
|
|
FILE;
|
|
|
|
typedef short InFunc(void *ip);
|
|
typedef short OutFunc(char c, void *op);
|
|
|
|
typedef short UnFunc(short c, void *ip);
|
|
|
|
/****** FileIo constants ************************************************/
|
|
|
|
#define OPEN_MAX 32
|
|
#define FOPEN_MAX 32
|
|
#define FILENAME_MAX 128
|
|
#define PATH_MAX 132
|
|
#define BUFSIZ 1024
|
|
#define EOF (-1) /* end of file */
|
|
#undef EOS
|
|
#define EOS '\0' /* end-of-string indicator */
|
|
|
|
#define O_RDONLY 0x00
|
|
#define O_WRONLY 0x01
|
|
#define O_RDWR 0x02
|
|
#define O_APPEND 0x08
|
|
#define O_CREAT 0x20
|
|
#define O_TRUNC 0x40
|
|
#define O_EXCL 0x80
|
|
|
|
#define SEEK_SET 0
|
|
#define SEEK_CUR 1
|
|
#define SEEK_END 2
|
|
|
|
#define TMP_MAX 65535
|
|
#define L_tmpnam 13
|
|
|
|
/* Mode flags */
|
|
#define _IOFBF 0 /* full buffering */
|
|
#define _IOLBF 1 /* line buffering */
|
|
#define _IONBF 2 /* no buffering */
|
|
|
|
extern FILE _iob[];
|
|
|
|
/* standard streams */
|
|
#define stdin (&_StdInF)
|
|
#define stdout (&_StdOutF)
|
|
#define stderr (&_StdErrF)
|
|
#define stdprn (&_StdPrnF)
|
|
#define stdaux (&_StdAuxF)
|
|
|
|
/* External data */
|
|
|
|
extern FILE _StdInF;
|
|
extern FILE _StdOutF;
|
|
extern FILE _StdErrF;
|
|
extern FILE _StdPrnF;
|
|
extern FILE _StdAuxF;
|
|
|
|
/* StreamIO routines */
|
|
|
|
FILE * fopen ( const char *filename, const char *mo );
|
|
FILE * freopen ( const char *filename, const char *mo, FILE *stream );
|
|
FILE * tmpfile ( void );
|
|
void clearerr ( FILE *stream );
|
|
short fclose ( FILE *stream );
|
|
short feof ( FILE *stream );
|
|
short ferror ( FILE *stream );
|
|
short fflush ( FILE *stream );
|
|
short fgetc ( FILE *stream );
|
|
short fgetpos ( FILE *stream, fpos_t *pos );
|
|
short fprintf ( FILE *stream, const char *format, ... );
|
|
short d_fprintf ( FILE *stream, const char *format, ... );
|
|
short fscanf ( FILE *stream, const char *format, ... );
|
|
short fseek ( FILE *stream, long offset, short mo );
|
|
void rewind ( FILE *stream);
|
|
short fsetpos ( FILE *stream, const fpos_t *pos );
|
|
long ftell ( FILE *stream );
|
|
void setbuf ( FILE *stream, void *buf );
|
|
short setvbuf ( FILE *stream, void *, short , size_t );
|
|
short vfprintf ( FILE *stream, const char *format, va_list param );
|
|
short vfscanf ( FILE *stream, const char *format, va_list param );
|
|
short fileno ( FILE *stream );
|
|
|
|
size_t fread ( void *buf, size_t elem_Siz, size_t count,
|
|
FILE *stream );
|
|
char * fgets ( char *str, short n,
|
|
FILE *stream );
|
|
size_t fwrite ( const void *buf, size_t elem_Siz, size_t count,
|
|
FILE *stream );
|
|
short fputc ( short ch,
|
|
FILE *stream );
|
|
short fputs ( const char *str,
|
|
FILE *stream );
|
|
|
|
/* other IO routines */
|
|
|
|
char * gets ( char *str );
|
|
void perror ( char *s );
|
|
void perrorf (char *fmt, ...);
|
|
short d_printf ( const char *format, ... ); /* HR used when debugging */
|
|
short printf ( const char *format, ... );
|
|
short puts ( const char *str );
|
|
short scanf ( const char *format, ... );
|
|
short sprintf ( char *string, const char *format, ... );
|
|
short sscanf ( const char *string, const char *format, ... );
|
|
char * tmpnam ( char *s );
|
|
short vprintf ( const char *format, va_list param );
|
|
short vsprintf ( char *string, const char *format, va_list param );
|
|
short vscanf ( const char *format, va_list param );
|
|
short vsscanf ( char *string, const char *format, va_list param );
|
|
|
|
/* FileIo macros */
|
|
|
|
#define getc( c ) fgetc( c )
|
|
#define getchar() fgetc( stdin )
|
|
#define ungetchar( c) fungetc(c, stdin)
|
|
#define putc( c, s ) fputc( c, s )
|
|
#define putchar( c ) fputc( c, stdout )
|
|
#define exists(f ) access( f, 0x00 )
|
|
|
|
/* GEMDOS Handle level FileIO routines */
|
|
|
|
short open ( const char *filename, short access, ... );
|
|
short close ( short handle );
|
|
short creat ( const char *filename, ...);
|
|
size_t read ( short handle, void *buf, size_t nbyte );
|
|
size_t write ( short handle, const void *buf, size_t nbyte );
|
|
size_t lseek ( short handle, size_t offset, short mo );
|
|
short remove ( const char *filename );
|
|
short unlink ( const char *filename );
|
|
short rename ( const char *oldname, const char *newname );
|
|
|
|
/* In dlibs, not in PC */
|
|
FILE * fopenp ( const char *filename, const char *mode );
|
|
FILE * fdopen ( short h, const char *mode );
|
|
char * fullpath ( char *full, const char *part );
|
|
char * findfile ( const char *afn, const char *ext );
|
|
char * pfindfile ( const char *path, const char *afn, const char *ext );
|
|
short fungetc ( short c, FILE *fp );
|
|
short ungetc ( short c, FILE *fp );
|
|
short cprintf ( const char *fmt, ... );
|
|
void cputs ( char *data );
|
|
short getw ( FILE *fp );
|
|
short putw ( short n, FILE *fp );
|
|
long getl ( FILE *fp);
|
|
long putl ( long n, FILE *fp );
|
|
size_t tell ( short h );
|
|
short rmdir ( const char *pathname );
|
|
short mkdir ( const char *pathname );
|
|
short dup ( short handle);
|
|
short dup2 ( short handle1, short handle2 );
|
|
short _tttty ( FILE *fp );
|
|
char *_splitpath
|
|
(
|
|
const char *src,
|
|
char *drive,
|
|
char *path,
|
|
char *file,
|
|
char *ext
|
|
);
|
|
|
|
short printf_dmode( short );
|
|
|
|
#ifndef ERROR
|
|
#define ERROR (-1) /* general error condition */
|
|
#endif
|
|
|
|
#endif
|