diff options
Diffstat (limited to 'stdio-common')
-rw-r--r-- | stdio-common/Makefile | 24 | ||||
-rw-r--r-- | stdio-common/tst-freopen4-main.c | 44 |
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; } |