diff options
Diffstat (limited to 'stdio-common/tst-fmemopen.c')
-rw-r--r-- | stdio-common/tst-fmemopen.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/stdio-common/tst-fmemopen.c b/stdio-common/tst-fmemopen.c index 3c06c45c78..8aa047e3c1 100644 --- a/stdio-common/tst-fmemopen.c +++ b/stdio-common/tst-fmemopen.c @@ -8,11 +8,10 @@ #include <sys/stat.h> #include <sys/types.h> -#define TEST_FILE "test-1" - int -main (void) +main (int argc, char **argv) { + const char *test_file; const char blah[] = "BLAH"; FILE *fp; char *mmap_data; @@ -20,8 +19,14 @@ main (void) struct stat fs; const char *cp; + /* Construct the test file name based on ARGV[0], which will be + an absolute file name in the build directory. Don't touch the + source directory, which might be read-only. */ + if (argc != 1 || asprintf (&test_file, "%s.test", argv[0]) < 0) + exit (99); + /* setup the physical file, and use it */ - if ((fp = fopen (TEST_FILE, "w+")) == NULL) + if ((fp = fopen (test_file, "w+")) == NULL) exit (1); if (fwrite (blah, 1, strlen (blah), fp) != strlen (blah)) exit (2); @@ -56,7 +61,7 @@ main (void) fclose (fp); /* Now, mmap the file into a buffer, and do that too */ - if ((fd = open (TEST_FILE, O_RDONLY)) == -1) + if ((fd = open (test_file, O_RDONLY)) == -1) exit (3); if (fstat (fd, &fs) == -1) exit (4); @@ -105,7 +110,8 @@ main (void) munmap (mmap_data, fs.st_size); - unlink (TEST_FILE); + unlink (test_file); + free (test_file); return 0; } |