api: shorten function checks (and put each into a different scope)
[libc-test] / src / api / stdio.c
1 #include <stdio.h>
2 #define T(t) (t*)0;
3 #define F(t,n) {t *y = &x.n;}
4 #define C(n) switch(n){case n:;}
5 static void f()
6 {
7 T(FILE)
8 T(fpos_t)
9 T(off_t)
10 T(size_t)
11 C(BUFSIZ)
12 #ifdef _POSIX_C_SOURCE
13 T(ssize_t)
14 T(va_list)
15 C(L_ctermid)
16 #endif
17 C(_IOFBF)
18 C(_IOLBF)
19 C(_IONBF)
20 C(SEEK_CUR)
21 C(SEEK_END)
22 C(SEEK_SET)
23 C(FILENAME_MAX)
24 C(FOPEN_MAX)
25 C(EOF)
26 {void *x=NULL;}
27 {FILE *x=stderr;}
28 {FILE *x=stdin;}
29 {FILE *x=stdout;}
30 {void(*p)(FILE*) = clearerr;}
31 {char*(*p)(char*) = ctermid;}
32 {int(*p)(int,const char*restrict,...) = dprintf;}
33 {int(*p)(FILE*) = fclose;}
34 FILE*(*p)(int,const char*) = fdopen;
35 {int(*p)(FILE*) = feof;}
36 {int(*p)(FILE*) = ferror;}
37 {int(*p)(FILE*) = fflush;}
38 {int(*p)(FILE*) = fgetc;}
39 {int(*p)(FILE*restrict,fpos_t*restrict) = fgetpos;}
40 {char*(*p)(char*restrict,int,FILE*restrict) = fgets;}
41 {int(*p)(FILE*) = fileno;}
42 {void(*p)(FILE*) = flockfile;}
43 FILE*(*p)(void*restrict,size_t,const char*restrict) = fmemopen;
44 FILE*(*p)(const char*restrict,const char*restrict) = fopen;
45 {int(*p)(FILE*restrict,const char*restrict,...) = fprintf;}
46 {int(*p)(int,FILE*) = fputc;}
47 {int(*p)(const char*restrict,FILE*restrict) = fputs;}
48 {size_t(*p)(void*restrict,size_t,size_t,FILE*restrict) = fread;}
49 FILE*(*p)(const char*restrict,const char*restrict,FILE*restrict) = freopen;
50 {int(*p)(FILE*restrict,const char*restrict,...) = fscanf;}
51 {int(*p)(FILE*,long,int) = fseek;}
52 {int(*p)(FILE*,off_t,int) = fseeko;}
53 {int(*p)(FILE*,const fpos_t*) = fsetpos;}
54 {long(*p)(FILE*) = ftell;}
55 {off_t(*p)(FILE*) = ftello;}
56 {int(*p)(FILE*) = ftrylockfile;}
57 {void(*p)(FILE*) = funlockfile;}
58 {size_t(*p)(const void*restrict,size_t,size_t,FILE*restrict) = fwrite;}
59 {int(*p)(FILE*) = getc;}
60 {int(*p)(FILE*) = getc_unlocked;}
61 {int(*p)(void) = getchar;}
62 {int(*p)(void) = getchar_unlocked;}
63 {ssize_t(*p)(char**restrict,size_t*restrict,int,FILE*restrict) = getdelim;}
64 {ssize_t(*p)(char**restrict,size_t*restrict,FILE*restrict) = getline;}
65 {char*(*p)(char*) = gets;}
66 FILE*(*p)(char**,size_t*) = open_memstream;
67 {int(*p)(FILE*) = pclose;}
68 {void(*p)(const char*) = perror;}
69 FILE*(*p)(const char*,const char*) = popen;
70 {int(*p)(const char*restrict,...) = printf;}
71 {int(*p)(int,FILE*) = putc;}
72 {int(*p)(int,FILE*) = putc_unlocked;}
73 {int(*p)(int) = putchar;}
74 {int(*p)(int) = putchar_unlocked;}
75 {int(*p)(const char*) = puts;}
76 {int(*p)(const char*) = remove;}
77 {int(*p)(const char*,const char*) = rename;}
78 {int(*p)(int,const char*,int,const char*) = renameat;}
79 {void(*p)(FILE*) = rewind;}
80 {int(*p)(const char*restrict,...) = scanf;}
81 {void(*p)(FILE*restrict,char*restrict) = setbuf;}
82 {int(*p)(FILE*restrict,char*restrict,int,size_t) = setvbuf;}
83 {int(*p)(char*restrict,size_t,const char*restrict,...) = snprintf;}
84 {int(*p)(char*restrict,const char*restrict,...) = sprintf;}
85 {int(*p)(const char*restrict,const char*restrict,...) = sscanf;}
86 {char*(*p)(const char*,const char*) = tempnam;}
87 FILE*(*p)(void) = tmpfile;
88 {char*(*p)(char*) = tmpnam;}
89 {int(*p)(int,FILE*) = ungetc;}
90 }
91 #include <wchar.h>
92 static void g()
93 {
94 {wint_t(*p)(int) = btowc;}
95 {wint_t(*p)(FILE*) = fgetwc;}
96 {wchar_t*(*p)(wchar_t*restrict,int,FILE*restrict) = fgetws;}
97 {wint_t(*p)(wchar_t,FILE*) = fputwc;}
98 {int(*p)(const wchar_t*restrict,FILE*restrict) = fputws;}
99 {int(*p)(FILE*,int) = fwide;}
100 {int(*p)(FILE*restrict,const wchar_t*restrict,...) = fwprintf;}
101 {int(*p)(FILE*restrict,const wchar_t*restrict,...) = fwscanf;}
102 {wint_t(*p)(FILE*) = getwc;}
103 {wint_t(*p)(wchar_t,FILE*) = putwc;}
104 {int(*p)(wchar_t*restrict,size_t,const wchar_t*restrict,...) = swprintf;}
105 {int(*p)(const wchar_t*restrict,const wchar_t*restrict,...) = swscanf;}
106 {wint_t(*p)(wint_t,FILE*) = ungetwc;}
107 {int(*p)(wint_t) = wctob;}
108 {int(*p)(const wchar_t*restrict,...) = wprintf;}
109 {int(*p)(const wchar_t*restrict,...) = wscanf;}
110 }
111 #include <stdarg.h>
112 static void h()
113 {
114 {int(*p)(int,const char*restrict,va_list) = vdprintf;}
115 {int(*p)(FILE*restrict,const char*restrict,va_list) = vfprintf;}
116 {int(*p)(FILE*restrict,const char*restrict,va_list) = vfscanf;}
117 {int(*p)(const char*restrict,va_list) = vprintf;}
118 {int(*p)(const char*restrict,va_list) = vscanf;}
119 {int(*p)(char*restrict,size_t,const char*restrict,va_list) = vsnprintf;}
120 {int(*p)(char*restrict,const char*restrict,va_list) = vsprintf;}
121 {int(*p)(const char*restrict,const char*restrict,va_list) = vsscanf;}
122
123 {int(*p)(FILE*restrict,const wchar_t*restrict,va_list) = vfwprintf;}
124 {int(*p)(FILE*restrict,const wchar_t*restrict,va_list) = vfwscanf;}
125 {int(*p)(wchar_t*restrict,size_t,const wchar_t*restrict,va_list) = vswprintf;}
126 {int(*p)(const wchar_t*restrict,const wchar_t*restrict,va_list) = vswscanf;}
127 {int(*p)(const wchar_t*restrict,va_list) = vwprintf;}
128 {int(*p)(const wchar_t*restrict,va_list) = vwscanf;}
129 }