Files
2022-10-02 10:09:40 +02:00

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