1affac5b5115d7df292d4c635f6cbb4d836a296d
[kopensolaris-gnu/glibc.git] / stdio-common / tstdiomisc.c
1 #include <stdio.h>
2
3 int
4 t1 (void)
5 {
6   int n = -1;
7   sscanf ("abc  ", "abc %n", &n);
8   printf ("t1: count=%d\n", n);
9
10   return n != 5;
11 }
12
13 int
14 t2 (void)
15 {
16   int result = 0;
17   int n;
18   long N;
19   int retval;
20 #define SCAN(INPUT, FORMAT, VAR, EXP_RES, EXP_VAL) \
21   VAR = -1; \
22   retval = sscanf (INPUT, FORMAT, &VAR); \
23   printf ("sscanf (\"%s\", \"%s\", &x) => %d, x = %ld\n", \
24           INPUT, FORMAT, retval, (long int) VAR); \
25   result |= retval != EXP_RES || VAR != EXP_VAL
26
27   SCAN ("12345", "%ld", N, 1, 12345);
28   SCAN ("12345", "%llllld", N, 0, -1);
29   SCAN ("12345", "%LLLLLd", N, 0, -1);
30   SCAN ("test ", "%*s%n",  n, 0, 4);
31   SCAN ("test ", "%2*s%n",  n, 0, -1);
32   SCAN ("12 ",   "%l2d",  n, 0, -1);
33   SCAN ("12 ",   "%2ld",  N, 1, 12);
34
35   n = -1;
36   N = -1;
37   retval = sscanf ("1 1", "%d %Z", &n, &N);
38   printf ("sscanf (\"1 1\", \"%%d %%Z\", &n, &N) => %d, n = %d, N = %ld\n", \
39           retval, n, N); \
40   result |= retval != 1 || n != 1 || N != -1;
41
42   return result;
43 }
44
45 int
46 main (int argc, char *argv[])
47 {
48   int result = 0;
49
50   result |= t1 ();
51   result |= t2 ();
52
53   result |= fflush (stdout) == EOF;
54
55   return result;
56 }