-// ----------------------------------------------------------------------------
-// $Id$
-// ----------------------------------------------------------------------------
-// Public Domain C Library - http://pdclib.sourceforge.net
-// This code is Public Domain. Use, modify, and redistribute at will.
-// ----------------------------------------------------------------------------
-// Input/output
-// ----------------------------------------------------------------------------
+/* $Id$ */
-#ifndef __STDIO_H
-#define __STDIO_H __STDIO_H
+/* Release $Name$ */
-// ----------------------------------------------------------------------------
-// MACROS
+/* Input/output <stdio.h>
-#define _IOFBF // TODO
-#define _IOLBF // TODO
-#define _IONBF // TODO
-#define BUFSIZ // TODO
-#define EOF // TODO
-#define FILENAME_MAX // TODO
-#define FOPEN_MAX // TODO
-#define L_tmpnam // TODO
-#define NULL 0
-#define SEEK_CUR // TODO
-#define SEEK_END // TODO
-#define SEEK_SET // TODO
-#define TMP_MAX // TODO
-
-#define stderr // TODO
-#define stdin // TODO
-#define stdout // TODO
-
-// ----------------------------------------------------------------------------
-// TYPEDEFS
-
-typedef FILE; // TODO
-typedef fpos_t; // TODO
-typedef size_t; // TODO
-
-// ----------------------------------------------------------------------------
-// FUNCTIONS
-
-// TODO: Documentation.
-
-void clearerr( FILE * stream );
-int fclose( FILE * stream );
-int feof( FILE * stream );
-int ferror( FILE * stream );
-int fflush( FILE * stream );
-FILE * fopen( const char * restrict filename, const char * restrict mode );
-FILE * freopen( const char * restrict filename, const char * restrict mode, FILE * stream );
-int remove( const char * filename );
-int rename( const char * old, const char * new );
-void rewind( FILE * stream );
-void setbuf( FILE * restrict stream, char * restrict buf );
-int setvbuf( FILE * restrict stream, char * restrict buf, int mode, size_t size );
-FILE * tmpfile( void )
-char * tmpnam( char * s );
-
-int fseek( FILE * stream, long offset, int mode );
-int fsetpos( FILE * stream, const fpos_t * pos );
-int fgetpos( FILE * restrict stream, fpos_t * restrict pos );
-long ftell( FILE * stream );
-
-int fgetc( FILE * stream );
-char *fgets( char * restrict s, int n, FILE * restrict stream );
-size_t fread( void * restrict ptr, size_t size, size_t nelem, FILE * restrict stream );
-int getc( FILE * stream );
-int getchar( void );
-char * gets( char * s );
-int ungetc( int c, FILE * stream );
-
-int fputc( int c, FILE * stream );
-int fputs( const char * restrict s, FILE * restrict stream );
-size_t fwrite( const void * restrict ptr, size_t size, size_t nelem, FILE * restrict stream );
-void perror( const char * s );
-int putc( int c, FILE * stream );
-int putchar( int c );
-int puts( const char * s );
-
-int fscanf( FILE * restrict stream, const char * restrict format, ... );
-int scanf( const char * restrict format, ... );
-int sscanf( const char * restrict s, const char * restrict format, ... );
-int vfscanf( FILE * restrict stream, const char * restrict format, va_list ap );
-int vscanf( const char * restrict format, va_list ap );
-int vsscanf( const char * restrict s, const char * restrict format, va_list ap );
+ This file is part of the Public Domain C Library (PDCLib).
+ Permission is granted to use, modify, and / or redistribute at will.
+*/
-int fprintf( FILE * restrict stream, const char * restrict format, ... );
-int printf( const char * restrict format, ... );
-int snprintf( char * restrict s, size_t n, const char * restrict format, ... );
-int sprintf( char * restrict s, const char * restrict format, ... );
-int vfprintf( FILE * restrict stream, const char * restrict format, va_list ap );
-int vprintf( const char * restrict format, va_list ap );
-int vsnprintf( char * restrict s, size_t n, const char * restrict format, va_list ap );
-int vsprintf( char * restrict s, const char * restrict format, va_list ap);
+/* TODO: This is a dummy header to avoid errors when mixing PDCLIB <stdarg.h> */
+/* with glibc <stdio.h>. */
-/* PDPC code - unreviewed
-/*
- What we have is an internal buffer, which is 8 characters
- longer than the actually used buffer. E.g. say BUFSIZ is
- 512 bytes, then we actually allocate 520 bytes. The first
- 2 characters will be junk, the next 2 characters set to NUL,
- for protection against some backward-compares. The fourth-last
- character is set to '\n', to protect against overscan. The
- last 3 characters will be junk, to protect against memory
- violation. intBuffer is the internal buffer, but everyone refers
- to fbuf, which is actually set to the &intBuffer[4]. Also,
- szfbuf is the size of the "visible" buffer, not the internal
- buffer. The reason for the 2 junk characters at the beginning
- is to align the buffer on a 4-byte boundary.
-*/
+#ifndef _PDCLIB_STDIO_H
+#define _PDCLIB_STDIO_H _PDCLIB_STDIO_H
-typedef struct
-{
-#if (defined(__OS2__) || defined(__32BIT__))
- unsigned long hfile; /* OS/2 file handle */
-#endif
-#if (defined(__MSDOS__) || defined(__DOS__) || defined(__POWERC))
- int hfile; /* dos file handle */
+#ifndef _PDCLIB_AUX_H
+#define _PDCLIB_AUX_H _PDCLIB_AUX_H
+#include <_PDCLIB_aux.h>
#endif
-#if (defined(__MVS__))
- void *hfile;
- int recfm;
- int style;
- int lrecl;
- char ddname[9];
-#endif
- int quickBin; /* 1 = do DosRead NOW!!!! */
- int quickText; /* 1 = quick text mode */
- int textMode; /* 1 = text mode, 0 = binary mode */
- int intFno; /* internal file number */
- unsigned long bufStartR; /* buffer start represents, e.g. if we
- have read in 3 buffers, each of 512 bytes, and we are
- currently reading from the 3rd buffer, then the first
- character in the buffer would be 1024, so that is what is
- put in bufStartR. */
- char *fbuf; /* file buffer - this is what all the routines
- look at. */
- size_t szfbuf; /* size of file buffer (the one that the routines
- see, and the user allocates, and what is actually
- read in from disk) */
- char *upto; /* what character is next to read from buffer */
- char *endbuf; /* pointer PAST last character in buffer, ie it
- points to the '\n' in the internal buffer */
- int errorInd; /* whether an error has occurred on this file */
- int eofInd; /* whether EOF has been reached on this file */
- int ungetCh; /* character pushed back, -1 if none */
- int bufTech; /* buffering technique, _IOFBF etc */
- char *intBuffer; /* internal buffer */
- int noNl; /* When doing gets, we don't copy NL */
- int mode; /* __WRITE_MODE or __READ_MODE */
- int update; /* Is file update (read + write)? */
- int theirBuffer; /* Is the buffer supplied by them? */
-} FILE;
-
-typedef unsigned long fpos_t;
-#define NULL ((void *)0)
-#define FILENAME_MAX 260
-#define FOPEN_MAX 40
-#define _IOFBF 1
-#define _IOLBF 2
-#define _IONBF 3
-/*#define BUFSIZ 409600*/
-/* #define BUFSIZ 8192 */
-/*#define BUFSIZ 5120*/
-#define BUFSIZ 6144
-/* #define BUFSIZ 10 */
-/* #define BUFSIZ 512 */
-#define EOF -1
-#define L_tmpnam FILENAME_MAX
-#define TMP_MAX 25
-#define SEEK_SET 0
-#define SEEK_CUR 1
-#define SEEK_END 2
-#define __NFILE (FOPEN_MAX - 3)
-#define __WRITE_MODE 1
-#define __READ_MODE 2
+typedef void * FILE;
-extern FILE *stdin;
-extern FILE *stdout;
-extern FILE *stderr;
+extern void * stderr;
-extern FILE *__userFiles[__NFILE];
-*/
+int printf( const char * _PDCLIB_restrict format, ... );
+int fputs( const char * _PDCLIB_restrict s, FILE * _PDCLIB_restrict stream );
+int puts( const char * _PDCLIB_restrict s );
-#endif // __STDIO_H
+#endif