summaryrefslogtreecommitdiff
path: root/stdio-common/tst-fmemopen.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2010-04-19 13:48:00 -0700
committerRoland McGrath <roland@redhat.com>2010-04-19 13:48:00 -0700
commitc98d4212d0d7c9dfc34cf18ea95740370bca5aad (patch)
tree6f1b421b1298e25390b63e7ff683ab7398185dce /stdio-common/tst-fmemopen.c
parent1cdb2151fbad6bff650e85a0476972881bbc027b (diff)
tst-fmemopen: Do not write test file in $srcdir.
Diffstat (limited to 'stdio-common/tst-fmemopen.c')
-rw-r--r--stdio-common/tst-fmemopen.c18
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;
}