int main(int argc, char** argv) { int i, retval; bool one_pass = false; check_stop_daemons(); int j=1; for (i=1; i<argc; i++) { if (is_arg(argv[i], "one_pass")) { one_pass = true; } else if (is_arg(argv[i], "variety")) { if (!argv[++i]) { log_messages.printf(MSG_CRITICAL, "%s requires an argument\n\n", argv[--i] ); usage(argv[0]); exit(1); } safe_strcpy(variety, argv[i]); } else if (!strcmp(argv[i], "-d")) { if (!argv[++i]) { log_messages.printf(MSG_CRITICAL, "%s requires an argument\n\n", argv[--i] ); usage(argv[0]); exit(1); } int dl = atoi(argv[i]); log_messages.set_debug_level(dl); if (dl == 4) g_print_queries = true; } else if (!strcmp(argv[i], "-v") || !strcmp(argv[i], "--version")) { printf("%s\n", SVN_VERSION); exit(0); } else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help")) { usage(argv[0]); exit(0); } else { // unknown arg - pass to handler argv[j++] = argv[i]; } } retval = config.parse_file(); if (retval) { log_messages.printf(MSG_CRITICAL, "Can't parse config.xml: %s\n", boincerror(retval) ); exit(1); } retval = boinc_db.open( config.db_name, config.db_host, config.db_user, config.db_passwd ); if (retval) { log_messages.printf(MSG_CRITICAL, "boinc_db.open failed: %s\n", boincerror(retval) ); exit(1); } argv[j] = 0; retval = handle_trickle_init(j, argv); if (retval) exit(1); log_messages.printf(MSG_NORMAL, "Starting trickle handler\n"); install_stop_signal_handler(); main_loop(one_pass); }
int main(int argc, char** argv) { int retval; int i; check_stop_daemons(); for (i=1; i<argc; i++) { if (is_arg(argv[i], "d") || is_arg(argv[i], "debug_level")) { if (!argv[++i]) { log_messages.printf(MSG_CRITICAL, "%s requires an argument\n\n", argv[--i]); usage(argv[0]); exit(1); } int dl = atoi(argv[i]); log_messages.set_debug_level(dl); if (dl == 4) g_print_queries = true; } else if (is_arg(argv[i], "dry_run")) { antiques_deletion_dry_run = true; } else if (is_arg(argv[i], "usleep")) { antique_usleep = atoi(argv[++i]); } else if (is_arg(argv[i], "h") || is_arg(argv[i], "help")) { usage(argv[0]); exit(0); } else if (is_arg(argv[i], "v") || is_arg(argv[i], "version")) { printf("%s\n", SVN_VERSION); exit(0); } else { log_messages.printf(MSG_CRITICAL, "unknown command line argument: %s\n\n", argv[i]); usage(argv[0]); exit(1); } } retval = config.parse_file(); if (retval) { log_messages.printf(MSG_CRITICAL, "Can't parse config.xml: %s\n", boincerror(retval) ); exit(1); } log_messages.printf(MSG_NORMAL, "Starting\n"); retval = boinc_db.open( config.replica_db_name, config.replica_db_host, config.replica_db_user, config.replica_db_passwd ); if (retval) { log_messages.printf(MSG_CRITICAL, "can't open DB\n"); exit(1); } retval = boinc_db.set_isolation_level(READ_UNCOMMITTED); if (retval) { log_messages.printf(MSG_CRITICAL, "boinc_db.set_isolation_level: %s; %s\n", boincerror(retval), boinc_db.error_string() ); } install_stop_signal_handler(); retval = delete_antiques(); if (retval) { log_messages.printf(MSG_CRITICAL, "delete_antiques() returned with error %d\n", retval ); } log_messages.printf(MSG_NORMAL, "Done\n"); return retval; }
int main(int argc, char** argv) { int i, retval; char path[256]; startup_time = time(0); for (i=1; i<argc; i++) { if (is_arg(argv[i], "one_pass")) { one_pass = true; } else if (is_arg(argv[i], "d")) { if (!argv[++i]) { log_messages.printf(MSG_CRITICAL, "%s requires an argument\n\n", argv[--i]); usage(argv[0]); exit(1); } int dl = atoi(argv[i]); log_messages.set_debug_level(dl); if (dl == 4) g_print_queries = true; } else if (is_arg(argv[i], "mod")) { if (!argv[i+1] || !argv[i+2]) { log_messages.printf(MSG_CRITICAL, "%s requires two arguments\n\n", argv[i]); usage(argv[0]); exit(1); } mod_n = atoi(argv[++i]); mod_i = atoi(argv[++i]); do_mod = true; } else if (is_arg(argv[i], "sleep_interval")) { if (!argv[++i]) { log_messages.printf(MSG_CRITICAL, "%s requires an argument\n\n", argv[--i]); usage(argv[0]); exit(1); } sleep_interval = atoi(argv[i]); } else if (is_arg(argv[i], "h") || is_arg(argv[i], "help")) { usage(argv[0]); exit(0); } else if (is_arg(argv[i], "v") || is_arg(argv[i], "version")) { printf("%s\n", SVN_VERSION); exit(0); } else { log_messages.printf(MSG_CRITICAL, "unknown command line argument: %s\n\n", argv[i]); usage(argv[0]); exit(1); } } if (!one_pass) check_stop_daemons(); retval = config.parse_file(); if (retval) { log_messages.printf(MSG_CRITICAL, "Can't parse config.xml: %s\n", boincerror(retval)); exit(1); } sprintf(path, "%s/upload_private", config.key_dir); retval = read_key_file(path, key); if (retval) { log_messages.printf(MSG_CRITICAL, "can't read key\n"); exit(1); } log_messages.printf(MSG_NORMAL, "Starting\n"); install_stop_signal_handler(); main_loop(); }
int main(int argc, char** argv) { int i, retval; #if 0 int mypid=getpid(); char debugcmd[512]; sprintf(debugcmd, "ddd %s %d &", argv[0], mypid); system(debugcmd); sleep(30); #endif const char *usage = "\nUsage: %s -app <app-name> [OPTIONS]\n" "Start validator for application <app-name>\n\n" "Optional arguments:\n" " -one_pass_N_WU N Validate at most N WUs, then exit\n" " -one_pass Make one pass through WU table, then exit\n" " -mod n i Process only WUs with (id mod n) == i\n" " -max_claimed_credit X If a result claims more credit than this, mark it as invalid\n" " -max_granted_credit X Grant no more than this amount of credit to a result\n" " -grant_claimed_credit Grant the claimed credit, regardless of what other results for this workunit claimed\n" " -update_credited_job Add record to credited_job table after granting credit\n" " -credit_from_wu Credit is specified in WU XML\n" " -sleep_interval n Set sleep-interval to n\n" " -d level Set debug-level\n\n"; if ((argc > 1) && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))) { printf (usage, argv[0] ); exit(1); } check_stop_daemons(); for (i=1; i<argc; i++) { if (!strcmp(argv[i], "-one_pass_N_WU")) { one_pass_N_WU = atoi(argv[++i]); one_pass = true; } else if (!strcmp(argv[i], "-sleep_interval")) { sleep_interval = atoi(argv[++i]); } else if (!strcmp(argv[i], "-one_pass")) { one_pass = true; } else if (!strcmp(argv[i], "-app")) { strcpy(app_name, argv[++i]); } else if (!strcmp(argv[i], "-d")) { boinc_validator_debuglevel=atoi(argv[++i]); log_messages.set_debug_level(boinc_validator_debuglevel); } else if (!strcmp(argv[i], "-mod")) { wu_id_modulus = atoi(argv[++i]); wu_id_remainder = atoi(argv[++i]); } else if (!strcmp(argv[i], "-max_granted_credit")) { max_granted_credit = atof(argv[++i]); } else if (!strcmp(argv[i], "-max_claimed_credit")) { max_claimed_credit = atof(argv[++i]); } else if (!strcmp(argv[i], "-grant_claimed_credit")) { grant_claimed_credit = true; } else if (!strcmp(argv[i], "-update_credited_job")) { update_credited_job = true; } else if (!strcmp(argv[i], "-credit_from_wu")) { credit_from_wu = true; } else { fprintf(stderr, "Invalid option '%s'\nTry `%s --help` for more information\n", argv[i], argv[0] ); log_messages.printf(MSG_CRITICAL, "unrecognized arg: %s\n", argv[i]); exit(1); } } // -app is required if (app_name[0] == 0) { fprintf(stderr, "\nERROR: use '-app' to specify the application to run the validator for.\n" ); printf (usage, argv[0] ); exit(1); } retval = config.parse_file(); if (retval) { log_messages.printf(MSG_CRITICAL, "Can't parse config.xml: %s\n", boincerror(retval) ); exit(1); } log_messages.printf(MSG_NORMAL, "Starting validator, debug level %d\n", log_messages.debug_level ); if (wu_id_modulus) { log_messages.printf(MSG_NORMAL, "Modulus %d, remainder %d\n", wu_id_modulus, wu_id_remainder ); } install_stop_signal_handler(); main_loop(); }
int main(int argc, char** argv) { int retval; bool one_pass = false; int i; int sleep_sec = 600; check_stop_daemons(); char buf[256]; for (i=1; i<argc; i++) { if (is_arg(argv[i], "one_pass")) { one_pass = true; } else if (is_arg(argv[i], "dont_delete")) { dont_delete = true; } else if (is_arg(argv[i], "d") || is_arg(argv[i], "debug_level")) { if (!argv[++i]) { log_messages.printf(MSG_CRITICAL, "%s requires an argument\n\n", argv[--i]); usage(argv[0]); exit(1); } int dl = atoi(argv[i]); log_messages.set_debug_level(dl); if (dl == 4) g_print_queries = true; } else if (is_arg(argv[i], "min_age_days")) { if (!argv[++i]) { log_messages.printf(MSG_CRITICAL, "%s requires an argument\n\n", argv[--i]); usage(argv[0]); exit(1); } min_age_days = atof(argv[i]); } else if (is_arg(argv[i], "max")) { if (!argv[++i]) { log_messages.printf(MSG_CRITICAL, "%s requires an argument\n\n", argv[--i]); usage(argv[0]); exit(1); } max_number_workunits_to_purge= atoi(argv[i]); } else if (is_arg(argv[i], "daily_dir")) { daily_dir=true; } else if (is_arg(argv[i], "zip")) { compression_type=COMPRESSION_ZIP; } else if (is_arg(argv[i], "gzip")) { compression_type=COMPRESSION_GZIP; } else if (is_arg(argv[i], "max_wu_per_file")) { if(!argv[++i]) { log_messages.printf(MSG_CRITICAL, "%s requires an argument\n\n", argv[--i]); usage(argv[0]); exit(1); } max_wu_per_file = atoi(argv[i]); } else if (is_arg(argv[i], "no_archive")) { no_archive = true; } else if (is_arg(argv[i], "sleep")) { if(!argv[++i]) { log_messages.printf(MSG_CRITICAL, "%s requires an argument\n\n", argv[--i]); usage(argv[0]); exit(1); } sleep_sec = atoi(argv[i]); if (sleep_sec < 1 || sleep_sec > 86400) { log_messages.printf(MSG_CRITICAL, "Unreasonable value of sleep interval: %d seconds\n", sleep_sec ); usage(argv[0]); exit(1); } } else if (is_arg(argv[i], "--help") || is_arg(argv[i], "-help") || is_arg(argv[i], "-h")) { usage(argv[0]); return 0; } else if (is_arg(argv[i], "--version") || is_arg(argv[i], "-version")) { printf("%s\n", SVN_VERSION); exit(0); } else if (is_arg(argv[i], "mod")) { if (!argv[i+1] || !argv[i+2]) { log_messages.printf(MSG_CRITICAL, "%s requires two arguments\n\n", argv[i] ); usage(argv[0]); exit(1); } id_modulus = atoi(argv[++i]); id_remainder = atoi(argv[++i]); } else if (is_arg(argv[i], "app")) { safe_strcpy(app_name, argv[++i]); } else { log_messages.printf(MSG_CRITICAL, "unknown command line argument: %s\n\n", argv[i] ); usage(argv[0]); exit(1); } } if (id_modulus && !no_archive) { log_messages.printf(MSG_CRITICAL, "If you use modulus, you must set no_archive\n\n" ); usage(argv[0]); exit(1); } retval = config.parse_file(); if (retval) { log_messages.printf(MSG_CRITICAL, "Can't parse config.xml: %s\n", boincerror(retval) ); exit(1); } log_messages.printf(MSG_NORMAL, "Starting\n"); retval = boinc_db.open( config.db_name, config.db_host, config.db_user, config.db_passwd ); if (retval) { log_messages.printf(MSG_CRITICAL, "Can't open DB\n"); exit(2); } install_stop_signal_handler(); boinc_mkdir(config.project_path("archives")); // on exit, either via the check_stop_daemons signal handler, or // through a regular call to exit, these functions will be called // in the opposite order of registration. // atexit(close_db_exit_handler); atexit(close_all_archives); if (strlen(app_name)) { sprintf(buf, "where name='%s'", app_name); retval = app.lookup(buf); if (retval) { log_messages.printf(MSG_CRITICAL, "Can't find app %s\n", app_name); exit(1); } } while (1) { if (time_to_quit()) { break; } if (!do_pass() && !one_pass) { log_messages.printf(MSG_NORMAL, "Sleeping....\n"); daemon_sleep(sleep_sec); } if (one_pass) { break; } } // files and database are closed by exit handler exit(0); }