int main(int argc, char *argv[]) { int i, foreground, port; void (*timeseal_init)(const char * ) = chessd_function("timeseal_init"); int (*net_init)(int ) = chessd_function("net_init"); void (*initial_load)(void ) = chessd_function("initial_load"); void (*db_connect)(void ) = chessd_function("db_connect"); void (*db_disconnect)(void ) = chessd_function("db_disconnect"); port = DEFAULT_PORT; foreground = 0; /* enable malloc checking in libc */ setenv("MALLOC_CHECK_", "2", 1); while((i = getopt(argc, argv, "p:fR:T:")) != -1) { switch(i) { case 'p': port = atoi(optarg); break; case 'f': foreground = 1; break; case 'T': timeseal_init(optarg); break; case 'R': do_chroot(optarg); break; default: usage(); } } if (!foreground && daemonize()){ printf("Problem with Daemonization - Aborting\n"); exit(1); } signal(SIGTERM, TerminateServer); signal(SIGSEGV, segv_handler); signal(SIGBUS, segv_handler); signal(SIGINT, TerminateServer); signal(SIGPIPE, BrokenPipe); if (net_init(port)) { fprintf(stderr, "CHESSD: Network initialize failed on port %d.\n", port); exit(1); } fprintf(stderr, "CHESSD: Initialized on port %d\n", port); initial_load(); db_connect(); main_event_loop(); db_disconnect(); /* will never get here - uses TerminateServer */ return 0; }
/** Firmware main() function * * avr-gcc knows that int main(void) ending with an endless loop and * not returning is normal, so we can avoid the * * int main(void) __attribute__((noreturn)); * * declaration and compile without warnings (or an unused return instruction * at the end of main). */ int main(void) { /** No need to initialize global variables here. See \ref * firmware_memories. */ /* ST_booting */ /** We try not to explicitly call initialization functions at the * start of main(). The idea is to implement the initialization * functions as ((naked)) and put them in the ".initN" sections so * they are run automatically before main() is run. * * This keeps all foo.c related initialization code inside foo.c, * and it also saves us a few bytes in the firmware image which * would be used by the call/return instructions. */ send_personality_info(); send_state_P(PSTR_READY); main_event_loop(); } /* int main(void) */
int main(int argc, char *argv[]) { FILE *fp; #if USING_DMALLOC dmalloc_debug(1); #endif /* start the clock (which is used by the Logit fnc) */ (void) refetch_ticker(); GetArgs(argc, argv); if (conf_file_read(confname)) { Logit("Failed to read config file \"%s\"", confname); strcpy(confname, "./nngs.cnf"); conf_file_write(confname); Logit("Created \"%s\"", confname); } Logit("Starting %s (%s %s) From: %s" , conffile.version_string, conffile.compile_date, conffile.compile_time, confname); if (daemonise()) { Logit("Failed to daemonise, giving up"); main_exit(1); } conf_file_write("written.cnf"); signal(SIGTERM, TerminateServer); signal(SIGINT, TerminateServer); #if 0 signal(SIGPIPE, SIG_IGN); #else signal(SIGPIPE, BrokenPipe); #endif signal(SIGCHLD, reapchild); mink_init(); startuptime = time(NULL); srand(startuptime); read_ban_ip_list(); if (!all_the_internets() ) { fprintf(stderr, "Network initialize failed on ports %s.\n" , conffile.server_ports); main_exit(1); } player_high = 0; game_high = 0; bytes_sent = 0; bytes_received = 0; #ifdef SGI /*mallopt(100, 1);*/ /* Turn on malloc(3X) debugging (Irix only) */ #endif command_init(); EmoteInit(conffile.emotes_file); help_init(); /*Logit("commands_init()");*/ commands_init(); /*Logit("channel_init()");*/ channel_init(); /*Logit("player_array_init()");*/ player_array_init(); player_init(); ladder_init(NUM_LADDERS); Ladder9 = ladder_new(LADDERSIZE); Ladder19 = ladder_new(LADDERSIZE); completed_games = 0; num_logins = num_logouts = new_players = 0; num_9 = 0; fp = xyfopen(FILENAME_LADDER9, "r"); if (fp) { num_9 = ladder_load(fp, Ladder9); Logit("%d players loaded from file %s", num_9, filename() ); fclose(fp); } num_19 = 0; fp = xyfopen(FILENAME_LADDER19, "r"); if (fp) { num_19 = ladder_load(fp, Ladder19); Logit("%d players loaded from file %s", num_19, filename() ); fclose(fp); } /* mink_init();*/ if (conffile.admin_name) create_admin_account(conffile.admin_name ); Logit("Server up and running."); main_event_loop(); Logit("Closing down."); net_closeAll(); main_exit(0); return 0; }
int main(int argc, char **argv) #endif { // Print banner (don't bother if this doesn't appear when started from a GUI) char app_name_version[256]; expand_app_variables(app_name_version, "Aleph One $appLongVersion$"); printf ("%s\n%s\n\n" "Original code by Bungie Software <http://www.bungie.com/>\n" "Additional work by Loren Petrich, Chris Pruett, Rhys Hill et al.\n" "TCP/IP networking by Woody Zenfell\n" "Expat XML library by James Clark\n" "SDL port by Christian Bauer <*****@*****.**>\n" #if defined(__MACH__) && defined(__APPLE__) "Mac OS X/SDL version by Chris Lovell, Alexander Strange, and Woody Zenfell\n" #endif "\nThis is free software with ABSOLUTELY NO WARRANTY.\n" "You are welcome to redistribute it under certain conditions.\n" "For details, see the file COPYING.\n" #if defined(__WIN32__) // Windows is statically linked against SDL, so we have to include this: "\nSimple DirectMedia Layer (SDL) Library included under the terms of the\n" "GNU Library General Public License.\n" "For details, see the file COPYING.SDL.\n" #endif #if !defined(DISABLE_NETWORKING) "\nBuilt with network play enabled.\n" #endif #ifdef HAVE_LUA "\nBuilt with Lua scripting enabled.\n" #endif , app_name_version, A1_HOMEPAGE_URL ); // Parse arguments char *prg_name = argv[0]; argc--; argv++; while (argc > 0) { if (strcmp(*argv, "-h") == 0 || strcmp(*argv, "--help") == 0) { usage(prg_name); } else if (strcmp(*argv, "-v") == 0 || strcmp(*argv, "--version") == 0) { printf("%s\n", app_name_version); exit(0); } else if (strcmp(*argv, "-f") == 0 || strcmp(*argv, "--fullscreen") == 0) { force_fullscreen = true; } else if (strcmp(*argv, "-w") == 0 || strcmp(*argv, "--windowed") == 0) { force_windowed = true; } else if (strcmp(*argv, "-g") == 0 || strcmp(*argv, "--nogl") == 0) { option_nogl = true; } else if (strcmp(*argv, "-s") == 0 || strcmp(*argv, "--nosound") == 0) { option_nosound = true; } else if (strcmp(*argv, "-j") == 0 || strcmp(*argv, "--nojoystick") == 0) { option_nojoystick = true; } else if (strcmp(*argv, "-m") == 0 || strcmp(*argv, "--nogamma") == 0) { option_nogamma = true; } else if (strcmp(*argv, "-i") == 0 || strcmp(*argv, "--insecure_lua") == 0) { insecure_lua = true; } else if (strcmp(*argv, "-d") == 0 || strcmp(*argv, "--debug") == 0) { option_debug = true; } else if (*argv[0] != '-') { // if it's a directory, make it the default data dir // otherwise push it and handle it later FileSpecifier f(*argv); if (f.IsDir()) { arg_directory = *argv; } else { arg_files.push_back(*argv); } } else { printf("Unrecognized argument '%s'.\n", *argv); usage(prg_name); } argc--; argv++; } try { // Initialize everything initialize_application(); for (std::vector<std::string>::iterator it = arg_files.begin(); it != arg_files.end(); ++it) { if (handle_open_document(*it)) { break; } } // Run the main loop main_event_loop(); } catch (exception &e) { try { logFatal("Unhandled exception: %s", e.what()); } catch (...) { } exit(1); } catch (...) { try { logFatal("Unknown exception"); } catch (...) { } exit(1); } return 0; }
int main(void) { main_event_loop(); } /* int main(void) */