|  | #include <fcntl.h> | 
|  | #include <stdio.h> | 
|  | #include <string.h> | 
|  | #include <unistd.h> | 
|  |  | 
|  |  | 
|  | static void do_prepare (void); | 
|  | #define PREPARE(argc, argv) do_prepare () | 
|  | static int do_test (void); | 
|  | #define TEST_FUNCTION do_test () | 
|  | #include <test-skeleton.c> | 
|  |  | 
|  |  | 
|  | 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; | 
|  | } |