From c066472b0cfba62260ccb86d567a11c8b3d395e3 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sat, 2 Jan 2010 18:49:22 +0100 Subject: [PATCH] *: do not assign to stdout/stderr, it's not portable. Based on patch by Aaron Carroll function old new delta time_main 1062 1052 -10 cpio_main 563 549 -14 Signed-off-by: Denys Vlasenko --- archival/cpio.c | 5 +---- libbb/xfuncs_printf.c | 5 +---- miscutils/time.c | 4 +--- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/archival/cpio.c b/archival/cpio.c index 41aeef171..f139f3130 100644 --- a/archival/cpio.c +++ b/archival/cpio.c @@ -354,10 +354,7 @@ int cpio_main(int argc UNUSED_PARAM, char **argv) if (*cpio_fmt != 'n') /* we _require_ "-H newc" */ bb_show_usage(); if (opt & CPIO_OPT_FILE) { - fclose(stdout); - stdout = fopen_for_write(cpio_filename); - /* Paranoia: I don't trust libc that much */ - xdup2(fileno(stdout), STDOUT_FILENO); + xmove_fd(xopen3(cpio_filename, O_WRONLY | O_CREAT | O_TRUNC, 0666), STDOUT_FILENO); } dump: return cpio_o(); diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index d36284131..7207ec58a 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c @@ -263,10 +263,7 @@ int FAST_FUNC fflush_all(void) int FAST_FUNC bb_putchar(int ch) { - /* time.c needs putc(ch, stdout), not putchar(ch). - * it does "stdout = stderr;", but then glibc's putchar() - * doesn't work as expected. bad glibc, bad */ - return putc(ch, stdout); + return putchar(ch); } /* Die with an error message if we can't copy an entire FILE* to stdout, diff --git a/miscutils/time.c b/miscutils/time.c index 42c812a42..342173609 100644 --- a/miscutils/time.c +++ b/miscutils/time.c @@ -414,9 +414,7 @@ int time_main(int argc UNUSED_PARAM, char **argv) run_command(argv, &res); /* Cheat. printf's are shorter :) */ - /* (but see bb_putchar() body for additional wrinkle!) */ - xdup2(2, 1); /* just in case libc does something silly :( */ - stdout = stderr; + xdup2(STDERR_FILENO, STDOUT_FILENO); summarize(output_format, argv, &res); if (WIFSTOPPED(res.waitstatus))