From: solar <> Date: Wed, 24 May 2006 06:18:09 +0000 (+0000) Subject: Temporary patching for stdio development. X-Git-Url: https://pd.if.org/git/?p=pdclib.old;a=commitdiff_plain;h=1348d759ad8b0bee9bfb91329ab4181aef618a67 Temporary patching for stdio development. --- diff --git a/includes/stdio.h b/includes/stdio.h index 9c13f31..e4b1673 100644 --- a/includes/stdio.h +++ b/includes/stdio.h @@ -31,7 +31,7 @@ typedef _PDCLIB_size_t size_t; /* The following are platform-dependant, and defined in _PDCLIB_config.h. */ typedef _PDCLIB_fpos_t fpos_t; -typedef struct _PDCLIB_file_t FILE; +//typedef struct _PDCLIB_file_t FILE; #define EOF -1 #define BUFSIZ _PDCLIB_BUFSIZ #define FOPEN_MAX _PDCLIB_FOPEN_MAX @@ -44,9 +44,9 @@ typedef struct _PDCLIB_file_t FILE; #define SEEK_END 2 #define SEEK_SET 4 -extern FILE * stdin; -extern FILE * stdout; -extern FILE * stderr; +//extern FILE * stdin; +//extern FILE * stdout; +//extern FILE * stderr; /* Operations on files */ @@ -73,7 +73,7 @@ int rename( const char * old, const char * new ); This implementation does not remove temporary files if the process aborts abnormally (e.g. abort()). */ -FILE * tmpfile( void ); +struct _PDCLIB_file_t * tmpfile( void ); /* Generate a file name that is not equal to any existing filename AT THE TIME OF GENERATION. Generate a different name each time it is called. @@ -93,7 +93,7 @@ char * tmpnam( char * s ); /* Close the file associated with the given stream (after flushing its buffers). Returns zero if successful, EOF if any errors occur. */ -int fclose( FILE * stream ); +int fclose( struct _PDCLIB_file_t * stream ); /* Flush the buffers of the given output stream. If the stream is an input stream, or an update stream with the last operation being an input operation, @@ -103,7 +103,7 @@ int fclose( FILE * stream ); Returns zero if successful, EOF if a write error occurs. Sets the error indicator of the stream if a write error occurs. */ -int fflush( FILE * stream ); +int fflush( struct _PDCLIB_file_t * stream ); /* Open the file with the given filename in the given mode, and return a stream handle for it in which error and end-of-file indicator are cleared. Defined @@ -156,7 +156,7 @@ int fflush( FILE * stream ); Returns a pointer to the stream handle if successfull, NULL otherwise. */ -FILE * fopen( const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode ); +struct _PDCLIB_file_t * fopen( const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode ); /* Close any file currently associated with the given stream. Open the file identified by the given filename with the given mode (equivalent to fopen()), @@ -165,12 +165,12 @@ FILE * fopen( const char * _PDCLIB_restrict filename, const char * _PDCLIB_restr This implementation allows the following mode changes: TODO (Primary use of this function is to redirect stdin, stdout, and stderr.) */ -FILE * freopen( const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode, FILE * _PDCLIB_restrict stream ); +struct _PDCLIB_file_t * freopen( const char * _PDCLIB_restrict filename, const char * _PDCLIB_restrict mode, struct _PDCLIB_file_t * _PDCLIB_restrict stream ); /* If buf is a NULL pointer, call setvbuf( stream, NULL, _IONBF, BUFSIZ ). If buf is not a NULL pointer, call setvbuf( stream, buf, _IOFBF, BUFSIZ ). */ -void setbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf ); +void setbuf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf ); /* Set the given stream to the given buffering mode. If buf is not a NULL pointer, use buf as file buffer (of given size). If buf is a NULL pointer, @@ -181,7 +181,7 @@ void setbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf ); setvbuf()) has been performed. Returns zero if successful, nonzero otherwise. */ -int setvbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf, int mode, size_t size ); +int setvbuf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf, int mode, size_t size ); /* Formatted input/output functions */ @@ -310,7 +310,7 @@ int setvbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf, int mo usual to these special values, '#' and '0' have no effect. e,E The argument from the argument stack is assumed to be of type double, and converted to a decimal floating point in normalized exponential - notation ([?]d.ddd e±dd). "Normalized" means one nonzero digit before + notation ([?]d.ddd edd). "Normalized" means one nonzero digit before the decimal point, unless the value is zero. The number of digits after the decimal point is specified by the precision (default 6), the value being rounded appropriately. If precision is zero (and the '#' flag is @@ -330,7 +330,7 @@ int setvbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf, int mo Infinity or NaN values are represented as for 'f' and 'F' conversions, respectively. a,A The argument from the argument stack is assumed to be of type double, - and converted to a floating point hexadecimal notation ([?]0xh.hhhh p±d) + and converted to a floating point hexadecimal notation ([?]0xh.hhhh pd) with one hexadecimal digit (being nonzero if the value is normalized, and otherwise unspecified) before the decimal point, and the number of digits after the decimal point being specified by the precision. If no @@ -396,7 +396,7 @@ int setvbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf, int mo Returns the number of characters written if successful, a negative value otherwise. */ -int fprintf( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, ... ); +int fprintf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, ... ); /* TODO: fscanf() documentation */ /* @@ -586,7 +586,7 @@ The length modi?ers and their meanings are: an early mismatch occurs. Returns EOF if an input failure occurs before the first conversion. */ -int fscanf( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, ... ); +int fscanf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, ... ); /* Equivalent to fprintf( stdout, format, ... ). */ int printf( const char * _PDCLIB_restrict format, ... ); @@ -618,13 +618,13 @@ int sscanf( const char * _PDCLIB_restrict s, const char * _PDCLIB_restrict forma is passed as va_list parameter. Note that va_list is not declared by . */ -int vfprintf( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); +int vfprintf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); /* Equivalent to fscanf( stream, format, ... ), except that the argument stack is passed as va_list parameter. Note that va_list is not declared by . */ -int vfscanf( FILE * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); +int vfscanf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ); /* Equivalent to fprintf( stdout, format, ... ), except that the argument stack is passed as va_list parameter. Note that va_list is not declared by @@ -665,7 +665,7 @@ int vsscanf( const char * _PDCLIB_restrict s, const char * _PDCLIB_restrict form If end-of-file is reached, the EOF indicator of the stream is set. If a read error occurs, the error indicator of the stream is set. */ -int fgetc( FILE * stream ); +int fgetc( struct _PDCLIB_file_t * stream ); /* Read at most n-1 characters from given stream into the array s, stopping at \n or EOF. Terminate the read string with \n. If EOF is encountered before @@ -674,20 +674,20 @@ int fgetc( FILE * stream ); If a read error occurs, the error indicator of the stream is set. In this case, the contents of s are indeterminate. */ -char * fgets( char * _PDCLIB_restrict s, int n, FILE * _PDCLIB_restrict stream ); +char * fgets( char * _PDCLIB_restrict s, int n, struct _PDCLIB_file_t * _PDCLIB_restrict stream ); /* Write the value c (cast to unsigned char) to the given stream. Returns c if successful, EOF otherwise. If a write error occurs, sets the error indicator of the stream is set. */ -int fputc( int c, FILE * stream ); +int fputc( int c, struct _PDCLIB_file_t * stream ); /* Write the string s (not including the terminating \0) to the given stream. Returns a value >=0 if successful, EOF otherwise. This implementation does set the error indicator of the stream if a write error occurs. */ -int fputs( const char * _PDCLIB_restrict s, FILE * _PDCLIB_restrict stream ); +int fputs( const char * _PDCLIB_restrict s, struct _PDCLIB_file_t * _PDCLIB_restrict stream ); /* Equivalent to fgetc( stream ), but may be implemented as a macro that evaluates its parameter more than once. @@ -735,7 +735,7 @@ int puts( const char * s ); behaviour is undefined. (Older versions of the library allowed such a call.) Returns the pushed-back character if successful, EOF if it fails. */ -int ungetc( int c, FILE * stream ); +int ungetc( int c, struct _PDCLIB_file_t * stream ); /* Direct input/output functions */ @@ -746,7 +746,7 @@ int ungetc( int c, FILE * stream ); indeterminate. If a partial element is read, its value is indeterminate. If size or nmemb are zero, the function does nothing and returns zero. */ -size_t fread( void * _PDCLIB_restrict ptr, size_t size, size_t nmemb, FILE * _PDCLIB_restrict stream ); +size_t fread( void * _PDCLIB_restrict ptr, size_t size, size_t nmemb, struct _PDCLIB_file_t * _PDCLIB_restrict stream ); /* Write up to nmemb elements of given size from buffer pointed to by ptr to the given stream. Returns the number of elements successfully written, which @@ -755,7 +755,7 @@ size_t fread( void * _PDCLIB_restrict ptr, size_t size, size_t nmemb, FILE * _PD indeterminate. If size or nmemb are zero, the function does nothing and returns zero. */ -size_t fwrite( const void * _PDCLIB_restrict ptr, size_t size, size_t nmemb, FILE * _PDCLIB_restrict stream ); +size_t fwrite( const void * _PDCLIB_restrict ptr, size_t size, size_t nmemb, struct _PDCLIB_file_t * _PDCLIB_restrict stream ); /* File positioning functions */ @@ -767,7 +767,7 @@ size_t fwrite( const void * _PDCLIB_restrict ptr, size_t size, size_t nmemb, FIL Returns zero if successful, nonzero otherwise. TODO: Implementation-defined errno setting for fgetpos(). */ -int fgetpos( FILE * _PDCLIB_restrict stream, fpos_t * _PDCLIB_restrict pos ); +int fgetpos( struct _PDCLIB_file_t * _PDCLIB_restrict stream, fpos_t * _PDCLIB_restrict pos ); /* Set the position indicator for the given stream to the given offset from: - the beginning of the file if whence is SEEK_SET, @@ -781,7 +781,7 @@ int fgetpos( FILE * _PDCLIB_restrict stream, fpos_t * _PDCLIB_restrict pos ); Returns zero if successful, nonzero otherwise. If a read/write error occurs, the error indicator for the given stream is set. */ -int fseek( FILE * stream, long int offset, int whence ); +int fseek( struct _PDCLIB_file_t * stream, long int offset, int whence ); /* Set the position indicator (and, where appropriate the mbstate_t status object) for the given stream to the given pos object (created by an earlier @@ -793,7 +793,7 @@ int fseek( FILE * stream, long int offset, int whence ); the error indicator for the given stream is set. TODO: Implementation-defined errno setting for fsetpos(). */ -int fsetpos( FILE * stream, const fpos_t * pos ); +int fsetpos( struct _PDCLIB_file_t * stream, const fpos_t * pos ); /* Return the current offset of the given stream from the beginning of the associated file. For text streams, the exact value returned is unspecified @@ -802,27 +802,27 @@ int fsetpos( FILE * stream, const fpos_t * pos ); Returns -1L if unsuccessful. TODO: Implementation-defined errno setting for ftell(). */ -long int ftell( FILE * stream ); +long int ftell( struct _PDCLIB_file_t * stream ); /* Equivalent to (void)fseek( stream, 0L, SEEK_SET ), except that the error indicator for the stream is also cleared. */ -void rewind( FILE * stream ); +void rewind( struct _PDCLIB_file_t * stream ); /* Error-handling functions */ /* Clear the end-of-file and error indicators for the given stream. */ -void clearerr( FILE * stream ); +void clearerr( struct _PDCLIB_file_t * stream ); /* Return zero if the end-of-file indicator for the given stream is not set, nonzero otherwise. */ -int feof( FILE * stream ); +int feof( struct _PDCLIB_file_t * stream ); /* Return zero if the error indicator for the given stream is not set, nonzero otherwise. */ -int ferror( FILE * stream ); +int ferror( struct _PDCLIB_file_t * stream ); /* If s is neither a NULL pointer nor an empty string, print the string to stderr (with appended colon (':') and a space) first. In any case, print an diff --git a/platform/example/functions/_PDCLIB/stdinit.c b/platform/example/functions/_PDCLIB/stdinit.c index 24285f7..ec4193b 100644 --- a/platform/example/functions/_PDCLIB/stdinit.c +++ b/platform/example/functions/_PDCLIB/stdinit.c @@ -23,9 +23,12 @@ static struct _PDCLIB_file_t _PDCLIB_sin = { 0, { 0, 0 }, 0, 0, 0, /* mbstate, static struct _PDCLIB_file_t _PDCLIB_sout = { 1, { 0, 0 }, 0, 0, 0, /* mbstate, */ 0 }; static struct _PDCLIB_file_t _PDCLIB_serr = { 2, { 0, 0 }, 0, 0, 0, /* mbstate, */ 0 }; +/* FIXME: Disabled for initial stdio.h development. */ +#if 0 struct _PDCLIB_file_t * stdin = &_PDCLIB_sin; struct _PDCLIB_file_t * stdout = &_PDCLIB_sout; struct _PDCLIB_file_t * stderr = &_PDCLIB_serr; +#endif #endif