1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /* Test for bug in fflush synchronization behavior. */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- 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];
- 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);
- snprintf (buffer, sizeof (buffer), "echo 'From bar@baz.edu' >> %s", fname);
- system (buffer);
- fseek (f, o, SEEK_SET);
- if (fgets (buffer, 1024, f) == NULL)
- exit (1);
- if (strncmp (buffer, "From ", 5) != 0)
- exit (1);
- fclose (f);
- exit (0);
- }
|