diff options
Diffstat (limited to 'capplet')
-rw-r--r-- | capplet/Makefile.am | 4 | ||||
-rw-r--r-- | capplet/anjal-settings-main.c | 29 |
2 files changed, 27 insertions, 6 deletions
diff --git a/capplet/Makefile.am b/capplet/Makefile.am index db32e89444..f57bbe0447 100644 --- a/capplet/Makefile.am +++ b/capplet/Makefile.am @@ -44,6 +44,10 @@ evolution_settings_SOURCES = \ evolution_settings_LDFLAGS = \ -Wl,--export-dynamic +if OS_WIN32 +evolution_settings_LDFLAGS += -mwindows +endif + evolution_settings_LDADD = \ $(EVOLUTION_MAIL_LIBS) \ $(CERT_UI_LIBS) \ diff --git a/capplet/anjal-settings-main.c b/capplet/anjal-settings-main.c index bdb257a99b..c9e08d18c0 100644 --- a/capplet/anjal-settings-main.c +++ b/capplet/anjal-settings-main.c @@ -41,9 +41,16 @@ #ifdef G_OS_WIN32 #define WIN32_LEAN_AND_MEAN +#ifdef DATADIR +#undef DATADIR +#endif +#include <io.h> +#include <conio.h> +#define _WIN32_WINNT 0x0501 #include <windows.h> #endif + #include <unique/unique.h> gboolean windowed = FALSE; @@ -173,8 +180,22 @@ main (int argc, char *argv[]) UniqueApp *app; #ifdef G_OS_WIN32 - extern void link_shutdown (void); - set_paths (); + if (fileno (stdout) != -1 && _get_osfhandle (fileno (stdout)) != -1) { + /* stdout is fine, presumably redirected to a file or pipe */ + } else { + typedef BOOL (* WINAPI AttachConsole_t) (DWORD); + + AttachConsole_t p_AttachConsole = + (AttachConsole_t) GetProcAddress ( + GetModuleHandle ("kernel32.dll"), "AttachConsole"); + + if (p_AttachConsole && p_AttachConsole (ATTACH_PARENT_PROCESS)) { + freopen ("CONOUT$", "w", stdout); + dup2 (fileno (stdout), 1); + freopen ("CONOUT$", "w", stderr); + dup2 (fileno (stderr), 2); + } + } #endif static GOptionEntry entries[] = { @@ -245,10 +266,6 @@ main (int argc, char *argv[]) gtk_main (); - -#ifdef G_OS_WIN32 - link_shutdown (); -#endif return 0; } |