*: do not assign to stdout/stderr, it's not portable.
No binary (build failed)
—
(log yok)
| @@ -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(); | |
| @@ -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, | |
| @@ -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)) | |