static void remove_tagged_functions(void) { for (TimedFunction *timed_func = GlobalTimer.funcs.first; timed_func;) { TimedFunction *next = timed_func->next; if (timed_func->tag_removal) { clear_user_data(timed_func); BLI_freelinkN(&GlobalTimer.funcs, timed_func); } timed_func = next; } }
int main() { /* Get arguments / Make GUI. It depends */ /* Initializing */ srand(time(NULL)); printf("Initializing data structures\n"); init_user_data(); printf("Initializing monster data\n"); init_mob(); printf("Loading map data to the memory\n"); load_maps(); /* Release monster data */ clear_mob_data(); /* Add thread to properly stop the server */ init_socket(sizeof(struct packet)); init_server(&server_socket, 2033); open_server(server_socket,20); printf("Server has been opened\n"); /* Mob manager */ _beginthread(mob_manager, 0, NULL); /* Networking thread */ _beginthread(start_server, 0, server_socket); while(getch() != 27); /* Stop monster manager */ stop_mob_manager(); /* Write behind; Write user data to file system */ save_users_data(); /* Release user data */ clear_user_data(); /* Release map data */ clear_map_data(); /* Terminate the server */ close_socket(server_socket); end_socket(); return 0; }
bool BLI_timer_unregister(uintptr_t uuid) { LISTBASE_FOREACH (TimedFunction *, timed_func, &GlobalTimer.funcs) { if (timed_func->uuid == uuid) { if (timed_func->tag_removal) { return false; } else { timed_func->tag_removal = true; clear_user_data(timed_func); return true; } } } return false; }
int main(int argc, char **argv) { static const char opt_s[] = "hVdl:L:X:w:t:"; static const struct option opt_l[] = { {"help", 0, 0, 'h'}, {"usage", 0, 0, 'h'}, {"version", 0, 0, 'V'}, {"daemon", 0, 0, 'd'}, {"log-level", 1, 0, 'L'}, {"log-target", 1, 0, 'l'}, {"limbo-control", 1, 0, 'w'}, {"limbo-timeout", 1, 0, 't'}, {0, 0, 0, 0 } }; int log_driver = LOG_TO_SYSLOG; int log_level = LOG_WARNING; int opt_daemon = 0; int opt; progname = *argv = basename(*argv); if( access("/root/alarmd.verbose", F_OK) == 0 ) { //log_driver = LOG_TO_STDERR; log_level = LOG_DEBUG; } // libconic uses gobjects g_type_init(); while( (opt = getopt_long(argc, argv, opt_s, opt_l, 0)) != -1 ) { switch( opt ) { case 'h': show_usage(); exit(0); case 'V': printf("%s\n", VERS); break; case 'L': log_level = log_parse_level(optarg); break; case 'l': log_driver = log_parse_driver(optarg); break; case 'd': opt_daemon = 1; break; case 't': server_limbo_set_timeout(strtol(optarg,0,0)); break; case 'w': if( cmp_flag(optarg, "disabled") ) { server_limbo_set_control(DESKTOP_WAIT_DISABLED); } else if( cmp_flag(optarg, "home") ) { server_limbo_set_control(DESKTOP_WAIT_HOME); } else if( cmp_flag(optarg, "hildon") ) { server_limbo_set_control(DESKTOP_WAIT_HOME); } else if( cmp_flag(optarg, "startup") ) { server_limbo_set_control(DESKTOP_WAIT_HOME); } else { server_limbo_set_control(strtol(optarg,0,0)); } break; case 'X': if( !strcmp(optarg, "cud") ) { exit( clear_user_data() == -1 ? EXIT_FAILURE : EXIT_SUCCESS); } else if( !strcmp(optarg, "rfs") ) { exit(restore_factory_settings() == -1 ? EXIT_FAILURE : EXIT_SUCCESS); } else { fprintf(stderr, "Unknwon option: -X%s\n", optarg); } exit(EXIT_FAILURE); break; case '?': fprintf(stderr, "%s: (use -h for usage)\n", *argv); exit(1); default: abort (); } } if( opt_daemon && daemon(0,0) ) { perror("daemon"); exit(1); } log_set_level(log_level); log_open("alarmd", log_driver, 1); log_info("-- startup --\n"); int xc = mainloop_run(); log_info("-- exit %d --\n", xc); log_close(); return xc; }