From c4f65e05c4a450b1e243134c690b934ff44fb1cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Pierre=20Andr=C3=A9?= Date: Sat, 9 Feb 2013 12:12:02 +0100 Subject: [PATCH] Cleaned selecting stdout or stderr for messages from ntfsclone Depending on the options selected, ntfsclone messages are output on stdout or stderr. This is now done through standard logging procedures. --- ntfsprogs/ntfsclone.c | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/ntfsprogs/ntfsclone.c b/ntfsprogs/ntfsclone.c index d8181c23..3f16662a 100644 --- a/ntfsprogs/ntfsclone.c +++ b/ntfsprogs/ntfsclone.c @@ -504,26 +504,16 @@ static void parse_options(int argc, char **argv) } } - msg_out = stdout; - - /* FIXME: this is a workaround for losing debug info if stdout != stderr - and for the uncontrollable verbose messages in libntfs. Ughhh. */ - if (opt.std_out) + /* + * Send messages, debug information and library messages to stdout, + * but, if outputing to stdout send them to stderr + */ + if (opt.std_out) { msg_out = stderr; - else if (opt.debug) { - /* Redirect stderr to stdout, note fflush()es are essential! */ - fflush(stdout); - fflush(stderr); - if (dup2(STDOUT_FILENO, STDERR_FILENO) == -1) { - perror("Failed to redirect stderr to stdout"); - exit(1); - } - fflush(stdout); - fflush(stderr); + ntfs_log_set_handler(ntfs_log_handler_stderr); } else { - fflush(stderr); - if (!freopen("/dev/null", "w", stderr)) - perr_exit("Failed to redirect stderr to /dev/null"); + msg_out = stdout; + ntfs_log_set_handler(ntfs_log_handler_outerr); } }