#include <glib/gi18n.h>
#include <evince-document.h>
#include <evince-view.h>
-#include "ev-stock-icons.h"
#include "ev-previewer-window.h"
+#ifdef G_OS_WIN32
+#ifdef DATADIR
+#undef DATADIR
+#endif
+#include <io.h>
+#include <conio.h>
+#define _WIN32_WINNT 0x0500
+#include <windows.h>
+#endif
+
static gboolean unlink_temp_file = FALSE;
static const gchar *print_settings;
static const gchar **filenames;
ev_previewer_unlink_tempfile (const gchar *filename)
{
GFile *file, *tempdir;
-
- if (!unlink_temp_file)
- return;
file = g_file_new_for_path (filename);
tempdir = g_file_new_for_path (g_get_tmp_dir ());
const gchar *filename;
GError *error = NULL;
+#ifdef G_OS_WIN32
+ 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 != NULL && p_AttachConsole (ATTACH_PARENT_PROCESS))
+ {
+ freopen ("CONOUT$", "w", stdout);
+ dup2 (fileno (stdout), 1);
+ freopen ("CONOUT$", "w", stderr);
+ dup2 (fileno (stderr), 2);
+
+ }
+ }
+#endif
+
/* Init glib threads asap */
if (!g_thread_supported ())
g_thread_init (NULL);
gtk_main ();
- ev_previewer_unlink_tempfile (filename);
+ if (unlink_temp_file)
+ ev_previewer_unlink_tempfile (filename);
+ if (print_settings)
+ ev_previewer_unlink_tempfile (print_settings);
ev_shutdown ();
ev_stock_icons_shutdown ();