#ifndef __STDIO_H__ # define __STDIO_H__ #ifdef __cplusplus extern "C" { #endif #include #include /* Type of FILE handlers. */ #include /* Type of positions within files. */ typedef size_t fpos_t; /* Buffering modes. */ #define _IOFBF 0 #define _IOLBF 1 #define _IONBF 2 /* Some buffer size for file buffering. */ /* TODO: We might want a larger BUFSIZ than 256 on fx-CG 50. */ #define BUFSIZ 256 /* End-of-file marker. */ #define EOF ((int)(-1)) /* Number of files guaranteed can be opened simultaneously. */ /* TODO: FOPEN_MAX is BFile-specific, Vhex might have much larger limits. */ #define FOPEN_MAX 4 /* Recommended length of a filename. */ /* TODO: FILENAME_MAX = 128 is quite BFile-centric, Vhex might be different. */ #define FILENAME_MAX 128 /* Length a filename for tmpnam. */ #define L_tmpnam FILENAME_MAX /* Seeking positions. */ #define SEEK_CUR 0 #define SEEK_END 1 #define SEEK_SET 2 /* Maximum number of unique filenames that tmpnam can generate. */ /* TODO: Set a useful value in TMP_MAX other than 16*16*16 */ #define TMP_MAX (16*16*16) /* Standard input, output and error streams. */ extern FILE *stdin; extern FILE *stdout; extern FILE *stderr; /* Make them macros (7.19.1ยง3) */ #define stdin stdin #define stdout stdout #define stderr stderr /* ** Formatted input/output functions. ** ** These functions implement most of printf(3)'s features, including: ** - Signed and unsigned integer formats (%d, %i, %o, %u, %x, %X) ** - Character, string and pointer formats (%c, %s, %p) ** - Character count and strerror() shorthand formats (%n, %m) ** - Format options (0, #, -, (space), length, precision) ** - Parameter length (hh, h, l, ll, L, z, j, t) (L: if long double is 64-bit) ** - Limiting the size of the output and still returning the whole length ** - If __printf_enable_fp() from is called: floating-point ** formats (%e, %E, %f, %F, %g, %G) (disabled by default to save space) ** ** They do not (yet?) support: ** - Hexadecimal floating-point (%a, %A) ** - Printing long double values when long double is more than 64-bit ** - Dynamic length field (*) ** - Parameter reordering ($m) ** - Thousands separators (') and locale-aware digits (I) ** - Nonstandard/old synonyms %C (%lc), %S (%ls), q (ll), and Z (z) ** ** There are extensions, namely to allow for custom conversions to be added. ** One custom conversion can be enabled with __printf_enable_fixed() from ** : a decimal fixed-point format %D which is like %d but ** with a decimal point. See for details. */ /* Formatted print to file. */ extern int fprintf(FILE * __restrict__ __fp, char const * __restrict__ __format, ...); /* Formatted print to stdout. */ extern int printf( char const * __restrict__ __format, ...); /* Formatted print to string (with limited size). */ extern int snprintf(char * __restrict__ __str, size_t __size, char const * __restrict__ __format, ...); /* Formatted print to string (with unlimited size!). */ extern int sprintf(char * __restrict__ __str, char const * __restrict__ __format, ...); /* Formatted print to file (variable argument list). */ extern int vfprintf(FILE * __restrict__ __fp, char const * __restrict__ __format, va_list __args); /* Formatted print to stdout (variable argument list). */ extern int vprintf( char const * __restrict__ __format, va_list __args); /* Formatted print to string (limited size, variable argument list). */ extern int vsnprintf(char * __restrict__ __str, size_t __size, char const * __restrict__ __format, va_list __args); /* Formatted print to string (unlimited size!, variable argument list). */ extern int vsprintf(char * __restrict__ __str, char const * __restrict__ __format, va_list __args); /* putx() - display char / string */ extern int putchar(int c); extern int puts(const char *s); /* Extensions. */ /* Formatted print to file descriptor. */ extern int dprintf(int __fd, char const * __restrict__ __format, ...); /* Formatted print to file descriptor (variable argument list). */ extern int vdprintf(int __fd, char const * __restrict__ __format, va_list __args); /* Allocating sprintf(). */ extern int asprintf(char ** __restrict__ __str, char const * __restrict__ __format, ...); /* Allocating vsprintf(). */ extern int vasprintf(char ** __restrict__ __str, char const * __restrict__ __format, va_list __args); #ifdef __cplusplus } #endif #endif /*__STDIO_H__*/