int i;
size_t i;
main (void){  char buf[20];  int i;  int res = 0;  int fd;  mtrace ();  strcpy (buf, "test-vfprintfXXXXXX");  fd = mkstemp (buf);  if (fd == -1)    {      printf ("cannot open temporary file: %m\n");      exit (1);    }  unlink (buf);  for (i = 0; i < nlocs; ++i)    {      FILE *fp;      struct stat st;      int fd2;      setlocale (LC_ALL, locs[i]);      memset (large, '\1', sizeof (large));      large[sizeof (large) - 1] = '\0';      fd2 = dup (fd);      if (fd2 == -1)	{	  printf ("cannot dup for locale %s: %m\n",		  setlocale (LC_ALL, NULL));	  exit (1);	}      if (ftruncate (fd2, 0) != 0)	{	  printf ("cannot truncate file for locale %s: %m\n",		  setlocale (LC_ALL, NULL));	  exit (1);	}      fp = fdopen (fd2, "a");      if (fp == NULL)	{	  printf ("cannot create FILE for locale %s: %m\n",		  setlocale (LC_ALL, NULL));	  exit (1);	}      fprintf (fp, "%s", large);      fprintf (fp, "%.*s", 30000, large);      large[20000] = '\0';      fprintf (fp, large);      if (fflush (fp) != 0 || ferror (fp) != 0 || fclose (fp) != 0)	{	  printf ("write error for locale %s: %m\n",		  setlocale (LC_ALL, NULL));	  exit (1);	}      if (fstat (fd, &st) != 0)	{	  printf ("cannot stat for locale %s: %m\n",		  setlocale (LC_ALL, NULL));	  exit (1);	}      else if (st.st_size != 99999)	{	  printf ("file size incorrect for locale %s: %jd instead of %jd\n",		  setlocale (LC_ALL, NULL),		  (intmax_t) st.st_size, (intmax_t) 99999);	  res = 1;	}      else	printf ("locale %s OK\n", setlocale (LC_ALL, NULL));    }  close (fd);  return res;}