#include #include #include #include static void do_prepare (void); #define PREPARE(argc, argv) do_prepare () static int do_test (void); #define TEST_FUNCTION do_test () #include int fd; static void do_prepare (void) { fd = create_temp_file ("tst-eof.", NULL); if (fd == -1) { printf ("cannot create temporary file: %m\n"); exit (1); } } static int do_test (void) { char buf[40]; FILE *fp; if (write (fd, "some string\n", 12) != 12) { printf ("cannot write temporary file: %m\n"); return 1; } if (lseek (fd, 0, SEEK_SET) == (off_t) -1) { printf ("cannot reposition temporary file: %m\n"); return 1; } fp = fdopen (fd, "r"); if (fp == NULL) { printf ("cannot create stream: %m\n"); return 1; } if (feof (fp)) { puts ("EOF set after fdopen"); return 1; } if (fread (buf, 1, 20, fp) != 12) { puts ("didn't read the correct number of bytes"); return 1; } if (! feof (fp)) { puts ("EOF not set after fread"); return 1; } fclose (fp); return 0; }