[Spice-devel] [PATCH] Attempt to manage redirection in a way similar to Unix
Fabiano FidĂȘncio
fidencio at redhat.com
Wed Apr 27 12:32:40 UTC 2016
On Tue, Apr 26, 2016 at 12:29 PM, Frediano Ziglio <fziglio at redhat.com> wrote:
> ping
>
The idea is good, but didn't work according to my tests with a Win7 machine :-\
> ----- Original Message -----
>>
>> 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 at redhat.com>
>> ---
>> src/virt-viewer-util.c | 30 +++++++++++++++++++++++-------
>> 1 file changed, 23 insertions(+), 7 deletions(-)
>>
>> diff --git a/src/virt-viewer-util.c b/src/virt-viewer-util.c
>> index 8cf52ec..fb8604b 100644
>> --- a/src/virt-viewer-util.c
>> +++ b/src/virt-viewer-util.c
>> @@ -265,13 +265,29 @@ 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 */
>> + STARTUPINFO si;
>> + memset(&si, 0, sizeof(si));
>> + si.cb = sizeof(si);
>> + si.dwFlags = STARTF_USESTDHANDLES;
>> + GetStartupInfo(&si);
>> + gboolean out_valid = si.hStdOutput != INVALID_HANDLE_VALUE;
>> + gboolean err_valid = si.hStdError != INVALID_HANDLE_VALUE;
>> +
>> + /*
>> + * 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
More information about the Spice-devel
mailing list