/* Derived from the test case in http://sourceware.org/bugzilla/show_bug.cgi?id=1078. */ #include #include #include #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; }