diff options
author | jstebbins <jstebbins.hb@gmail.com> | 2010-05-23 16:26:02 +0000 |
---|---|---|
committer | jstebbins <jstebbins.hb@gmail.com> | 2010-05-23 16:26:02 +0000 |
commit | 083b8b8f56b49ad1073d4ae0bb9ab0d6c39f8d6d (patch) | |
tree | a3d62aaf938aa86feafb059860c192d2bbae5206 | |
parent | a42237e7c0cf5f19662990ae0b740715c2b67bfd (diff) |
fix stderr redirection on mingw. dup2 function doesn't work as it should so must
reach inside stderr struct and modify _file member directly
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3318 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r-- | gtk/src/main.c | 5 | ||||
-rw-r--r-- | libhb/hb.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gtk/src/main.c b/gtk/src/main.c index 20e9f8518..c26966db2 100644 --- a/gtk/src/main.c +++ b/gtk/src/main.c @@ -658,7 +658,12 @@ IoRedirect(signal_user_data_t *ud) // Set encoding to raw. g_io_channel_set_encoding (ud->activity_log, NULL, NULL); // redirect stderr to the writer end of the pipe +#if defined(_WIN32) + // dup2 doesn't work on windows for some stupid reason + stderr->_file = pfd[1]; +#else dup2(pfd[1], /*stderr*/2); +#endif setvbuf(stderr, NULL, _IONBF, 0); channel = g_io_channel_unix_new (pfd[0]); // I was getting an this error: diff --git a/libhb/hb.c b/libhb/hb.c index 9b1631396..001c74c0a 100644 --- a/libhb/hb.c +++ b/libhb/hb.c @@ -1750,7 +1750,12 @@ static void redirect_thread_func(void * _data) { int pfd[2]; pipe(pfd); +#if defined( SYS_MINGW ) + // dup2 doesn't work on windows for some stupid reason + stderr->_file = pfd[1]; +#else dup2(pfd[1], /*stderr*/ 2); +#endif FILE * log_f = fdopen(pfd[0], "rb"); char line_buffer[500]; |