diff options
Diffstat (limited to 'src/lib/libast/features/stdio')
-rw-r--r-- | src/lib/libast/features/stdio | 568 |
1 files changed, 568 insertions, 0 deletions
diff --git a/src/lib/libast/features/stdio b/src/lib/libast/features/stdio new file mode 100644 index 0000000..b323893 --- /dev/null +++ b/src/lib/libast/features/stdio @@ -0,0 +1,568 @@ +set prototyped +ref -D_def_map_ast=1 +iff SFSTDIO +cat{ + #define __FILE_typedef 1 + #define _FILE_DEFINED 1 + #define _FILE_defined 1 + #define _FILEDEFED 1 + + #ifndef __FILE_TAG + #define __FILE_TAG _sfio_s + #endif + + #undef FILE + #undef _FILE + #undef fpos_t + #undef fpos64_t + + typedef struct _sfio_s _sfio_FILE; + + #define FILE _sfio_FILE + #define _FILE FILE + + #if !defined(__FILE) && !__CYGWIN__ + #undef __FILE + #define __FILE FILE + #endif + + #if defined(_AST_H) || defined(_SFIO_H) + + #define BUFSIZ SF_BUFSIZE + + #else + + #ifndef BUFSIZ + #define BUFSIZ 8192 + #endif + + #ifndef EOF + #define EOF (-1) + #endif + + #ifndef NULL + #define NULL 0 + #endif + + #ifndef SEEK_SET + #define SEEK_SET 0 + #define SEEK_CUR 1 + #define SEEK_END 2 + #endif + + #include <ast_std.h> + + #include <sfio_s.h> + + #if __cplusplus + #define _sf_(f) (f) + #else + #define _sf_(f) ((struct _sfio_s*)(f)) + #endif + + #define _SF_EOF 0000200 + #define _SF_ERROR 0000400 + + #endif + + #ifdef _NO_LARGEFILE64_SOURCE + #undef _LARGEFILE64_SOURCE + #endif + + #ifdef _LARGEFILE64_SOURCE + #undef off_t + #endif + + #define fpos_t _ast_fpos_t + #if _typ_int64_t + #define fpos64_t _ast_fpos_t + #endif + + typedef struct _ast_fpos_s + { + intmax_t _sf_offset; + unsigned char _sf_state[64 - sizeof(intmax_t)]; + } _ast_fpos_t; + + #define _base _data + #define _ptr _next + #define _IOFBF 0 + #define _IONBF 1 + #define _IOLBF 2 + + #if defined(__cplusplus) && defined(__THROW) && !defined(_UWIN) + + #undef FILE + #define FILE FILE + typedef struct _sfio_s FILE; + + #undef strerror + extern char* strerror(int) __THROW; + + extern int _doprnt(const char*, va_list, FILE*); + extern int _doscan(FILE*, const char*, va_list); + extern int asprintf(char**, const char*, ...); + extern int clearerr(FILE*); + extern int fclose(FILE*); + extern FILE* fdopen(int, const char*); + extern int feof(FILE*); + extern int ferror(FILE*); + extern int fflush(FILE*); + extern int fgetc(FILE*); + extern int fgetpos(FILE*, fpos_t*); + extern char* fgets(char*, int, FILE*); + extern int fileno(FILE*); + extern FILE* fopen(const char*, const char*); + extern int fprintf(FILE*, const char*, ...); + extern int fpurge(FILE*); + extern int fputc(int, FILE*); + extern int fputs(const char*, FILE*); + extern size_t fread(void*, size_t, size_t, FILE*); + extern FILE* freopen(const char*, const char*, FILE*); + extern int fscanf(FILE*, const char*, ...); + extern int fseek(FILE*, long, int); + extern int fseeko(FILE*, off_t, int); + extern int fsetpos(FILE*, const fpos_t*); + extern long ftell(FILE*); + extern off_t ftello(FILE*); + extern size_t fwrite(const void*, size_t, size_t, FILE*); + extern int getc(FILE*); + extern int getchar(void); + extern char* gets(char*); + extern int getw(FILE*); + extern int pclose(FILE*); + extern FILE* popen(const char*, const char*); + extern int printf(const char*, ...); + extern int putc(int, FILE*); + extern int putchar(int); + extern int puts(const char*); + extern int putw(int, FILE*); + extern void rewind(FILE*); + extern int scanf(const char*, ...); + extern void setbuf(FILE*, char*); + extern int setbuffer(FILE*, char*, int); + extern int setlinebuf(FILE*); + extern int setvbuf(FILE*, char*, int, size_t); + extern int snprintf(char*, int, const char*, ...); + extern int sprintf(char*, const char*, ...); + extern int sscanf(const char*, const char*, ...); + extern FILE* tmpfile(void); + extern int ungetc(int, FILE*); + extern int vasprintf(char**, const char*, va_list); + extern int vfprintf(FILE*, const char*, va_list); + extern int vfscanf(FILE*, const char*, va_list); + extern int vprintf(const char*, va_list); + extern int vscanf(const char*, va_list); + extern int vsnprintf(char*, int, const char*, va_list); + extern int vsprintf(char*, const char*, va_list); + extern int vsscanf(const char*, const char*, va_list); + + #if _typ_int64_t + + extern int fgetpos64(FILE*, fpos64_t*); + extern int fsetpos64(FILE*, const fpos64_t*); + extern int fseek64(FILE*, int64_t, int); + extern int fseeko64(FILE*, int64_t, int); + extern int64_t ftell64(FILE*); + extern int64_t ftello64(FILE*); + + #endif + + extern void clearerr_unlocked(FILE*); + extern int feof_unlocked(FILE*); + extern int ferror_unlocked(FILE*); + extern int fflush_unlocked(FILE*); + extern int fgetc_unlocked(FILE*); + extern char* fgets_unlocked(char*, int, FILE*); + extern int fileno_unlocked(FILE*); + extern int fputc_unlocked(int, FILE*); + extern int fputs_unlocked(char*, FILE*); + extern size_t fread_unlocked(void*, size_t, size_t, FILE*); + extern size_t fwrite_unlocked(void*, size_t, size_t, FILE*); + extern int getc_unlocked(FILE*); + extern int getchar_unlocked(void); + extern int putc_unlocked(int, FILE*); + extern int putchar_unlocked(int); + + extern void flockfile(FILE*); + extern int ftrylockfile(FILE*); + extern void funlockfile(FILE*); + + #ifdef _USE_GNU + + extern int fcloseall(void); + extern FILE* fmemopen(void*, size_t, const char*); + extern ssize_t __getdelim(char**, size_t*, int, FILE*); + extern ssize_t getdelim(char**, size_t*, int, FILE*); + extern ssize_t getline(char**, size_t*, FILE*); + + #endif + + #endif +}end +output{ + #include <stdio.h> + #ifndef FILENAME_MAX + #ifndef NAME_MAX + #ifndef _POSIX_NAME_MAX + #define _POSIX_NAME_MAX 14 + #endif + #define NAME_MAX _POSIX_NAME_MAX + #endif + #define FILENAME_MAX NAME_MAX + #endif + #ifndef FOPEN_MAX + #ifdef STREAM_MAX + #define FOPEN_MAX STREAM_MAX + #else + #ifndef OPEN_MAX + #ifndef _POSIX_OPEN_MAX + #define _POSIX_OPEN_MAX 20 + #endif + #define OPEN_MAX _POSIX_OPEN_MAX + #endif + #define FOPEN_MAX OPEN_MAX + #endif + #endif + #ifndef TMP_MAX + #define TMP_MAX 33520641 + #endif + int + main() + { + printf("#ifndef FILENAME_MAX\n"); + printf("#define FILENAME_MAX %d\n", FILENAME_MAX); + printf("#endif\n"); + printf("#ifndef FOPEN_MAX\n"); + printf("#define FOPEN_MAX %d\n", FOPEN_MAX); + printf("#endif\n"); + printf("#ifndef TMP_MAX\n"); + printf("#define TMP_MAX %d\n", TMP_MAX); + printf("#endif\n"); + #if !_UWIN + printf("\n"); + printf("#define _doprnt _ast_doprnt\n"); + printf("#define _doscan _ast_doscan\n"); + printf("#define asprintf _ast_asprintf\n"); + printf("#define clearerr _ast_clearerr\n"); + printf("#define fclose _ast_fclose\n"); + printf("#define fdopen _ast_fdopen\n"); + printf("#define fflush _ast_fflush\n"); + printf("#define fgetc _ast_fgetc\n"); + printf("#define fgetpos _ast_fgetpos\n"); + printf("#define fgetpos64 _ast_fgetpos64\n"); + printf("#define fgets _ast_fgets\n"); + printf("#define fopen _ast_fopen\n"); + printf("#define fprintf _ast_fprintf\n"); + printf("#define fpurge _ast_fpurge\n"); + printf("#define fputs _ast_fputs\n"); + printf("#define fread _ast_fread\n"); + printf("#define freopen _ast_freopen\n"); + printf("#define fscanf _ast_fscanf\n"); + printf("#define fseek _ast_fseek\n"); + printf("#define fseek64 _ast_fseek64\n"); + printf("#define fseeko _ast_fseeko\n"); + printf("#define fseeko64 _ast_fseeko64\n"); + printf("#define fsetpos _ast_fsetpos\n"); + printf("#define fsetpos64 _ast_fsetpos64\n"); + printf("#define ftell _ast_ftell\n"); + printf("#define ftell64 _ast_ftell64\n"); + printf("#define ftello _ast_ftello\n"); + printf("#define ftello64 _ast_ftello64\n"); + printf("#define fwrite _ast_fwrite\n"); + printf("#define gets _ast_gets\n"); + printf("#define getw _ast_getw\n"); + printf("#define pclose _ast_pclose\n"); + printf("#define popen _ast_popen\n"); + printf("#define printf _ast_printf\n"); + printf("#define puts _ast_puts\n"); + printf("#define putw _ast_putw\n"); + printf("#define rewind _ast_rewind\n"); + printf("#define scanf _ast_scanf\n"); + printf("#define setbuf _ast_setbuf\n"); + printf("#undef setbuffer\n"); + printf("#define setbuffer _ast_setbuffer\n"); + printf("#define setlinebuf _ast_setlinebuf\n"); + printf("#define setvbuf _ast_setvbuf\n"); + printf("#define snprintf _ast_snprintf\n"); + printf("#define sprintf _ast_sprintf\n"); + printf("#define sscanf _ast_sscanf\n"); + printf("#define tmpfile _ast_tmpfile\n"); + printf("#define ungetc _ast_ungetc\n"); + printf("#define vasprintf _ast_vasprintf\n"); + printf("#define vfprintf _ast_vfprintf\n"); + printf("#define vfscanf _ast_vfscanf\n"); + printf("#define vprintf _ast_vprintf\n"); + printf("#define vscanf _ast_vscanf\n"); + printf("#define vsnprintf _ast_vsnprintf\n"); + printf("#define vsprintf _ast_vsprintf\n"); + printf("#define vsscanf _ast_vsscanf\n"); + + printf("#define fcloseall _ast_fcloseall\n"); + printf("#define _filbuf _ast__filbuf\n"); + printf("#define fmemopen _ast_fmemopen\n"); + printf("#define __getdelim _ast___getdelim\n"); + printf("#define getdelim _ast_getdelim\n"); + printf("#define getline _ast_getline\n"); + + printf("#define clearerr_unlocked _ast_clearerr_unlocked\n"); + printf("#define feof_unlocked _ast_feof_unlocked\n"); + printf("#define ferror_unlocked _ast_ferror_unlocked\n"); + printf("#define fflush_unlocked _ast_fflush_unlocked\n"); + printf("#define fgetc_unlocked _ast_fgetc_unlocked\n"); + printf("#define fgets_unlocked _ast_fgets_unlocked\n"); + printf("#define fileno_unlocked _ast_fileno_unlocked\n"); + printf("#define fputc_unlocked _ast_fputc_unlocked\n"); + printf("#define fputs_unlocked _ast_fputs_unlocked\n"); + printf("#define fread_unlocked _ast_fread_unlocked\n"); + printf("#define fwrite_unlocked _ast_fwrite_unlocked\n"); + printf("#define getc_unlocked _ast_getc_unlocked\n"); + printf("#define getchar_unlocked _ast_getchar_unlocked\n"); + printf("#define putc_unlocked _ast_putc_unlocked\n"); + printf("#define putchar_unlocked _ast_putchar_unlocked\n"); + + printf("#define flockfile _ast_flockfile\n"); + printf("#define ftrylockfile _ast_ftrylockfile\n"); + printf("#define funlockfile _ast_funlockfile\n"); + + printf("\n"); + #endif + return 0; + } +}end +macro{ + <<"#if defined(__STDPP__directive) && defined(__STDPP__initial)">> + <<"__STDPP__directive pragma pp:initial">> + <<"#endif">> + <<"#ifndef P_tmpdir">> + #ifndef P_tmpdir + #define P_tmpdir "/usr/tmp/" + #endif + <<"#define P_tmpdir">> P_tmpdir <<"/*NOCATLITERAL*/">> + <<"#endif">> + <<"#ifndef L_ctermid">> + #ifndef L_ctermid + #define L_ctermid 9 + #endif + <<"#define L_ctermid">> L_ctermid + <<"#endif">> + <<"#ifndef L_tmpnam">> + #ifndef L_tmpnam + #define L_tmpnam (sizeof(P_tmpdir)+15) + #endif + <<"#define L_tmpnam">> L_tmpnam + <<"#endif">> + <<"#if defined(__STDPP__directive) && defined(__STDPP__initial)">> + <<"__STDPP__directive pragma pp:noinitial">> + <<"#endif">> +}end +cat{ + #if defined(__cplusplus) && defined(__THROW) + extern char* ctermid(char*) __THROW; + #else + extern char* ctermid(char*); + #endif + extern char* tmpnam(char*); + extern char* tempnam(const char*, const char*); + extern void perror(const char*); + #ifndef _AST_STD_H + #ifndef remove + extern int remove(const char*); + #endif + #ifndef rename + extern int rename(const char*, const char*); + #endif + #endif + + #undef extern + + #if _BLD_ast && defined(__EXPORT__) + #define extern __EXPORT__ + #endif + + extern int _doprnt(const char*, va_list, FILE*); + extern int _doscan(FILE*, const char*, va_list); + extern int asprintf(char**, const char*, ...); + extern int clearerr(FILE*); + extern int fclose(FILE*); + extern FILE* fdopen(int, const char*); + extern int feof(FILE*); + extern int ferror(FILE*); + extern int fflush(FILE*); + extern int fgetc(FILE*); + extern int fgetpos(FILE*, fpos_t*); + extern char* fgets(char*, int, FILE*); + extern int fileno(FILE*); + extern FILE* fopen(const char*, const char*); + extern int fprintf(FILE*, const char*, ...); + extern int fpurge(FILE*); + extern int fputc(int, FILE*); + extern int fputs(const char*, FILE*); + extern size_t fread(void*, size_t, size_t, FILE*); + extern FILE* freopen(const char*, const char*, FILE*); + extern int fscanf(FILE*, const char*, ...); + extern int fseek(FILE*, long, int); + extern int fseeko(FILE*, off_t, int); + extern int fsetpos(FILE*, const fpos_t*); + extern long ftell(FILE*); + extern off_t ftello(FILE*); + extern size_t fwrite(const void*, size_t, size_t, FILE*); + extern int getc(FILE*); + extern int getchar(void); + extern char* gets(char*); + extern int getw(FILE*); + extern int pclose(FILE*); + extern FILE* popen(const char*, const char*); + extern int printf(const char*, ...); + extern int putc(int, FILE*); + extern int putchar(int); + extern int puts(const char*); + extern int putw(int, FILE*); + extern void rewind(FILE*); + extern int scanf(const char*, ...); + extern void setbuf(FILE*, char*); + extern int setbuffer(FILE*, char*, int); + extern int setlinebuf(FILE*); + extern int setvbuf(FILE*, char*, int, size_t); + extern int snprintf(char*, int, const char*, ...); + extern int sprintf(char*, const char*, ...); + extern int sscanf(const char*, const char*, ...); + extern FILE* tmpfile(void); + extern int ungetc(int, FILE*); + extern int vasprintf(char**, const char*, va_list); + extern int vfprintf(FILE*, const char*, va_list); + extern int vfscanf(FILE*, const char*, va_list); + extern int vprintf(const char*, va_list); + extern int vscanf(const char*, va_list); + extern int vsnprintf(char*, int, const char*, va_list); + extern int vsprintf(char*, const char*, va_list); + extern int vsscanf(const char*, const char*, va_list); + + #if _typ_int64_t + + extern int fgetpos64(FILE*, fpos64_t*); + extern int fsetpos64(FILE*, const fpos64_t*); + extern int fseek64(FILE*, int64_t, int); + extern int fseeko64(FILE*, int64_t, int); + extern int64_t ftell64(FILE*); + extern int64_t ftello64(FILE*); + + #ifdef _LARGEFILE64_SOURCE + + #undef fpos_t + #undef off_t + #undef fgetpos + #undef fsetpos + #undef fseek + #undef fseeko + #undef ftell + #undef ftello + + #define fpos_t fpos64_t + #if _typ_off64_t + #define off_t off64_t + #else + #define off_t int64_t + #endif + + #define fgetpos fgetpos64 + #define fsetpos fsetpos64 + #define fseek fseek64 + #define fseeko fseeko64 + #define ftell ftell64 + #define ftello ftello64 + + #endif + + #endif + + extern void clearerr_unlocked(FILE*); + extern int feof_unlocked(FILE*); + extern int ferror_unlocked(FILE*); + extern int fflush_unlocked(FILE*); + extern int fgetc_unlocked(FILE*); + extern char* fgets_unlocked(char*, int, FILE*); + extern int fileno_unlocked(FILE*); + extern int fputc_unlocked(int, FILE*); + extern int fputs_unlocked(char*, FILE*); + extern size_t fread_unlocked(void*, size_t, size_t, FILE*); + extern size_t fwrite_unlocked(void*, size_t, size_t, FILE*); + extern int getc_unlocked(FILE*); + extern int getchar_unlocked(void); + extern int putc_unlocked(int, FILE*); + extern int putchar_unlocked(int); + + #ifdef _USE_GNU + + extern int fcloseall(void); + extern FILE* fmemopen(void*, size_t, const char*); + extern ssize_t __getdelim(char**, size_t*, int, FILE*); + extern ssize_t getdelim(char**, size_t*, int, FILE*); + extern ssize_t getline(char**, size_t*, FILE*); + + #endif + + #undef extern + + #if _BLD_DLL && _DLL_INDIRECT_DATA + + #define stdin ((FILE*)_ast_dll->_ast_stdin) + #define stdout ((FILE*)_ast_dll->_ast_stdout) + #define stderr ((FILE*)_ast_dll->_ast_stderr) + + #else + + #define stdin (&_Sfstdin) + #define stdout (&_Sfstdout) + #define stderr (&_Sfstderr) + + #endif + + #if defined(_AST_H) || defined(_SFIO_H) + + #define feof(f) sfeof(f) + #define ferror(f) sferror(f) + #define fileno(f) sffileno(f) + #define fputc(c,f) sfputc(f,c) + #define getc(f) sfgetc(f) + #define getchar() sfgetc(sfstdin) + #define putc(c,f) sfputc(f,c) + #define putchar(c) sfputc(sfstdout,c) + + #else + + #if !_UWIN + #if _BLD_ast && defined(__EXPORT__) + #define extern extern __EXPORT__ + #endif + #if !_BLD_ast && defined(__IMPORT__) + #define extern extern __IMPORT__ + #endif + #endif + + extern FILE _Sfstdin; + extern FILE _Sfstdout; + extern FILE _Sfstderr; + + #undef extern + + #define feof(f) (_sf_(f)->_flags&_SF_EOF) + #define ferror(f) (_sf_(f)->_flags&_SF_ERROR) + #define fileno(f) (_sf_(f)->_file) + #define fputc(c,f) (_sf_(f)->_next>=_sf_(f)->_endw?_sfflsbuf(_sf_(f),(int)((unsigned char)(c))):(int)(*_sf_(f)->_next++=(unsigned char)(c))) + #define getc(f) (_sf_(f)->_next>=_sf_(f)->_endr?_sffilbuf(_sf_(f),0):(int)(*_sf_(f)->_next++)) + #define getchar() getc(stdin) + #define putc(c,f) fputc(c,f) + #define putchar(c) fputc(c,stdout) + + #if _BLD_ast && defined(__EXPORT__) + #define extern __EXPORT__ + #endif + + extern int _sffilbuf(FILE*, int); + extern int _sfflsbuf(FILE*, int); + + #undef extern + + #endif +}end |