X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Fstdio.h;h=cb858618512d8ac4f764698177356337494ece56;hb=d8f35e29d0e35a90f44c04de585470c211afddf9;hp=9aa2f782627ca8acbfcc76a472388d942de1b902;hpb=9bff7c133e73ecfb200614d7a7d386a164a1a61f;p=musl diff --git a/include/stdio.h b/include/stdio.h index 9aa2f782..cb858618 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -5,22 +5,30 @@ extern "C" { #endif +#include + #define __NEED_FILE -#define __NEED_va_list +#define __NEED___isoc_va_list #define __NEED_size_t +#if __STDC_VERSION__ < 201112L +#define __NEED_struct__IO_FILE +#endif + #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) #define __NEED_ssize_t #define __NEED_off_t +#define __NEED_va_list #endif #include -#undef NULL -#ifdef __cplusplus -#define NULL 0 +#if __cplusplus >= 201103L +#define NULL nullptr +#elif defined(__cplusplus) +#define NULL 0L #else #define NULL ((void*)0) #endif @@ -40,13 +48,14 @@ extern "C" { #define _IONBF 2 #define BUFSIZ 1024 -#define FILENAME_MAX 4095 +#define FILENAME_MAX 4096 #define FOPEN_MAX 1000 #define TMP_MAX 10000 #define L_tmpnam 20 -typedef union { +typedef union _G_fpos64_t { char __opaque[16]; + long long __lldata; double __align; } fpos_t; @@ -58,8 +67,8 @@ extern FILE *const stderr; #define stdout (stdout) #define stderr (stderr) -FILE *fopen(const char *, const char *); -FILE *freopen(const char *, const char *, FILE *); +FILE *fopen(const char *__restrict, const char *__restrict); +FILE *freopen(const char *__restrict, const char *__restrict, FILE *__restrict); int fclose(FILE *); int remove(const char *); @@ -74,11 +83,11 @@ int fseek(FILE *, long, int); long ftell(FILE *); void rewind(FILE *); -int fgetpos(FILE *, fpos_t *); +int fgetpos(FILE *__restrict, fpos_t *__restrict); int fsetpos(FILE *, const fpos_t *); -size_t fread(void *, size_t, size_t, FILE *); -size_t fwrite(const void *, size_t, size_t, FILE *); +size_t fread(void *__restrict, size_t, size_t, FILE *__restrict); +size_t fwrite(const void *__restrict, size_t, size_t, FILE *__restrict); int fgetc(FILE *); int getc(FILE *); @@ -89,35 +98,35 @@ int fputc(int, FILE *); int putc(int, FILE *); int putchar(int); -char *fgets(char *, int, FILE *); +char *fgets(char *__restrict, int, FILE *__restrict); #if __STDC_VERSION__ < 201112L char *gets(char *); #endif -int fputs(const char *, FILE *); +int fputs(const char *__restrict, FILE *__restrict); int puts(const char *); -int printf(const char *, ...); -int fprintf(FILE *, const char *, ...); -int sprintf(char *, const char *, ...); -int snprintf(char *, size_t, const char *, ...); +int printf(const char *__restrict, ...); +int fprintf(FILE *__restrict, const char *__restrict, ...); +int sprintf(char *__restrict, const char *__restrict, ...); +int snprintf(char *__restrict, size_t, const char *__restrict, ...); -int vprintf(const char *, va_list); -int vfprintf(FILE *, const char *, va_list); -int vsprintf(char *, const char *, va_list); -int vsnprintf(char *, size_t, const char *, va_list); +int vprintf(const char *__restrict, __isoc_va_list); +int vfprintf(FILE *__restrict, const char *__restrict, __isoc_va_list); +int vsprintf(char *__restrict, const char *__restrict, __isoc_va_list); +int vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list); -int scanf(const char *, ...); -int fscanf(FILE *, const char *, ...); -int sscanf(const char *, const char *, ...); -int vscanf(const char *, va_list); -int vfscanf(FILE *, const char *, va_list); -int vsscanf(const char *, const char *, va_list); +int scanf(const char *__restrict, ...); +int fscanf(FILE *__restrict, const char *__restrict, ...); +int sscanf(const char *__restrict, const char *__restrict, ...); +int vscanf(const char *__restrict, __isoc_va_list); +int vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list); +int vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list); void perror(const char *); -int setvbuf(FILE *, char *, int, size_t); -void setbuf(FILE *, char *); +int setvbuf(FILE *__restrict, char *__restrict, int, size_t); +void setbuf(FILE *__restrict, char *__restrict); char *tmpnam(char *); FILE *tmpfile(void); @@ -125,7 +134,7 @@ FILE *tmpfile(void); #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ || defined(_BSD_SOURCE) -FILE *fmemopen(void *, size_t, const char *); +FILE *fmemopen(void *__restrict, size_t, const char *__restrict); FILE *open_memstream(char **, size_t *); FILE *fdopen(int, const char *); FILE *popen(const char *, const char *); @@ -133,8 +142,8 @@ int pclose(FILE *); int fileno(FILE *); int fseeko(FILE *, off_t, int); off_t ftello(FILE *); -int dprintf(int, const char *, ...); -int vdprintf(int, const char *, va_list); +int dprintf(int, const char *__restrict, ...); +int vdprintf(int, const char *__restrict, __isoc_va_list); void flockfile(FILE *); int ftrylockfile(FILE *); void funlockfile(FILE *); @@ -142,8 +151,8 @@ int getc_unlocked(FILE *); int getchar_unlocked(void); int putc_unlocked(int, FILE *); int putchar_unlocked(int); -ssize_t getdelim(char **, size_t *, int, FILE *); -ssize_t getline(char **, size_t *, FILE *); +ssize_t getdelim(char **__restrict, size_t *__restrict, int, FILE *__restrict); +ssize_t getline(char **__restrict, size_t *__restrict, FILE *__restrict); int renameat(int, const char *, int, const char *); char *ctermid(char *); #define L_ctermid 20 @@ -172,20 +181,31 @@ int ferror_unlocked(FILE *); int fileno_unlocked(FILE *); int getw(FILE *); int putw(int, FILE *); -#endif - -#ifdef _BSD_SOURCE char *fgetln(FILE *, size_t *); +int asprintf(char **, const char *, ...); +int vasprintf(char **, const char *, __isoc_va_list); #endif #ifdef _GNU_SOURCE -int asprintf(char **, const char *, ...); -int vasprintf(char **, const char *, va_list); char *fgets_unlocked(char *, int, FILE *); int fputs_unlocked(const char *, FILE *); + +typedef ssize_t (cookie_read_function_t)(void *, char *, size_t); +typedef ssize_t (cookie_write_function_t)(void *, const char *, size_t); +typedef int (cookie_seek_function_t)(void *, off_t *, int); +typedef int (cookie_close_function_t)(void *); + +typedef struct _IO_cookie_io_functions_t { + cookie_read_function_t *read; + cookie_write_function_t *write; + cookie_seek_function_t *seek; + cookie_close_function_t *close; +} cookie_io_functions_t; + +FILE *fopencookie(void *, const char *, cookie_io_functions_t); #endif -#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) +#if defined(_LARGEFILE64_SOURCE) #define tmpfile64 tmpfile #define fopen64 fopen #define freopen64 freopen