int main(int argc, char *argv[]) { gchar **uris = NULL; /* clean up any zombies */ struct sigaction sigact; sigact.sa_handler=sigchld; sigemptyset (&sigact.sa_mask); sigact.sa_flags = SA_NOCLDSTOP; if (sigaction(SIGCHLD, &sigact, NULL)) fatal("Can't install SIGCHLD handler"); /* parse command line opts and get uris to load */ uris = parseopts(argc, argv); gtk_init(&argc, &argv); if (!g_thread_supported()) g_thread_init(NULL); init_directories(); init_lua(uris); /* parse and run configuration file */ if(!luaH_parserc(globalconf.confpath, TRUE)) fatal("couldn't find rc file"); if (!globalconf.windows->len) fatal("no windows spawned by rc file, exiting"); gtk_main(); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { gchar **uris = NULL; xdgHandle xdg; /* clean up any zombies */ sigchld(0); gtk_init(&argc, &argv); if (!g_thread_supported()) g_thread_init(NULL); /* parse command line opts and get uris to load */ uris = parseopts(argc, argv); /* get XDG basedir data */ xdgInitHandle(&xdg); init_directories(&xdg); init_lua(uris, &xdg); /* we are finished with this */ xdgWipeHandle(&xdg); gtk_main(); return EXIT_SUCCESS; }
gint main(gint argc, gchar *argv[]) { gboolean *nonblock = NULL; gchar **uris = NULL; pid_t pid, sid; globalconf.starttime = l_time(); /* clean up any zombies */ struct sigaction sigact; sigact.sa_handler=sigchld; sigemptyset (&sigact.sa_mask); sigact.sa_flags = SA_NOCLDSTOP; if (sigaction(SIGCHLD, &sigact, NULL)) fatal("Can't install SIGCHLD handler"); /* set numeric locale to C (required for compatibility with LuaJIT and luakit scripts) */ gtk_set_locale(); gtk_disable_setlocale(); setlocale(LC_NUMERIC, "C"); /* parse command line opts and get uris to load */ uris = parseopts(&argc, argv, &nonblock); /* if non block mode - respawn, detach and continue in child */ if (nonblock) { pid = fork(); if (pid < 0) { fatal("Cannot fork: %d", errno); } else if (pid > 0) { exit(EXIT_SUCCESS); } sid = setsid(); if (sid < 0) { fatal("New SID creation failure: %d", errno); } } gtk_init(&argc, &argv); init_directories(); init_lua(uris); /* hide command line parameters so process lists don't leak (possibly confidential) URLs */ for (gint i = 1; i < argc; i++) memset(argv[i], 0, strlen(argv[i])); /* parse and run configuration file */ if(!luaH_parserc(globalconf.confpath, TRUE)) fatal("couldn't find rc file"); if (!globalconf.windows->len) fatal("no windows spawned by rc file, exiting"); gtk_main(); return EXIT_SUCCESS; }
void init_directories(struct node *root){ unsigned int i; struct cache *cache = get_cache(root); cache->dir = init_directory(root); for (i=0; i<root->nb_children; i++){ init_directories(get_child(root, i)); } }
int main(int argc, char *argv[]) { gboolean *nonblock = NULL; gchar **uris = NULL; pid_t pid, sid; /* clean up any zombies */ struct sigaction sigact; sigact.sa_handler=sigchld; sigemptyset (&sigact.sa_mask); sigact.sa_flags = SA_NOCLDSTOP; if (sigaction(SIGCHLD, &sigact, NULL)) fatal("Can't install SIGCHLD handler"); /* parse command line opts and get uris to load */ uris = parseopts(argc, argv, &nonblock); /* if non block mode - respawn, detach and continue in child */ if (nonblock) { pid = fork(); if (pid < 0) { fatal("Cannot fork: %d", errno); } else if (pid > 0) { exit(EXIT_SUCCESS); } sid = setsid(); if (sid < 0) { fatal("New SID creation failure: %d", errno); } } gtk_init(&argc, &argv); if (!g_thread_supported()) g_thread_init(NULL); init_directories(); init_lua(uris); /* parse and run configuration file */ if(!luaH_parserc(globalconf.confpath, TRUE)) fatal("couldn't find rc file"); if (!globalconf.windows->len) fatal("no windows spawned by rc file, exiting"); gtk_main(); return EXIT_SUCCESS; }
void init_boe(int argc, char* argv[]) { init_directories(argv[0]); init_menubar(); // Do this first of all because otherwise a default File and Window menu will be seen sync_prefs(); init_graph_tool(); init_snd_tool(); cDialog::init(); init_sbar(text_sbar, sbar_rect, 58, 11, 58); init_sbar(item_sbar, item_sbar_rect, 16, 8); init_sbar(shop_sbar, shop_sbar_rect, 16, 8); init_btn(done_btn, BTN_DONE); init_btn(help_btn, BTN_HELP); adjust_window_mode(); // If we don't do this now it'll flash white to start with mainPtr.clear(sf::Color::Black); mainPtr.display(); make_cursor_watch(); boost::thread init_thread([]() { init_buf(); check_for_intel(); srand(time(nullptr)); init_screen_locs(); Set_up_win(); init_startup(); flushingInput = true; }); show_logo(); if(get_bool_pref("ShowStartupSplash", true)) plop_fancy_startup(); init_thread.join(); cUniverse::print_result = iLiving::print_result = add_string_to_buf; cPlayer::give_help = give_help; set_up_apple_events(argc, argv); init_fileio(); init_spell_menus(); init_mini_map(); redraw_screen(REFRESH_NONE); showMenuBar(); }
int main( int argc, char *argv[] ) { parse_args( argc, argv ); /* setup temporary handlers before the real signal initialization is done */ signal( SIGPIPE, SIG_IGN ); signal( SIGHUP, sigterm_handler ); signal( SIGINT, sigterm_handler ); signal( SIGQUIT, sigterm_handler ); signal( SIGTERM, sigterm_handler ); signal( SIGABRT, sigterm_handler ); sock_init(); open_master_socket(); setvbuf( stderr, NULL, _IOLBF, 0 ); if (debug_level) fprintf( stderr, "wineserver: starting (pid=%ld)\n", (long) getpid() ); init_signals(); init_directories(); init_registry(); main_loop(); return 0; }
void gtkpod_init(int argc, char *argv[]) { AnjutaPluginManager *plugin_manager; AnjutaProfileManager *profile_manager; AnjutaApp *app; AnjutaStatus *status; AnjutaProfile *profile; GFile *session_profile; GError *error = NULL; gchar *default_profile_file = NULL; gchar *user_profile_file = NULL; gchar *ui_file = NULL; gchar *remembered_plugins = NULL; gchar *session_dir = NULL; gchar *splash = NULL; /* Initialise important directories */ init_directories(argv); register_stock_icon(GTKPOD_ICON, GTKPOD_ICON_STOCK_ID); /* Initialise the ui file */ ui_file = g_build_filename(get_ui_dir(), "gtkpod.ui", NULL); anjuta_set_ui_file_path(ui_file); /* Register the application icon */ register_stock_icon("gtkpod", GTKPOD_APP_ICON_STOCK_ID); /* Initialize application class instance*/ app = ANJUTA_APP(anjuta_app_new()); gtkpod_app = GTKPOD_APP(app); /* Initialise the preferences as required for the display of the splash screen */ prefs_init(argc, argv); /* Show some progress as the app is initialised */ status = anjuta_shell_get_status(ANJUTA_SHELL(app), NULL); anjuta_status_progress_add_ticks(status, 1); /* Show the splash screen if user requires */ if (! prefs_get_int(DISABLE_SPLASH_SCREEN)) { splash = g_build_filename(get_icon_dir(), "gtkpod-splash.png", NULL); if (g_file_test(splash, G_FILE_TEST_IS_REGULAR)) anjuta_status_set_splash(status, splash, 100); else { anjuta_status_disable_splash(status, TRUE); } g_free(splash); } /* * initialise gtkpod library items. Needs to be safety threaded due * to splash screen. */ gdk_threads_enter(); gp_init(argc, argv); gdk_threads_leave(); /* Add blocking widgets from the framework */ add_blocked_widget(app->toolbar); add_blocked_widget(app->view_menu); /* Set up shutdown signals */ g_signal_connect(G_OBJECT(app), "delete_event", G_CALLBACK( on_gtkpod_delete_event), NULL); g_signal_connect(G_OBJECT(app), "destroy", G_CALLBACK(on_gtkpod_destroy), NULL); plugin_manager = anjuta_shell_get_plugin_manager(ANJUTA_SHELL(app), NULL); profile_manager = anjuta_shell_get_profile_manager(ANJUTA_SHELL(app), NULL); /* Restore remembered plugins */ remembered_plugins = g_settings_get_string(app->settings, GTKPOD_REMEMBERED_PLUGINS); if (remembered_plugins) anjuta_plugin_manager_set_remembered_plugins(plugin_manager, remembered_plugins); g_free(remembered_plugins); /* Load default profile */ default_profile_file = get_default_profile_path(); profile = anjuta_profile_new(USER_PROFILE_NAME, plugin_manager); session_profile = g_file_new_for_path(default_profile_file); anjuta_profile_add_plugins_from_xml(profile, session_profile, TRUE, &error); if (error) { anjuta_util_dialog_error(GTK_WINDOW(app), "%s", error->message); g_error_free(error); error = NULL; } g_object_unref(session_profile); g_free(default_profile_file); /* Load user session profile */ user_profile_file = get_user_profile_path(); session_profile = g_file_new_for_path(user_profile_file); if (g_file_query_exists(session_profile, NULL)) { anjuta_profile_add_plugins_from_xml(profile, session_profile, FALSE, &error); if (error) { anjuta_util_dialog_error(GTK_WINDOW(app), "%s", error->message); g_error_free(error); error = NULL; } } anjuta_profile_set_sync_file(profile, session_profile); g_object_unref(session_profile); g_free(user_profile_file); /* Load profile */ anjuta_profile_manager_freeze(profile_manager); anjuta_profile_manager_push(profile_manager, profile, &error); if (error) { anjuta_util_dialog_error(GTK_WINDOW(app), "%s", error->message); g_error_free(error); error = NULL; } /* Prepare for session save and load on profile change */ g_signal_connect (profile_manager, "profile-scoped", G_CALLBACK (on_profile_scoped), app); anjuta_profile_manager_thaw(profile_manager, &error); if (error) { anjuta_util_dialog_error(GTK_WINDOW(app), "%s", error->message); g_error_free(error); error = NULL; } g_signal_connect (profile_manager, "profile-descoped", G_CALLBACK (on_profile_descoped), app); gdk_threads_enter(); gp_init_itdbs(); gdk_threads_leave(); /* Load layout.*/ session_dir = get_user_session_dir(); if (!g_file_test(session_dir, G_FILE_TEST_IS_DIR)) session_dir = g_strdup(get_data_dir()); /* Restore session */ anjuta_shell_session_load(ANJUTA_SHELL(app), session_dir, NULL); g_free(session_dir); anjuta_status_progress_tick(status, NULL, _("Loaded Session...")); anjuta_status_disable_splash(status, TRUE); gtk_window_set_default_icon_name("gtkpod"); gtk_window_set_auto_startup_notification(TRUE); gtk_window_set_role(GTK_WINDOW(app), "gtkpod-app"); gtk_widget_show(GTK_WIDGET(app)); }
int main(int argc, char **argv){ int status = 0; init_globals(); atexit(cleanup); /* * PROBLEM * We used to call init_signals() only after init_daemon(). But in * that case, when started with -F or -D -D, the signals are * not caught in Linunx and OSX (they are caught in FreeBSD). nbspd and * npemwind die, but leave the pid file and the web server. * [It seems that the signals are not blocked in the main thread as * the code in signal.c should ensure.] * Adding this call here * * status = init_signals(); * * makes OSX and Linux respond well when the daemon is run in the foreground. * If the call is made after the tcl configure(), the problem repeats; * it has to be before the configure() function. * * The problem is that in FreeBSD-7.1, when init_signals() is called here, * then no threads are spawned afterwards. * * The solution was to split init_signals() in two parts, one that * block the signals and the other spawns the thread. I don't fully * understand what in tcl is causing this (Fri Mar 13 11:43:09 AST 2009). */ status = init_signals_block(); if(status == 0){ /* * This will configure it with the default configuration * file, if it exists. * * This note and Tcl... code line is taken from the nbsp source code. * [First initialize the tcl library once and for all. It was not * necessary to call this in unix, but cygwin needs it or EvalFile * seg faults.] */ Tcl_FindExecutable(argv[0]); status = configure(); } if(status == 0) status = parse_args(argc, argv); if(status == 0){ if(g.configfile != NULL){ /* * This will reconfigure it with the user-supplied config file */ status = configure(); } } /* * if [-C] was given, print the configuration and exit. */ if(status == 0){ if(g.option_C == 1){ print_confoptions(); return(0); } } if(status == 0) status = validate_configuration(); /* * user and group are configurable so this must be done after reading * configuration options. */ if(status == 0) status = drop_privs(); if(status == 0) status = init_server_list(); if(status == 0) status = init_directories(); /* * The last configuration step, just before becoming a daemon. */ if(status == 0) status = exec_startscript(); if((status == 0) && (g.f_ndaemon == 0)) status = init_daemon(); set_log_debug(g.f_debug); set_log_verbose(g.f_verbose); if(status == 0) status = init_signals_thread(); /* * This has to be done after daemon() so that the lock file contains the * daemon's pid, not the starting program's. */ if(status == 0) status = init_lock(); /* * There are no shared queues in npemwin, otherwise the initialization * would go here. * * if(status == 0) * status = init_queues(); */ if(status == 0){ if(g.serverprotocol != PROTOCOL_NONE) { g.f_server_enabled = 1; status = init_server(); } } if(status == 0){ if(g.httpd_enable > 0){ status = spawn_httpd_server(); } } if(status == 0){ if(g.bbserver_enable > 0){ status = spawn_bbregistrar(); } } if(status == 0) status = init_emwin_qfiles(); if(status == 0) init_periodic(); /* * If there are initialization errors, ask all threads to quit. */ if(status != 0) set_quit_flag(); while(get_quit_flag() == 0){ status = loop(); } if(status != 0) status = EXIT_FAILURE; return(status); }