int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { #ifdef _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 return AP_Win32App::WinMain("AbiWord", hInstance, hPrevInstance, szCmdLine, iCmdShow); }
void gitg_platform_support_application_support_prepare_startup (void) { /* If we open gedit from a console get the stdout printing */ 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); } } }
/* * This is the main routine for Bacula when running as an application, * or after the service has started up. */ int BaculaAppMain() { pthread_t tid; DWORD dwCharsWritten; OSDependentInit(); /* If no arguments were given then just run */ if (p_AttachConsole == NULL || !p_AttachConsole(ATTACH_PARENT_PROCESS)) { if (opt_debug) { AllocConsole(); } } WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), "\r\n", 2, &dwCharsWritten, NULL); /* Start up Volume Shadow Copy (only on FD) */ VSSInit(); /* Startup networking */ WSA_Init(); /* Set this process to be the last application to be shut down. */ if (p_SetProcessShutdownParameters) { p_SetProcessShutdownParameters(0x100, 0); } /* Create a thread to handle the Windows messages */ pthread_create(&tid, NULL, Main_Msg_Loop, (void *)0); /* Call the Unix Bacula daemon */ BaculaMain(num_command_args, command_args); PostQuitMessage(0); /* terminate our main message loop */ WSACleanup(); _exit(0); }
int main (int argc, char *argv[]) { GOptionContext *context; 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 #if (!GLIB_CHECK_VERSION(2,31,0)) /* Remove this once we bump dependencies to glib >= 2.31.0 */ /* Init glib threads asap */ if (!g_thread_supported ()) g_thread_init (NULL); #endif #ifdef ENABLE_NLS /* Initialize the i18n stuff */ bindtextdomain (GETTEXT_PACKAGE, ev_get_locale_dir()); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif context = g_option_context_new (N_("GNOME Document Viewer")); g_option_context_set_translation_domain(context, GETTEXT_PACKAGE); g_option_context_add_main_entries (context, goption_options, GETTEXT_PACKAGE); #ifdef WITH_SMCLIENT g_option_context_add_group (context, egg_sm_client_get_option_group ()); #endif g_option_context_add_group (context, gtk_get_option_group (TRUE)); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_printerr ("Cannot parse arguments: %s\n", error->message); g_error_free (error); g_option_context_free (context); return 1; } g_option_context_free (context); if (preview_mode) { gboolean retval; retval = launch_previewer (); return retval ? 0 : 1; } if (!ev_init ()) return 1; ev_stock_icons_init (); #if defined(WITH_SMCLIENT) && defined(GDK_WINDOWING_X11) egg_set_desktop_file (GNOMEDATADIR "/applications/evince.desktop"); #else /* Manually set name and icon */ g_set_application_name (_("Document Viewer")); gtk_window_set_default_icon_name ("evince"); #endif /* WITH_SMCLIENT && GDK_WINDOWING_X11 */ ev_application_load_session (EV_APP); load_files (file_arguments); /* Change directory so we don't prevent unmounting in case the initial cwd * is on an external device (see bug #575436) */ g_chdir (g_get_home_dir ()); gtk_main (); ev_shutdown (); ev_stock_icons_shutdown (); return 0; }
gint main (gint argc, gchar **argv) { GtkWidget *window; GOptionContext *context; const gchar *filename; EvDocumentModel *model; 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); #ifdef ENABLE_NLS /* Initialize the i18n stuff */ bindtextdomain (GETTEXT_PACKAGE, ev_get_locale_dir()); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif context = g_option_context_new (_("MATE Document Previewer")); g_option_context_set_translation_domain (context, GETTEXT_PACKAGE); g_option_context_add_main_entries (context, goption_options, GETTEXT_PACKAGE); g_option_context_add_group (context, gtk_get_option_group (TRUE)); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_warning ("Error parsing command line arguments: %s", error->message); g_error_free (error); g_option_context_free (context); return 1; } g_option_context_free (context); if (!filenames) { g_warning ("File argument is required"); return 1; } filename = filenames[0]; if (!g_file_test (filename, G_FILE_TEST_IS_REGULAR)) { g_warning ("Filename \"%s\" does not exist or is not a regular file", filename); return 1; } if (!ev_init ()) return 1; ev_stock_icons_init (); g_set_application_name (_("MATE Document Previewer")); gtk_window_set_default_icon_name ("atril"); model = ev_document_model_new (); window = ev_previewer_window_new (model); ev_previewer_window_set_source_file (EV_PREVIEWER_WINDOW (window), filename); ev_previewer_window_set_print_settings (EV_PREVIEWER_WINDOW (window), print_settings); g_signal_connect (window, "delete-event", G_CALLBACK (gtk_main_quit), NULL); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); gtk_widget_show (window); ev_previewer_load_document (filename, model); gtk_main (); if (unlink_temp_file) ev_previewer_unlink_tempfile (filename); if (print_settings) ev_previewer_unlink_tempfile (print_settings); ev_shutdown (); ev_stock_icons_shutdown (); g_object_unref (model); return 0; }
gint main (gint argc, gchar **argv) { EShell *shell; GSettings *settings; #ifdef DEVELOPMENT gboolean skip_warning_dialog; #endif GError *error = NULL; #ifdef G_OS_WIN32 gchar *path; /* Reduce risks */ { typedef BOOL (WINAPI *t_SetDllDirectoryA) (LPCSTR lpPathName); t_SetDllDirectoryA p_SetDllDirectoryA; p_SetDllDirectoryA = GetProcAddress ( GetModuleHandle ("kernel32.dll"), "SetDllDirectoryA"); if (p_SetDllDirectoryA) (*p_SetDllDirectoryA) (""); } #ifndef _WIN64 { typedef BOOL (WINAPI *t_SetProcessDEPPolicy) (DWORD dwFlags); t_SetProcessDEPPolicy p_SetProcessDEPPolicy; p_SetProcessDEPPolicy = GetProcAddress ( GetModuleHandle ("kernel32.dll"), "SetProcessDEPPolicy"); if (p_SetProcessDEPPolicy) (*p_SetProcessDEPPolicy) ( PROCESS_DEP_ENABLE | PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION); } #endif 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 /* Make ElectricFence work. */ free (malloc (10)); bindtextdomain (GETTEXT_PACKAGE, EVOLUTION_LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); /* do not require Gtk+ for --force-shutdown */ if (argc == 2 && argv[1] && g_str_equal (argv[1], "--force-shutdown")) { shell_force_shutdown (); return 0; } /* The contact maps feature uses clutter-gtk. */ #ifdef WITH_CONTACT_MAPS /* XXX This function is declared in gtk-clutter-util.h with an * unnecessary G_GNUC_WARN_UNUSED_RESULT attribute. But we * don't need the returned error code because we're checking * the GError directly. Just ignore this warning. */ gtk_clutter_init_with_args ( &argc, &argv, _("- The Evolution PIM and Email Client"), entries, (gchar *) GETTEXT_PACKAGE, &error); #else gtk_init_with_args ( &argc, &argv, _("- The Evolution PIM and Email Client"), entries, (gchar *) GETTEXT_PACKAGE, &error); #endif /* WITH_CONTACT_MAPS */ if (error != NULL) { g_printerr ("%s\n", error->message); g_error_free (error); exit (1); } #ifdef HAVE_ICAL_UNKNOWN_TOKEN_HANDLING ical_set_unknown_token_handling_setting (ICAL_DISCARD_TOKEN); #endif e_gdbus_templates_init_main_thread (); #ifdef G_OS_WIN32 path = g_build_path (";", _e_get_bindir (), g_getenv ("PATH"), NULL); if (!g_setenv ("PATH", path, TRUE)) g_warning ("Could not set PATH for Evolution and its child processes"); g_free (path); if (register_handlers || reinstall || show_icons) { _e_win32_register_mailer (); _e_win32_register_addressbook (); } if (register_handlers) exit (0); if (reinstall) { _e_win32_set_default_mailer (); exit (0); } if (show_icons) { _e_win32_set_default_mailer (); exit (0); } if (hide_icons) { _e_win32_unset_default_mailer (); exit (0); } if (unregister_handlers) { _e_win32_unregister_mailer (); _e_win32_unregister_addressbook (); exit (0); } if (strcmp (gettext (""), "") == 0) { /* No message catalog installed for the current locale * language, so don't bother with the localisations * provided by other things then either. Reset thread * locale to "en-US" and C library locale to "C". */ SetThreadLocale ( MAKELCID (MAKELANGID (LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT)); setlocale (LC_ALL, "C"); } #endif if (start_online && start_offline) { g_printerr ( _("%s: --online and --offline cannot be used " "together.\n Run '%s --help' for more " "information.\n"), argv[0], argv[0]); exit (1); } else if (force_online && start_offline) { g_printerr ( _("%s: --force-online and --offline cannot be used " "together.\n Run '%s --help' for more " "information.\n"), argv[0], argv[0]); exit (1); } if (force_shutdown) shell_force_shutdown (); if (disable_preview) { settings = g_settings_new ("org.gnome.evolution.mail"); g_settings_set_boolean (settings, "safe-list", TRUE); g_object_unref (settings); settings = g_settings_new ("org.gnome.evolution.addressbook"); g_settings_set_boolean (settings, "show-preview", FALSE); g_object_unref (settings); settings = g_settings_new ("org.gnome.evolution.calendar"); g_settings_set_boolean (settings, "show-memo-preview", FALSE); g_settings_set_boolean (settings, "show-task-preview", FALSE); g_object_unref (settings); } #ifdef G_OS_UNIX g_unix_signal_add_full ( G_PRIORITY_DEFAULT, SIGTERM, handle_term_signal, NULL, NULL); #endif e_passwords_init (); gtk_window_set_default_icon_name ("evolution"); if (setup_only) exit (0); categories_icon_theme_hack (); gtk_accel_map_load (e_get_accels_filename ()); #ifdef DEVELOPMENT settings = g_settings_new ("org.gnome.evolution.shell"); skip_warning_dialog = g_settings_get_boolean ( settings, "skip-warning-dialog"); if (!skip_warning_dialog && !getenv ("EVOLVE_ME_HARDER")) g_settings_set_boolean ( settings, "skip-warning-dialog", show_development_warning ()); g_object_unref (settings); #endif /* Workaround https://bugzilla.gnome.org/show_bug.cgi?id=683548 */ if (!quit) g_type_ensure (WEBKIT_TYPE_WEB_VIEW); shell = create_default_shell (); if (!shell) return 1; if (quit) { e_shell_quit (shell, E_SHELL_QUIT_OPTION); goto exit; } /* This routine converts the local mail store from mbox format to * Maildir format as needed. The reason the code is here and not * in the mail module is because we inform the user at startup of * the impending mail conversion by displaying a popup dialog and * waiting for confirmation before proceeding. * * This has to be done before we load modules because some of the * EShellBackends immediately add GMainContext sources that would * otherwise get dispatched during gtk_dialog_run(), and we don't * want them dispatched until after the conversion is complete. * * Addendum: We need to perform the XDG Base Directory migration * before converting the local mail store, because the * conversion is triggered by checking for certain key * files and directories under XDG_DATA_HOME. Without * this the mail conversion will not trigger for users * upgrading from Evolution 2.30 or older. */ e_migrate_base_dirs (shell); e_convert_local_mail (shell); e_shell_load_modules (shell); if (!disable_eplugin) { /* Register built-in plugin hook types. */ g_type_ensure (E_TYPE_IMPORT_HOOK); g_type_ensure (E_TYPE_PLUGIN_UI_HOOK); /* All EPlugin and EPluginHook subclasses should be * registered in GType now, so load plugins now. */ e_plugin_load_plugins (); } /* Attempt migration -after- loading all modules and plugins, * as both shell backends and certain plugins hook into this. */ e_shell_migrate_attempt (shell); e_shell_event (shell, "ready-to-start", NULL); g_idle_add ((GSourceFunc) idle_cb, remaining_args); gtk_main (); exit: /* Drop what should be the last reference to the shell. * That will cause e_shell_get_default() to henceforth * return NULL. Use that to check for reference leaks. */ g_object_unref (shell); if (e_shell_get_default () != NULL) g_warning ("Shell not finalized on exit"); gtk_accel_map_save (e_get_accels_filename ()); return 0; }
/** * ar_runtime_init: * * Initialises the runtime file localisator. This also calls setlocale, * and initialises gettext support and gnome-games debug support. * * NOTE: This must be called before using ANY other glib/gtk/etc function! * * Returns: %TRUE iff initialisation succeeded */ gboolean ar_runtime_init (const char *name) { gboolean retval; setlocale (LC_ALL, ""); #ifdef G_OS_WIN32 /* On Windows, when called from a console, get console output. This works * only with Windows XP or higher; Windows 2000 will not have console * output but it will just work fine. */ if (fileno (stdout) != -1 && _get_osfhandle (fileno (stdout)) != -1) { /* stdout is fine, presumably redirected to a file or pipe. * Make sure stdout goes somewhere, too. */ if (_get_osfhandle (fileno (stderr)) == -1) { dup2 (fileno (stdout), fileno (stderr)); } } 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 /* G_OS_WIN32 */ #if !GLIB_CHECK_VERSION(2, 35, 0) /* This also initialises gthread */ g_type_init (); #endif /* May call any glib function after this point */ ar_profilestart ("ar_runtime_init"); ar_debug_init (); app_name = g_strdup (name); bindtextdomain (GETTEXT_PACKAGE, ar_runtime_get_directory (AR_RUNTIME_LOCALE_DIRECTORY)); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #ifdef ENABLE_BINRELOC { const char *path; /* Now check that we can get the module installation directory */ path = ar_runtime_get_directory (AR_RUNTIME_PREFIX); ar_debug_print (AR_DEBUG_RUNTIME, "Relocation path: %s\n", path ? path : "(null)"); retval = path != NULL; } #else /* !ENABLE_BINRELOC */ retval = TRUE; #endif /* ENABLE_BINRELOC */ ar_profileend ("ar_runtime_init"); return retval; }
gint main (gint argc, gchar **argv) { GtkApplication *application; GOptionContext *context; GError *error = NULL; int status = 1; #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 #ifdef ENABLE_NLS /* Initialize the i18n stuff */ bindtextdomain (GETTEXT_PACKAGE, ev_get_locale_dir()); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif context = g_option_context_new (_("GNOME Document Previewer")); g_option_context_set_translation_domain (context, GETTEXT_PACKAGE); g_option_context_add_main_entries (context, goption_options, GETTEXT_PACKAGE); g_option_context_add_group (context, gtk_get_option_group (TRUE)); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_printerr ("Error parsing command line arguments: %s\n", error->message); g_error_free (error); g_option_context_free (context); return 1; } g_option_context_free (context); if (argc < 2) { g_printerr ("File argument is required\n"); return 1; } else if (argc > 2) { g_printerr ("Too many files\n"); return 1; } if (!g_file_test (argv[1], G_FILE_TEST_IS_REGULAR)) { g_printerr ("Filename \"%s\" does not exist or is not a regular file\n", argv[1]); return 1; } if (!ev_init ()) return 1; ev_stock_icons_init (); g_set_application_name (_("GNOME Document Previewer")); gtk_window_set_default_icon_name ("evince"); application = gtk_application_new (NULL, G_APPLICATION_NON_UNIQUE | G_APPLICATION_HANDLES_OPEN); g_signal_connect (application, "activate", G_CALLBACK (activate_cb), NULL); g_signal_connect (application, "open", G_CALLBACK (open_cb), NULL); status = g_application_run (G_APPLICATION (application), argc, argv); if (unlink_temp_file) ev_previewer_unlink_tempfile (argv[1]); if (print_settings) ev_previewer_unlink_tempfile (print_settings); ev_shutdown (); ev_stock_icons_shutdown (); return status; }
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow ) { hKeyboardHook = NULL; hGuiLibInstance = hInstance; // setup keyboard hook to receive multimedia key events when application is at background hKeyboardHook = SetWindowsHookEx( WH_KEYBOARD_LL,(HOOKPROC) qt_LowLevelKeyboardHookProc, hGuiLibInstance, 0 ); 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( GetModuleHandleW( L"kernel32.dll" ), "AttachConsole" ); if ( p_AttachConsole != NULL && p_AttachConsole( ATTACH_PARENT_PROCESS ) ) { _wfreopen ( L"CONOUT$", L"w", stdout ); dup2( fileno( stdout ), 1 ); _wfreopen ( L"CONOUT$", L"w", stderr ); dup2( fileno( stderr ), 2 ); } } #else // Q_OS_WIN int main( int argc, char *argv[] ) { #ifdef Q_WS_MAC // Do Mac specific startup to get media keys working. // This must go before QApplication initialisation. Tomahawk::macMain(); // Fixes focus issue with NSSearchField, see QTBUG-11401 // code taken from clementine:main.cpp:336 QCoreApplication::setAttribute( Qt::AA_NativeWindows, true ); // used for url handler AEEventHandlerUPP h = AEEventHandlerUPP( appleEventHandler ); AEInstallEventHandler( 'GURL', 'GURL', h, 0, false ); #endif // Q_WS_MAC #endif //Q_OS_WIN TomahawkApp a( argc, argv ); // MUST register StateHash ****before*** initing TomahawkSettingsGui as constructor of settings does upgrade before Gui subclass registers type TomahawkSettings::registerCustomSettingsHandlers(); TomahawkSettingsGui::registerCustomSettingsHandlers(); #ifdef ENABLE_HEADLESS new TomahawkSettings( &a ); #else new TomahawkSettingsGui( &a ); #endif #ifndef ENABLE_HEADLESSs #ifdef WITH_BREAKPAD new BreakPad( QDir::tempPath(), TomahawkSettings::instance()->crashReporterEnabled() && !TomahawkUtils::headless() ); #endif #endif KDSingleApplicationGuard guard( KDSingleApplicationGuard::AutoKillOtherInstances ); QObject::connect( &guard, SIGNAL( instanceStarted( KDSingleApplicationGuard::Instance ) ), &a, SLOT( instanceStarted( KDSingleApplicationGuard::Instance ) ) ); if ( guard.isPrimaryInstance() ) a.init(); int returnCode = 0; if ( guard.isPrimaryInstance() ) returnCode = a.exec(); #ifdef Q_OS_WIN // clean up keyboard hook if ( hKeyboardHook ) { UnhookWindowsHookEx( hKeyboardHook ); hKeyboardHook = NULL; } #endif return returnCode; }
gint main (gint argc, gchar *argv[]) { GError *error = NULL; #ifdef G_OS_WIN32 /* Reduce risks */ { typedef BOOL (WINAPI *t_SetDllDirectoryA) (LPCSTR lpPathName); t_SetDllDirectoryA p_SetDllDirectoryA; p_SetDllDirectoryA = GetProcAddress (GetModuleHandle ("kernel32.dll"), "SetDllDirectoryA"); if (p_SetDllDirectoryA) (*p_SetDllDirectoryA) (""); } #ifndef _WIN64 { typedef BOOL (WINAPI *t_SetProcessDEPPolicy) (DWORD dwFlags); t_SetProcessDEPPolicy p_SetProcessDEPPolicy; p_SetProcessDEPPolicy = GetProcAddress (GetModuleHandle ("kernel32.dll"), "SetProcessDEPPolicy"); if (p_SetProcessDEPPolicy) (*p_SetProcessDEPPolicy) (PROCESS_DEP_ENABLE | PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION); } #endif 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[] = { { "socket", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_INT, &socket_id, /* TRANSLATORS: don't translate the terms in brackets */ N_("ID of the socket to embed in"), N_("socket") }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_STRING_ARRAY, &remaining_args, NULL, NULL }, { NULL, 0, 0, 0, NULL, NULL, NULL } }; #ifdef ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif setlocale (LC_ALL, NULL); if (!gtk_init_with_args (&argc, &argv, NULL, entries, NULL, &error)) g_error ("%s", error->message); if (!g_thread_get_initialized ()) g_thread_init (NULL); e_passwords_init (); categories_icon_theme_hack (); create_default_shell (); gtk_main (); return 0; }