/* { dg-skip-if "requires io" { freestanding } }  */

#ifndef test
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

void
inner (int x, ...)
{
  va_list ap, ap2;
  va_start (ap, x);
  va_start (ap2, x);

  switch (x)
    {
#define test(n, ret, fmt, args) \
    case n:					\
      vfprintf (stdout, fmt, ap);		\
      if (vfprintf (stdout, fmt, ap2) != ret)	\
	abort ();				\
      break;
#include "vfprintf-1.c"
#undef test
    default:
      abort ();
    }

  va_end (ap);
  va_end (ap2);
}

int
main (void)
{
#define test(n, ret, fmt, args) \
  inner args;
#include "vfprintf-1.c"
#undef test
  return 0;
}

#else
  test (0, 5, "hello", (0));
  test (1, 6, "hello\n", (1));
  test (2, 1, "a", (2));
  test (3, 0, "", (3));
  test (4, 5, "%s", (4, "hello"));
  test (5, 6, "%s", (5, "hello\n"));
  test (6, 1, "%s", (6, "a"));
  test (7, 0, "%s", (7, ""));
  test (8, 1, "%c", (8, 'x'));
  test (9, 7, "%s\n", (9, "hello\n"));
  test (10, 2, "%d\n", (10, 0));
#endif
