modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/vfprintf-1.c (about)

     1  /* { dg-skip-if "requires io" { freestanding } }  */
     2  
     3  #ifndef test
     4  #include <stdio.h>
     5  #include <stdlib.h>
     6  #include <stdarg.h>
     7  
     8  void
     9  inner (int x, ...)
    10  {
    11    va_list ap, ap2;
    12    va_start (ap, x);
    13    va_start (ap2, x);
    14  
    15    switch (x)
    16      {
    17  #define test(n, ret, fmt, args) \
    18      case n:					\
    19        vfprintf (stdout, fmt, ap);		\
    20        if (vfprintf (stdout, fmt, ap2) != ret)	\
    21  	abort ();				\
    22        break;
    23  #include "vfprintf-1.c"
    24  #undef test
    25      default:
    26        abort ();
    27      }
    28  
    29    va_end (ap);
    30    va_end (ap2);
    31  }
    32  
    33  int
    34  main (void)
    35  {
    36  #define test(n, ret, fmt, args) \
    37    inner args;
    38  #include "vfprintf-1.c"
    39  #undef test
    40    return 0;
    41  }
    42  
    43  #else
    44    test (0, 5, "hello", (0));
    45    test (1, 6, "hello\n", (1));
    46    test (2, 1, "a", (2));
    47    test (3, 0, "", (3));
    48    test (4, 5, "%s", (4, "hello"));
    49    test (5, 6, "%s", (5, "hello\n"));
    50    test (6, 1, "%s", (6, "a"));
    51    test (7, 0, "%s", (7, ""));
    52    test (8, 1, "%c", (8, 'x'));
    53    test (9, 7, "%s\n", (9, "hello\n"));
    54    test (10, 2, "%d\n", (10, 0));
    55  #endif