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