aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--stdio-common/Makefile24
-rw-r--r--stdio-common/tst-freopen4-main.c44
2 files changed, 38 insertions, 30 deletions
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index 64b3575..ae2b90c 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -759,6 +759,30 @@ CFLAGS-tst-scanf-binary-gnu89.c += -std=gnu89 -DOBJPFX=\"$(objpfx)\"
CPPFLAGS += $(libio-mtsafe)
+make-tst-freopen4-out = \
+ $(run-program-prefix-before-env) \
+ $(run-program-env) \
+ MALLOC_TRACE=$(@:.out=.mtrace) \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so \
+ $(run-program-prefix-after-env) $<
+
+freopen4-temp-dir-before = warning: could not remove temporary file:
+freopen4-temp-dir-after = : No such file or directory
+
+$(objpfx)tst-freopen4.out: $(objpfx)tst-freopen4
+ $(make-tst-freopen4-out) > $@ && \
+ grep "$(freopen4-temp-dir-before)" $@ \
+ | sed -e "s/$(freopen4-temp-dir-before)//; s/$(freopen4-temp-dir-after)//" \
+ | xargs rm -rf; \
+ $(evaluate-test)
+
+$(objpfx)tst-freopen64-4.out: $(objpfx)tst-freopen64-4
+ $(make-tst-freopen4-out) > $@ && \
+ grep "$(freopen4-temp-dir-before)" $@ \
+ | sed -e "s/$(freopen4-temp-dir-before)//; s/$(freopen4-temp-dir-after)//" \
+ | xargs rm -rf; \
+ $(evaluate-test)
+
$(objpfx)tst-setvbuf1.out: /dev/null $(objpfx)tst-setvbuf1
$(test-program-cmd) > $@ 2>&1; \
$(evaluate-test)
diff --git a/stdio-common/tst-freopen4-main.c b/stdio-common/tst-freopen4-main.c
index 436da4d..3336f53 100644
--- a/stdio-common/tst-freopen4-main.c
+++ b/stdio-common/tst-freopen4-main.c
@@ -28,15 +28,25 @@
#include <support/test-driver.h>
#include <support/xstdio.h>
#include <support/xunistd.h>
-#include <support/capture_subprocess.h>
-static void
-do_test_chroot (void *data)
+int
+do_test (void)
{
- char *temp_dir = (char *) data;
+ mtrace ();
+ char *temp_dir;
FILE *fp;
int ret;
+ /* These chroot tests verify that either reopening a renamed or
+ deleted file works even in the absence of /proc, or that it fails
+ (without memory leaks); thus, for example, such reopening does
+ not crash in the absence of /proc. */
+
+ support_become_root ();
+ if (!support_can_chroot ())
+ return EXIT_UNSUPPORTED;
+
+ temp_dir = support_create_temp_directory ("tst-freopen4");
xchroot (temp_dir);
/* Test freopen with NULL, renamed file. This verifies that
@@ -86,32 +96,6 @@ do_test_chroot (void *data)
puts ("freopen of deleted file failed (OK)");
free (temp_dir);
-}
-
-int
-do_test (void)
-{
- mtrace ();
- char *temp_dir;
-
- /* These chroot tests verify that either reopening a renamed or
- deleted file works even in the absence of /proc, or that it fails
- (without memory leaks); thus, for example, such reopening does
- not crash in the absence of /proc. */
-
- support_become_root ();
- if (!support_can_chroot ())
- return EXIT_UNSUPPORTED;
-
- temp_dir = support_create_temp_directory ("tst-freopen4");
-
- struct support_capture_subprocess result;
- result = support_capture_subprocess (do_test_chroot, temp_dir);
- support_capture_subprocess_check (&result, "freopen4", 0,
- sc_allow_stdout);
- fputs (result.out.buffer, stdout);
- support_capture_subprocess_free (&result);
-
return 0;
}