*: do not assign to stdout/stderr, it's not portable.

Based on patch by Aaron Carroll <xaaronc@gmail.com>

function                                             old     new   delta
time_main                                           1062    1052     -10
cpio_main                                            563     549     -14

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2010-01-02 18:49:22 +01:00
parent 1ee5afdce2
commit c066472b0c
3 changed files with 3 additions and 11 deletions

View File

@ -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();

View File

@ -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,

View File

@ -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))