int main(int argc, char **argv) { const char *opstring = "c:"; const struct option longopts[] = { {"config", 1, NULL, 'c'}, }; char c; char *fname = NULL; unsigned int check = 0x0; while ((c = getopt_long(argc, argv, opstring, longopts, NULL)) != -1) { switch(c) { case 'c': fname = optarg; check = 0x1; break; default: usage(argv[0]); } } if (check == 0x0) { usage(argv[0]); exit(EXIT_FAILURE); } read_config(fname); tor_log_init(); do_loop(); fprintf(stderr, "end\n"); return 0; }
int main(int argc, char *argv[]) { int i; if (argc <= 0 || !argv[0]) { fprintf(stderr, "invalid program name\n"); return 1; } program_name = os_GetLastname(argv[0]); get_program_dir(argv[0]); for (i = 1; i < argc; ++i) { if (!strcmp(argv[i], "--version")) { print_version(); } else if (!strcmp(argv[i], "--help")) { print_help(); } else { die("invalid option: %s", argv[i]); } } get_config_file(); parse_config(); create_dir(); do_loop(); return 0; }
int main(int argc, char **argv) { int i, block = 1; long long count = get_min_duration(1500000); sigset_t old, new; sigemptyset(&new); sigemptyset(&old); for (argv++; *argv; argv++) if ( strcmp("-noblock", *argv) != 0 ) block = 0; if ( block ) { sigaddset(&new, SIGCHLD); sigaddset(&new, SIGALRM); } signal(SIGALRM, sigalrm_cb); signal(SIGCHLD, sigchld_cb); printf("alarm first\n"); sigprocmask(SIG_BLOCK, &new, &old); alarm(1); do_loop(count); printf("done counting\n"); for (i=0; i<100; i++) if (!fork()) exit(EXIT_SUCCESS); for (i=0; i<100; i++) wait(NULL); sigprocmask(SIG_UNBLOCK, &new, &old); printf("forks first\n"); sigprocmask(SIG_BLOCK, &new, &old); for (i=0; i<100; i++) if (!fork()) exit(EXIT_SUCCESS); for (i=0; i<100; i++) wait(NULL); alarm(1); do_loop(count); printf("done counting\n"); sigprocmask(SIG_UNBLOCK, &new, &old); }
static unsigned long get_loop_cost(unsigned long loop_num) { u64_t start,end; rdtscll(start); do_loop(loop_num); rdtscll(end); return end-start; }
long long time_loop(long long count) { struct timeval tv1, tv2; long long dur; printf("count = %lld, ", count); gettimeofday(&tv1, NULL); do_loop(count); gettimeofday(&tv2, NULL); dur = (tv2.tv_sec-tv1.tv_sec)*1000000+(tv2.tv_usec-tv1.tv_usec); printf("duration = %lld usec\n", dur); return dur; }
int main(int argc, char* argv[]) { int thr_id; pthread_t p_thread; pthread_attr_t attr; pthread_attr_init(&attr); thr_id = pthread_create(&p_thread, &attr, do_loop, (void*)&a); sleep(1); do_loop((void*)&b); return 0; }
void FileLoader::loop() { if (stop_flag_) { return; } auto status = do_loop(); if (status.is_error()) { if (status.code() == 1) { return; } on_error(std::move(status)); stop_flag_ = true; return; } }
void base::loop(void) { // start process pool mem::ensure_pool(); init(state.all->NUM_THREADS); do_loop(); assert_end(); end(); // cout << "DONE " << id << endl; }
struct cmdline_config init_config(int argc, char **argv) { struct cmdline_config config = { .daemonize = true, .create_basedir = true, .configfile = CONFIGFILE, }; read_cmdline(argc, argv, &config); if (config.test_config) exit(EXIT_SUCCESS); if (optind < argc) exit_usage(1); plugin_init_ctx(); if (configure_collectd(&config) != 0) exit(EXIT_FAILURE); return config; } int run_loop(bool test_readall) { int exit_status = 0; if (do_init() != 0) { ERROR("Error: one or more plugin init callbacks failed."); exit_status = 1; } if (test_readall) { if (plugin_read_all_once() != 0) { ERROR("Error: one or more plugin read callbacks failed."); exit_status = 1; } } else { INFO("Initialization complete, entering read-loop."); do_loop(); } /* close syslog */ INFO("Exiting normally."); if (do_shutdown() != 0) { ERROR("Error: one or more plugin shutdown callbacks failed."); exit_status = 1; } return exit_status; } /* int run_loop */
/* 程序从 main 函数开始执行 */ int main(int argc, char* argv[]) { int ret; /* 线程创建函数的返回值 */ pthread_t p_thread; /* 线程的 ID 号 */ int a = 1; /* 线程编号 */ int b = 2; /* 线程编号 */ /* 创建一个新线程,它将执行 do_loop() */ ret = pthread_create(&p_thread, NULL, do_loop, (void*)&a); /* 在主线程中也同样执行 do_loop() */ do_loop((void*)&b); /* 不会执行到这一句 */ return 0; }
/** * Start a server. * * port: The port the server will run on. * argc: Number of arguments to the program. * argv: Array containing arguments to program. */ int start_server(char *port, int argc, char *argv[]) { if (do_config(port) < 0) return -1; /* Keep track of program to start and its arguments. */ if (argc - optind > 0) { run_program = true; config->program = argv[optind]; config->argc = argc - optind; config->argv = argv + optind; } fprintf(stderr, "[INFO] Server started\n"); setup_poll(); do_loop(); return 0; }
int main(int argc, char* argv[]) { int thr_id; /* thread id */ pthread_t p_thread; /* thread's structure */ int a = 1; /* thread 1 identifying */ int b = 2; /* thread 2 identifying */ pthread_attr_t attr; /* thread attributes */ /* create a new thread that will execute 'do_loop()' */ pthread_attr_init(&attr); thr_id = pthread_create(&p_thread, &attr, do_loop, (void*)&a); /* run 'do_loop()' in the main thread as well */ do_loop((void*) &b); return 0; }
/** * Start a client. * * server: String containing the server to connect to. * port: The port the client will run on. */ int start_client(char *server, char *port) { if (do_config_server(server) < 0 || do_config(port) < 0) return -1; /* Initialize connection with server. Go to student code. */ conn_t *conn = tcp_handshake(); ctcp_config_t *config_copy = calloc(sizeof(ctcp_config_t), 1); memcpy(config_copy, ctcp_cfg, sizeof(ctcp_config_t)); ctcp_state_t *state = ctcp_init(conn, config_copy); if (state == NULL) { fprintf(stderr, "[ERROR] Could not connect to server!\n"); return -1; } fprintf(stderr, "[INFO] Connected to server\n"); config->sconn->state = state; setup_poll(); do_loop(); return 0; }
int main(int argc, char *argv[]) { int i = 1, j = 0; char *key = 0; path_t cpp_opts = {0}; int code = 0; int prepare_flags = 0; unsigned char *user = 0, *group = 0, *workdir = 0; #if HAVE_SETSID - 0 path_t log_path; #endif /* HAVE_SETSID */ int pid = -1; char **argv_restart = 0; unsigned char *ejudge_xml_path = 0; unsigned char *compile_cfg_path = 0; path_t compile_cfg_buf = { 0 }; path_t contests_home_dir = { 0 }; path_t compile_home_dir = { 0 }; #if HAVE_OPEN_MEMSTREAM - 0 FILE *lang_log_f = 0; char *lang_log_t = 0; size_t lang_log_z = 0; #endif /* HAVE_OPEN_MEMSTREAM */ path_t tmp_path; int tmp_len; #if defined __WIN32__ path_t tmp_dir = { 0 }; path_t std_compile_home_dir = { 0 }; #endif enum { SUBST_SIZE = 16 }; const unsigned char *subst_src[SUBST_SIZE]; const unsigned char *subst_dst[SUBST_SIZE]; const unsigned char **subst_src_ptr = 0; const unsigned char **subst_dst_ptr = 0; start_set_self_args(argc, argv); XCALLOC(argv_restart, argc + 2); argv_restart[j++] = argv[0]; //if (argc == 1) goto print_usage; code = 1; while (i < argc) { if (!strcmp(argv[i], "-i")) { initialize_mode = 1; i++; } else if (!strcmp(argv[i], "-k")) { if (++i >= argc) goto print_usage; argv_restart[j++] = argv[i]; key = argv[i++]; } else if (!strcmp(argv[i], "-D")) { daemon_mode = 1; i++; } else if (!strcmp(argv[i], "-R")) { restart_mode = 1; i++; } else if (!strncmp(argv[i], "-D", 2)) { if (cpp_opts[0]) pathcat(cpp_opts, " "); argv_restart[j++] = argv[i]; pathcat(cpp_opts, argv[i++]); } else if (!strcmp(argv[i], "-u")) { if (++i >= argc) goto print_usage; user = argv[i++]; } else if (!strcmp(argv[i], "-g")) { if (++i >= argc) goto print_usage; group = argv[i++]; } else if (!strcmp(argv[i], "-C")) { if (++i >= argc) goto print_usage; workdir = argv[i++]; } else if (!strcmp(argv[i], "-d")) { daemon_mode = 1; i++; } else if (!strcmp(argv[i], "-r")) { if (++i >= argc) goto print_usage; snprintf(contests_home_dir, sizeof(contests_home_dir), "%s", argv[i++]); } else if (!strcmp(argv[i], "-c")) { if (++i >= argc) goto print_usage; snprintf(compile_home_dir, sizeof(compile_home_dir), "%s", argv[i++]); } else if (!strcmp(argv[i], "-x")) { if (++i >= argc) goto print_usage; ejudge_xml_path = argv[i++]; argv_restart[j++] = "-x"; argv_restart[j++] = ejudge_xml_path; } else if (!strcmp(argv[i], "--help")) { code = 0; goto print_usage; } else break; } argv_restart[j++] = "-R"; if (i < argc) { compile_cfg_path = argv[i]; argv_restart[j++] = argv[i++]; } if (i < argc) goto print_usage; argv_restart[j] = 0; start_set_args(argv_restart); if ((pid = start_find_process("ej-compile", 0)) > 0) { fprintf(stderr, "%s: is already running as pid %d\n", argv[0], pid); return 1; } #if defined EJUDGE_XML_PATH if (!ejudge_xml_path) ejudge_xml_path = EJUDGE_XML_PATH; #endif /* EJUDGE_XML_PATH */ if (!ejudge_xml_path) { fprintf(stderr, "%s: ejudge.xml configuration file is not specified\n", argv[0]); return 1; } #if defined EJUDGE_CONTESTS_HOME_DIR if (contests_home_dir[0]) { tmp_len = strlen(EJUDGE_CONTESTS_HOME_DIR); if (!strncmp(ejudge_xml_path, EJUDGE_CONTESTS_HOME_DIR, tmp_len)) { snprintf(tmp_path, sizeof(tmp_path), "%s%s", contests_home_dir, ejudge_xml_path + tmp_len); ejudge_xml_path = xstrdup(tmp_path); } } #endif #ifndef __WIN32__ ejudge_config = ejudge_cfg_parse(ejudge_xml_path); if (!ejudge_config) { fprintf(stderr, "%s: ejudge.xml is invalid\n", argv[0]); return 1; } #endif #ifdef __WIN32__ if (!compile_home_dir[0] && contests_home_dir[0]) { snprintf(compile_home_dir, sizeof(compile_home_dir), "%s/win32_compile", contests_home_dir); } if (!compile_cfg_path && compile_home_dir[0]) { snprintf(compile_cfg_buf, sizeof(compile_cfg_buf), "%s/conf/compile.cfg", compile_home_dir); compile_cfg_path = xstrdup(compile_cfg_buf); } if (!compile_cfg_path && contests_home_dir[0]) { snprintf(compile_cfg_buf, sizeof(compile_cfg_buf), "%s/win32_compile/conf/compile.cfg", contests_home_dir); compile_cfg_path = xstrdup(compile_cfg_buf); } if (!compile_cfg_path && ejudge_config && ejudge_config->compile_home_dir) { snprintf(compile_cfg_buf, sizeof(compile_cfg_buf), "%s/conf/compile.cfg", ejudge_config->compile_home_dir); compile_cfg_path = compile_cfg_buf; } if (!compile_cfg_path && ejudge_config && ejudge_config->contests_home_dir) { snprintf(compile_cfg_buf, sizeof(compile_cfg_buf), "%s/win32_compile/conf/compile.cfg", ejudge_config->contests_home_dir); compile_cfg_path = compile_cfg_buf; } #if defined EJUDGE_CONTESTS_HOME_DIR if (!compile_cfg_path) { snprintf(compile_cfg_buf, sizeof(compile_cfg_buf), "%s/compile/conf/win32_compile.cfg", EJUDGE_CONTESTS_HOME_DIR); compile_cfg_path = compile_cfg_buf; } #endif /* EJUDGE_CONTESTS_HOME_DIR */ if (!compile_cfg_path) { fprintf(stderr, "%s: compile.cfg is not specified\n", argv[0]); return 1; } #else if (!compile_cfg_path && ejudge_config && ejudge_config->compile_home_dir) { snprintf(compile_cfg_buf, sizeof(compile_cfg_buf), "%s/conf/compile.cfg", ejudge_config->compile_home_dir); compile_cfg_path = compile_cfg_buf; } if (!compile_cfg_path && ejudge_config && ejudge_config->contests_home_dir) { snprintf(compile_cfg_buf, sizeof(compile_cfg_buf), "%s/compile/conf/compile.cfg", ejudge_config->contests_home_dir); compile_cfg_path = compile_cfg_buf; } #if defined EJUDGE_CONTESTS_HOME_DIR if (!compile_cfg_path) { snprintf(compile_cfg_buf, sizeof(compile_cfg_buf), "%s/compile/conf/compile.cfg", EJUDGE_CONTESTS_HOME_DIR); compile_cfg_path = compile_cfg_buf; } #endif /* EJUDGE_CONTESTS_HOME_DIR */ if (!compile_cfg_path) { fprintf(stderr, "%s: compile.cfg is not specified\n", argv[0]); return 1; } #endif /* __WIN32__ */ if (start_prepare(user, group, workdir) < 0) return 1; memset(subst_src, 0, sizeof(subst_src)); memset(subst_dst, 0, sizeof(subst_dst)); #ifdef __WIN32__ int subst_idx = 0; if (compile_home_dir[0]) { if (ejudge_config) { subst_src[subst_idx] = ejudge_config->compile_home_dir; subst_dst[subst_idx] = compile_home_dir; subst_idx++; } else { snprintf(std_compile_home_dir, sizeof(std_compile_home_dir), "%s/compile", EJUDGE_CONTESTS_HOME_DIR); subst_src[subst_idx] = std_compile_home_dir; subst_dst[subst_idx] = compile_home_dir; subst_idx++; } } if (contests_home_dir[0]) { subst_src[subst_idx] = EJUDGE_CONTESTS_HOME_DIR; subst_dst[subst_idx] = contests_home_dir; subst_idx++; } if (compile_home_dir[0]) { subst_src[subst_idx] = "/COMPILE_HOME_DIR"; subst_dst[subst_idx] = compile_home_dir; subst_idx++; } if (contests_home_dir[0]) { subst_src[subst_idx] = "/CONTESTS_HOME_DIR"; subst_dst[subst_idx] = contests_home_dir; subst_idx++; } subst_src[subst_idx] = "/TMPDIR"; subst_dst[subst_idx] = get_tmp_dir(tmp_dir, sizeof(tmp_dir)); subst_idx++; fprintf(stderr, "Win32 substitutions:\n"); for (int j = 0; subst_src[j]; ++j) { fprintf(stderr, "%s -> %s\n", subst_src[j], subst_dst[j]); } subst_src_ptr = subst_src; subst_dst_ptr = subst_dst; #endif if (prepare(&serve_state, compile_cfg_path, prepare_flags, PREPARE_COMPILE, cpp_opts, 0, subst_src_ptr, subst_dst_ptr) < 0) return 1; #if HAVE_OPEN_MEMSTREAM - 0 if (!(lang_log_f = open_memstream(&lang_log_t, &lang_log_z))) return 1; if (lang_config_configure(lang_log_f, serve_state.global->lang_config_dir, serve_state.max_lang, serve_state.langs) < 0) { fclose(lang_log_f); lang_log_f = 0; fprintf(stderr, "%s", lang_log_t); return 1; } close_memstream(lang_log_f); lang_log_f = 0; #else if (lang_config_configure(stderr, serve_state.global->lang_config_dir, serve_state.max_lang, serve_state.langs) < 0) return 1; #endif /* HAVE_OPEN_MEMSTREAM */ if (key && filter_languages(key) < 0) return 1; if (create_dirs(&serve_state, PREPARE_COMPILE) < 0) return 1; if (check_config() < 0) return 1; if (initialize_mode) return 0; #if HAVE_SETSID - 0 log_path[0] = 0; #if defined EJUDGE_CONTESTS_HOME_DIR if (!log_path[0]) { snprintf(log_path, sizeof(log_path), "%s/var/ej-compile.log", EJUDGE_CONTESTS_HOME_DIR); } #endif if (!log_path[0]) { snprintf(log_path, sizeof(log_path), "%s/ej-compile.log", serve_state.global->var_dir); } if (daemon_mode) { // daemonize itself if (start_open_log(log_path) < 0) return 1; if ((pid = fork()) < 0) return 1; if (pid > 0) _exit(0); if (setsid() < 0) return 1; #if HAVE_OPEN_MEMSTREAM - 0 == 1 fprintf(stderr, "%s", lang_log_t); #endif /* HAVE_OPEN_MEMSTREAM */ } else if (restart_mode) { if (start_open_log(log_path) < 0) return 1; } #endif /* HAVE_SETSID */ #if HAVE_OPEN_MEMSTREAM - 0 == 1 xfree(lang_log_t); lang_log_t = 0; lang_log_z = 0; #endif /* HAVE_OPEN_MEMSTREAM */ if (do_loop() < 0) return 1; if (interrupt_restart_requested()) start_restart(); return 0; print_usage: printf("Usage: %s [ OPTS ] [config-file]\n", argv[0]); printf(" -k key - specify language key\n"); printf(" -DDEF - define a symbol for preprocessor\n"); printf(" -D - start in daemon mode\n"); printf(" -i - initialize mode: create all dirs and exit\n"); printf(" -k KEY - specify a language filter key\n"); printf(" -u U - start as user U (only as root)\n"); printf(" -g G - start as group G (only as root)\n"); printf(" -C D - change directory to D\n"); printf(" -x X - specify a path to ejudge.xml file\n"); printf(" -r S - substitute ${CONTESTS_HOME_DIR} for S in the config\n"); printf(" -c C - substitute ${COMPILE_HOME_DIR} for C in the config\n"); return code; }
static void show_span(int span) { newtComponent form; newtComponent back; newtComponent loop; newtComponent label; newtComponent bitbox; newtComponent inuse; newtComponent levels; newtComponent bpvcount; newtComponent alarms; newtComponent syncsrc; newtComponent irqmisses; char s1[] = " 1111111111222222222233"; char s2[] = "1234567890123456789012345678901"; int x; int looped = 0; struct newtExitStruct es; void *ss; char info2[256]; if (span < 0) { /* Display info on a span */ ss = newtListboxGetCurrent(spans); if (ss) { span = (long)(ss); } } snprintf(info2, sizeof(info2), "%-59s F10=Back", s[span].desc); newtOpenWindow(10,2,60,20, s[span].desc); newtPushHelpLine(info2); back = newtButton(48,8,"Back"); loop = newtButton(48,14,"Loop"); form = newtForm(NULL, NULL, 0); newtFormAddComponents(form, back, loop, NULL); span_max_chan_pos = s[span].totalchans; for (x=0;x<DAHDI_MAX_CHANNELS;x++) { DAHDI_PARAMS zp; int res; memset(&zp, 0, sizeof(zp)); zp.channo = x; res = ioctl(ctl, DAHDI_GET_PARAMS, &zp); if (!res && zp.spanno == span && zp.chanpos > span_max_chan_pos ) span_max_chan_pos = zp.chanpos; } if (span_max_chan_pos > 32) span_max_chan_pos = 32; s1[span_max_chan_pos] = '\0'; s2[span_max_chan_pos] = '\0'; bitbox = newtTextbox(8,10,span_max_chan_pos,9,0); newtFormAddComponent(form, bitbox); label = newtLabel(8,8,s1); newtFormAddComponent(form, label); label = newtLabel(8,9,s2); newtFormAddComponent(form, label); newtFormAddHotKey(form, NEWT_KEY_F10); newtFormSetTimer(form, 200); label = newtLabel(4,10,"TxA"); newtFormAddComponent(form, label); label = newtLabel(4,11,"TxB"); newtFormAddComponent(form, label); label = newtLabel(4,12,"TxC"); newtFormAddComponent(form, label); label = newtLabel(4,13,"TxD"); newtFormAddComponent(form, label); label = newtLabel(4,15,"RxA"); newtFormAddComponent(form, label); label = newtLabel(4,16,"RxB"); newtFormAddComponent(form, label); label = newtLabel(4,17,"RxC"); newtFormAddComponent(form, label); label = newtLabel(4,18,"RxD"); newtFormAddComponent(form, label); label = newtLabel(4,7,"Total/Conf/Act: "); newtFormAddComponent(form, label); inuse = newtTextbox(24,7,12,1,0); newtFormAddComponent(form, inuse); label = newtLabel(4,6,"Tx/Rx Levels: "); newtFormAddComponent(form, label); levels = newtTextbox(24,6,30,1,0); newtFormAddComponent(form, levels); label = newtLabel(4,5,"Bipolar Viol: "); newtFormAddComponent(form, label); bpvcount = newtTextbox(24,5,30,1,0); newtFormAddComponent(form, bpvcount); label = newtLabel(4,4,"IRQ Misses: "); newtFormAddComponent(form, label); irqmisses = newtTextbox(24,4,30,1,0); newtFormAddComponent(form, irqmisses); label = newtLabel(4,3,"Sync Source: "); newtFormAddComponent(form, label); syncsrc = newtTextbox(24,3,30,1,0); newtFormAddComponent(form, syncsrc); label = newtLabel(4,2,"Current Alarms: "); newtFormAddComponent(form, label); alarms = newtTextbox(24,2,30,1,0); newtFormAddComponent(form, alarms); for(;;) { /* Wait for user to select something */ do { add_cards(NULL); show_bits(span, bitbox, inuse, levels, bpvcount, alarms, syncsrc, irqmisses); newtFormRun(form, &es); } while(es.reason == NEWT_EXIT_TIMER); switch(es.reason) { case NEWT_EXIT_COMPONENT: if (es.u.co == loop) { looped = !looped; do_loop(span, looped); newtFormSetTimer(form, 200); } if (es.u.co == back) { goto out; } break; case NEWT_EXIT_HOTKEY: switch(es.u.key) { #if 0 case NEWT_KEY_F1: show_span(-1); break; #endif case NEWT_KEY_F10: goto out; } break; default: break; } } out: newtFormDestroy(form); newtPopWindow(); newtPopHelpLine(); span_max_chan_pos = 0; }
void parser() { int ab_code=4, x=line_ndx; int I; switch(token) { case 0: break; case 1: parse_let(); break; case 2: cls(); break; case 3: locate(); break; case 4: xstring_array(); get_prnstring(); break; case 5: go_to(); break; case 6: beep(); break; case 7: cls(); break; case 8: line_ndx = nrows; break; case 9: do_gs(); break; case 10: do_ret(); break; case 11: do_loop(); break; case 12: do_next(); break; case 13: do_iloop(); break; case 14: do_iloop(); break; case 15: return; break; case 16: return; break; case -1: break; default: printf("parser Inside DEFAULT\n"); printf("p_string = %s\n",p_string); a_bort(ab_code, x); break; } }
int main(int argc, char *argv[]) { int i = 1; char *key = 0; int p_flags = 0, code = 0; path_t cpp_opts = { 0 }; start_set_self_args(argc, argv); if (argc == 1) goto print_usage; code = 1; if (argc > 0) { XCALLOC(skip_archs, argc); } while (i < argc) { if (!strcmp(argv[i], "-k")) { if (++i >= argc) goto print_usage; key = argv[i++]; } else if (!strcmp(argv[i], "-S")) { managed_mode_flag = 1; i++; } else if (!strncmp(argv[i], "-D", 2)) { if (cpp_opts[0]) pathcat(cpp_opts, " "); pathcat(cpp_opts, argv[i++]); } else if (!strcmp(argv[i], "-s")) { if (++i >= argc) goto print_usage; skip_archs[skip_arch_count++] = argv[i++]; } else break; } if (i >= argc) goto print_usage; #if defined __unix__ if (getuid() == 0) { err("sorry, will not run as the root"); return 1; } #endif if (!strcasecmp(EJUDGE_CHARSET, "UTF-8")) utf8_mode = 1; if (prepare(NULL, &serve_state, argv[i], p_flags, PREPARE_RUN, cpp_opts, managed_mode_flag, 0, 0) < 0) return 1; if (filter_testers(key) < 0) return 1; if (create_dirs(&serve_state, PREPARE_RUN) < 0) return 1; if (check_config() < 0) return 1; if (do_loop() < 0) return 1; if (restart_flag) { start_restart(); } return 0; print_usage: printf("Usage: %s [ OPTS ] config-file\n", argv[0]); printf(" -k key - specify tester key\n"); printf(" -DDEF - define a symbol for preprocessor\n"); printf(" -s arch - specify architecture to skip testing\n"); return code; }