Blame stdio-common/tst-fwrite.c

Packit Service 82fcde
/* Derived from the test case in
Packit Service 82fcde
   https://sourceware.org/bugzilla/show_bug.cgi?id=1078.  */
Packit Service 82fcde
#include <stdio.h>
Packit Service 82fcde
#include <stdlib.h>
Packit Service 82fcde
#include <unistd.h>
Packit Service 82fcde
Packit Service 82fcde
#define OUT_SIZE 10000
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
static int fd;
Packit Service 82fcde
Packit Service 82fcde
static void prepare (void);
Packit Service 82fcde
#define PREPARE(argc, argv) prepare ()
Packit Service 82fcde
Packit Service 82fcde
static int do_test (void);
Packit Service 82fcde
#define TEST_FUNCTION do_test ()
Packit Service 82fcde
Packit Service 82fcde
#include "../test-skeleton.c"
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
static void
Packit Service 82fcde
prepare (void)
Packit Service 82fcde
{
Packit Service 82fcde
  fd = create_temp_file ("tst-fwrite.", NULL);
Packit Service 82fcde
  if (fd == -1)
Packit Service 82fcde
    {
Packit Service 82fcde
      puts ("cannot create temporary file");
Packit Service 82fcde
      exit (1);
Packit Service 82fcde
    }
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
static int
Packit Service 82fcde
do_test (void)
Packit Service 82fcde
{
Packit Service 82fcde
  FILE* f = fdopen (fd, "w+");
Packit Service 82fcde
  if (f == NULL) {
Packit Service 82fcde
    puts ("cannot create stream");
Packit Service 82fcde
    return 1;
Packit Service 82fcde
  }
Packit Service 82fcde
  puts ("Opened temp file");
Packit Service 82fcde
Packit Service 82fcde
  if (fwrite ("a", 1, 1, f) != 1)
Packit Service 82fcde
    {
Packit Service 82fcde
      puts ("1st fwrite failed");
Packit Service 82fcde
      return 1;
Packit Service 82fcde
    }
Packit Service 82fcde
  puts ("Wrote a byte");
Packit Service 82fcde
  fflush (f);
Packit Service 82fcde
Packit Service 82fcde
  char buffer[10000];
Packit Service 82fcde
  size_t i = fread (buffer, 1, sizeof (buffer), f);
Packit Service 82fcde
  printf ("Read %zu bytes\n", i);
Packit Service 82fcde
Packit Service 82fcde
  for (i = 0; i < OUT_SIZE; i++)
Packit Service 82fcde
    {
Packit Service 82fcde
      if (fwrite ("n", 1, 1, f) != 1)
Packit Service 82fcde
	{
Packit Service 82fcde
	  printf ("fwrite in loop round %zu failed\n", i);
Packit Service 82fcde
	  return 1;
Packit Service 82fcde
	}
Packit Service 82fcde
Packit Service 82fcde
      if ((i + 1) % 1000 == 0)
Packit Service 82fcde
	printf ("wrote %zu bytes ...\n", i + 1);
Packit Service 82fcde
    }
Packit Service 82fcde
Packit Service 82fcde
  printf ("Wrote %i bytes [done]\n", OUT_SIZE);
Packit Service 82fcde
Packit Service 82fcde
  return 0;
Packit Service 82fcde
}