Blame libio/bug-mmap-fflush.c
|
Packit |
6c4009 |
/* Test for bug in fflush synchronization behavior. */
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#include <stdio.h>
|
|
Packit |
6c4009 |
#include <stdlib.h>
|
|
Packit |
6c4009 |
#include <string.h>
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
static char *fname;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
static void prepare (void);
|
|
Packit |
6c4009 |
#define PREPARE(argc, argv) prepare ()
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#define TEST_FUNCTION do_test ()
|
|
Packit |
6c4009 |
static int do_test (void);
|
|
Packit |
6c4009 |
#include "../test-skeleton.c"
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
static void
|
|
Packit |
6c4009 |
prepare (void)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
int fd = create_temp_file ("bug-mmap-fflush.", &fname);
|
|
Packit |
6c4009 |
if (fd == -1)
|
|
Packit |
6c4009 |
exit (3);
|
|
Packit |
6c4009 |
/* We don't need the descriptor. */
|
|
Packit |
6c4009 |
close (fd);
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
static int
|
|
Packit |
6c4009 |
do_test (void)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
FILE *f;
|
|
Packit |
6c4009 |
off_t o;
|
|
Packit |
6c4009 |
char buffer[1024];
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
snprintf (buffer, sizeof (buffer), "echo 'From foo@bar.com' > %s", fname);
|
|
Packit |
6c4009 |
system (buffer);
|
|
Packit |
6c4009 |
f = fopen (fname, "r");
|
|
Packit |
6c4009 |
fseek (f, 0, SEEK_END);
|
|
Packit |
6c4009 |
o = ftello (f);
|
|
Packit |
6c4009 |
fseek (f, 0, SEEK_SET);
|
|
Packit |
6c4009 |
fflush (f);
|
|
Packit |
6c4009 |
snprintf (buffer, sizeof (buffer), "echo 'From bar@baz.edu' >> %s", fname);
|
|
Packit |
6c4009 |
system (buffer);
|
|
Packit |
6c4009 |
fseek (f, o, SEEK_SET);
|
|
Packit |
6c4009 |
if (fgets (buffer, 1024, f) == NULL)
|
|
Packit |
6c4009 |
exit (1);
|
|
Packit |
6c4009 |
if (strncmp (buffer, "From ", 5) != 0)
|
|
Packit |
6c4009 |
exit (1);
|
|
Packit |
6c4009 |
fclose (f);
|
|
Packit |
6c4009 |
exit (0);
|
|
Packit |
6c4009 |
}
|