6 #include <gnu/option-groups.h>
12 sscanf ("abc ", "abc %n", &n);
13 printf ("t1: count=%d\n", n);
25 #define SCAN(INPUT, FORMAT, VAR, EXP_RES, EXP_VAL) \
27 retval = sscanf (INPUT, FORMAT, &VAR); \
28 printf ("sscanf (\"%s\", \"%s\", &x) => %d, x = %ld\n", \
29 INPUT, FORMAT, retval, (long int) VAR); \
30 result |= retval != EXP_RES || VAR != EXP_VAL
32 SCAN ("12345", "%ld", N, 1, 12345);
33 SCAN ("12345", "%llllld", N, 0, -1);
34 SCAN ("12345", "%LLLLLd", N, 0, -1);
35 SCAN ("test ", "%*s%n", n, 0, 4);
36 SCAN ("test ", "%2*s%n", n, 0, -1);
37 SCAN ("12 ", "%l2d", n, 0, -1);
38 SCAN ("12 ", "%2ld", N, 1, 12);
42 retval = sscanf ("1 1", "%d %Z", &n, &N);
43 printf ("sscanf (\"1 1\", \"%%d %%Z\", &n, &N) => %d, n = %d, N = %ld\n", \
45 result |= retval != 1 || n != 1 || N != -1;
50 volatile double nanval;
51 volatile double infval;
52 volatile long double lnanval;
53 volatile long double linfval;
65 snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
66 nanval, nanval, nanval, nanval, nanval, nanval, nanval, nanval);
67 result = strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
68 printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf);
70 snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
71 -nanval, -nanval, -nanval, -nanval,
72 -nanval, -nanval, -nanval, -nanval);
73 result = strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
74 printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
77 infval = DBL_MAX * DBL_MAX;
79 snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
80 infval, infval, infval, infval, infval, infval, infval, infval);
81 result |= strcmp (buf, "inf INF inf INF inf INF inf INF") != 0;
82 printf ("expected \"inf INF inf INF inf INF inf INF\", got \"%s\"\n", buf);
84 snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G",
85 -infval, -infval, -infval, -infval,
86 -infval, -infval, -infval, -infval);
87 result |= strcmp (buf, "-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
88 printf ("expected \"-inf -INF -inf -INF -inf -INF -inf -INF\", got \"%s\"\n",
91 #if __OPTION_POSIX_C_LANG_WIDE_CHAR
92 swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
93 nanval, nanval, nanval, nanval, nanval, nanval, nanval, nanval);
94 result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
95 printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf);
97 swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
98 -nanval, -nanval, -nanval, -nanval,
99 -nanval, -nanval, -nanval, -nanval);
100 result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
101 printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
104 swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
105 infval, infval, infval, infval, infval, infval, infval, infval);
106 result |= wcscmp (wbuf, L"inf INF inf INF inf INF inf INF") != 0;
107 printf ("expected L\"inf INF inf INF inf INF inf INF\", got L\"%S\"\n", wbuf);
109 swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G",
110 -infval, -infval, -infval, -infval,
111 -infval, -infval, -infval, -infval);
112 result |= wcscmp (wbuf, L"-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
113 printf ("expected L\"-inf -INF -inf -INF -inf -INF -inf -INF\", got L\"%S\"\n",
115 #endif /* __OPTION_POSIX_C_LANG_WIDE_CHAR */
119 snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
120 lnanval, lnanval, lnanval, lnanval,
121 lnanval, lnanval, lnanval, lnanval);
122 result = strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0;
123 printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf);
125 snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
126 -lnanval, -lnanval, -lnanval, -lnanval,
127 -lnanval, -lnanval, -lnanval, -lnanval);
128 result = strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
129 printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n",
132 linfval = LDBL_MAX * LDBL_MAX;
134 snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
135 linfval, linfval, linfval, linfval,
136 linfval, linfval, linfval, linfval);
137 result |= strcmp (buf, "inf INF inf INF inf INF inf INF") != 0;
138 printf ("expected \"inf INF inf INF inf INF inf INF\", got \"%s\"\n", buf);
140 snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG",
141 -linfval, -linfval, -linfval, -linfval,
142 -linfval, -linfval, -linfval, -linfval);
143 result |= strcmp (buf, "-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
144 printf ("expected \"-inf -INF -inf -INF -inf -INF -inf -INF\", got \"%s\"\n",
147 #if __OPTION_POSIX_C_LANG_WIDE_CHAR
148 swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
149 L"%La %LA %Le %LE %Lf %LF %Lg %LG",
150 lnanval, lnanval, lnanval, lnanval,
151 lnanval, lnanval, lnanval, lnanval);
152 result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0;
153 printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf);
155 swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
156 L"%La %LA %Le %LE %Lf %LF %Lg %LG",
157 -lnanval, -lnanval, -lnanval, -lnanval,
158 -lnanval, -lnanval, -lnanval, -lnanval);
159 result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0;
160 printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n",
163 swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
164 L"%La %LA %Le %LE %Lf %LF %Lg %LG",
165 linfval, linfval, linfval, linfval,
166 linfval, linfval, linfval, linfval);
167 result |= wcscmp (wbuf, L"inf INF inf INF inf INF inf INF") != 0;
168 printf ("expected L\"inf INF inf INF inf INF inf INF\", got L\"%S\"\n", wbuf);
170 swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]),
171 L"%La %LA %Le %LE %Lf %LF %Lg %LG",
172 -linfval, -linfval, -linfval, -linfval,
173 -linfval, -linfval, -linfval, -linfval);
174 result |= wcscmp (wbuf, L"-inf -INF -inf -INF -inf -INF -inf -INF") != 0;
175 printf ("expected L\"-inf -INF -inf -INF -inf -INF -inf -INF\", got L\"%S\"\n",
177 #endif /* __OPTION_POSIX_C_LANG_WIDE_CHAR */
183 main (int argc, char *argv[])
191 result |= fflush (stdout) == EOF;