diff options
Diffstat (limited to 'libio')
-rw-r--r-- | libio/bug-mmap-fflush.c | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/libio/bug-mmap-fflush.c b/libio/bug-mmap-fflush.c index 984acb4..d8aa589 100644 --- a/libio/bug-mmap-fflush.c +++ b/libio/bug-mmap-fflush.c @@ -4,24 +4,50 @@ #include <stdlib.h> #include <string.h> -int main (void) + +static char *fname; + +static void prepare (void); +#define PREPARE(argc, argv) prepare () + + +#define TEST_FUNCTION do_test () +static int do_test (void); +#include "../test-skeleton.c" + + +static void +prepare (void) +{ + int fd = create_temp_file ("bug-mmap-fflush.", &fname); + if (fd == -1) + exit (3); + /* We don't need the descriptor. */ + close (fd); +} + + +static int +do_test (void) { FILE *f; off_t o; - char buffer [1024]; + char buffer[1024]; - system ("echo 'From foo@bar.com' > test"); - f = fopen ("test", "r"); + snprintf (buffer, sizeof (buffer), "echo 'From foo@bar.com' > %s", fname); + system (buffer); + f = fopen (fname, "r"); fseek (f, 0, SEEK_END); o = ftello (f); fseek (f, 0, SEEK_SET); fflush (f); - system ("echo 'From bar@baz.edu' >> test"); + snprintf (buffer, sizeof (buffer), "echo 'From bar@baz.edu' >> %s", fname); + system (buffer); fseek (f, o, SEEK_SET); if (fgets (buffer, 1024, f) == NULL) - abort (); + exit (1); if (strncmp (buffer, "From ", 5) != 0) - abort (); + exit (1); fclose (f); exit (0); } |