[PATCH] cpio: use freopen instead of explicit assignment to stdout
Denys Vlasenko
vda.linux at googlemail.com
Sat Jan 2 17:51:45 UTC 2010
On Sunday 27 December 2009 06:01, Aaron Carroll wrote:
> stdout isn't required to be an lvalue, so cpio won't compile
> on some implementations.
>
> Signed-off-by: Aaron Carroll <aaronc at cse.unsw.edu.au>
> ---
> archival/cpio.c | 3 +--
> 1 files changed, 1 insertions(+), 2 deletions(-)
>
> diff --git a/archival/cpio.c b/archival/cpio.c
> index 41aeef1..e712173 100644
> --- a/archival/cpio.c
> +++ b/archival/cpio.c
> @@ -354,8 +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);
> + freopen(cpio_filename, "w", stdout);
> /* Paranoia: I don't trust libc that much */
> xdup2(fileno(stdout), STDOUT_FILENO);
> }
time.c needs similar treatment.
I also decide to simply sneak behind stdio.h back and simply replace
the fd:
xmove_fd(xopen3(cpio_filename, O_WRONLY | O_CREAT | O_TRUNC, 0666), STDOUT_FILENO);
Fixed, thanks!
--
vda
More information about the busybox
mailing list