printf ("%d: '%c' vs '%c'\n", i, ch1, ch2);
printf ("%zd: '%c' vs '%c'\n", i, ch1, ch2);
do_test (void){  int fd;  FILE *fp;  size_t i;  int result;  fd = mkstemp (fname);  if (fd == -1)    {      printf ("cannot open temporary file: %m\n");      return 1;    }  /* Make sure the file gets removed.  */  add_temp_file (fname);  /* Repeatability demands this.  */  srandom (42);  /* First create some temporary data.  */  for (i = 0; i < sizeof (tempdata); ++i)    tempdata[i] = 'a' + random () % 26;  /* Write this data to a file.  */  if (TEMP_FAILURE_RETRY (write (fd, tempdata, sizeof (tempdata)))      != sizeof (tempdata))    {      printf ("cannot wrote data to temporary file: %m\n");      return 1;    }  /* Now try reading the data.  */  fp = fdopen (dup (fd), "r");  if (fp == NULL)    {      printf ("cannot duplicate temporary file descriptor: %m\n");      return 1;    }  rewind (fp);  for (i = 0; i < sizeof (tempdata); ++i)    {      int ch0 = fgetc (fp);      char ch1 = ch0;      char ch2 = tempdata[i];      if (ch0 == EOF)	{	  puts ("premature end of file while reading data");	  return 1;	}      if (ch1 != ch2)	{	  printf ("%d: '%c' vs '%c'\n", i, ch1, ch2);	  return 1;	}    }  result = fp_test ("fdopen(\"r\")", fp);  fp = fopen (fname, "r");  result |= fp_test ("fopen(\"r\")", fp);  fp = fopen64 (fname, "r");  result |= fp_test ("fopen64(\"r\")", fp);  /* The "rw" mode will prevent the mmap-using code from being used.  */  fp = fdopen (fd, "rw");  result = fp_test ("fdopen(\"rw\")", fp);  fp = fopen (fname, "rw");  result |= fp_test ("fopen(\"rw\")", fp);  fp = fopen64 (fname, "rw");  result |= fp_test ("fopen64(\"rw\")", fp);  return result;}