On Mon, May 2, 2016 at 11:43 PM, Fabiano Fidêncio <fabiano@xxxxxxxxxxxx> wrote: > On Fri, Apr 29, 2016 at 4:09 PM, Frediano Ziglio <fziglio@xxxxxxxxxx> wrote: >> This patch allows remote-viewer to redirect output/error streams to >> files. >> Also if launched from a console program (for instance from the command >> prompt) you are able to see output from the console where you launch >> the program. >> This allow to launch the program with a syntax like >> > remote-viewer.exe --debug > log.txt 2>&1 >> or simply >> > remote-viewer.exe --debug >> >> Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> >> --- >> src/virt-viewer-util.c | 36 +++++++++++++++++++++++++++++------- >> 1 file changed, 29 insertions(+), 7 deletions(-) >> >> Changes from previous version: >> - fixed different redirection combinations; >> - tested on Windows XP, 7 and 10. >> >> diff --git a/src/virt-viewer-util.c b/src/virt-viewer-util.c >> index 8cf52ec..ebe039c 100644 >> --- a/src/virt-viewer-util.c >> +++ b/src/virt-viewer-util.c >> @@ -253,6 +253,17 @@ static void log_handler(const gchar *log_domain, >> g_log_default_handler(log_domain, log_level, message, unused_data); >> } >> >> +#ifdef G_OS_WIN32 >> +static BOOL is_handle_valid(HANDLE h) >> +{ >> + if (h == INVALID_HANDLE_VALUE || h == NULL) >> + return FALSE; >> + >> + DWORD flags; >> + return GetHandleInformation(h, &flags); >> +} >> +#endif >> + >> void virt_viewer_util_init(const char *appname) >> { >> #ifdef G_OS_WIN32 >> @@ -265,13 +276,24 @@ void virt_viewer_util_init(const char *appname) >> */ >> CreateMutexA(0, 0, "VirtViewerMutex"); >> >> - if (AttachConsole(ATTACH_PARENT_PROCESS) != 0) { >> - freopen("CONIN$", "r", stdin); >> - freopen("CONOUT$", "w", stdout); >> - freopen("CONOUT$", "w", stderr); >> - dup2(fileno(stdin), STDIN_FILENO); >> - dup2(fileno(stdout), STDOUT_FILENO); >> - dup2(fileno(stderr), STDERR_FILENO); >> + /* Get redirection from parent */ >> + BOOL out_valid = is_handle_valid(GetStdHandle(STD_OUTPUT_HANDLE)); >> + BOOL err_valid = is_handle_valid(GetStdHandle(STD_ERROR_HANDLE)); >> + >> + /* >> + * If not all output are redirected try to redirect to parent console. >> + * If parent has no console (for instance as launched from GUI) just >> + * rely on default (no output). >> + */ >> + if ((!out_valid || !err_valid) && AttachConsole(ATTACH_PARENT_PROCESS)) { >> + if (!out_valid) { >> + freopen("CONOUT$", "w", stdout); >> + dup2(fileno(stdout), STDOUT_FILENO); >> + } >> + if (!err_valid) { >> + freopen("CONOUT$", "w", stderr); >> + dup2(fileno(stderr), STDERR_FILENO); >> + } >> } >> >> /* Disable input method handling so that the Zenkaku_Hankaku can be passed >> -- >> 2.5.5 >> >> _______________________________________________ >> Spice-devel mailing list >> Spice-devel@xxxxxxxxxxxxxxxxxxxxx >> https://lists.freedesktop.org/mailman/listinfo/spice-devel > > > Acked-by: Fabiano Fidêncio <fidencio@xxxxxxxxxx> Slightly modified the commit short-log and pushed. Thanks for the patch! > -- > Fabiano Fidêncio -- Fabiano Fidêncio _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel