static MR_bool MR_trace_options_movement_cmd(MR_TraceCmdInfo *cmd, char ***words, int *word_count) { int c; #ifdef MR_TRACE_CHECK_INTEGRITY #define MR_TRACE_MOVEMENT_OPTS "NSains" #else #define MR_TRACE_MOVEMENT_OPTS "NSans" #endif MR_optind = 0; while ((c = MR_getopt_long(*word_count, *words, MR_TRACE_MOVEMENT_OPTS, MR_trace_movement_cmd_opts, NULL)) != EOF) { switch (c) { case 'N': cmd->MR_trace_strict = MR_FALSE; break; case 'S': cmd->MR_trace_strict = MR_TRUE; break; case 'a': cmd->MR_trace_print_level_specified = MR_TRUE; cmd->MR_trace_print_level = MR_PRINT_LEVEL_ALL; break; case 'n': cmd->MR_trace_print_level_specified = MR_TRUE; cmd->MR_trace_print_level = MR_PRINT_LEVEL_NONE; break; case 's': cmd->MR_trace_print_level_specified = MR_TRUE; cmd->MR_trace_print_level = MR_PRINT_LEVEL_SOME; break; #ifdef MR_TRACE_CHECK_INTEGRITY case 'i': cmd->MR_trace_check_integrity = MR_TRUE; break; #endif default: MR_trace_usage_cur_cmd(); return MR_FALSE; } } *words = *words + MR_optind - 1; *word_count = *word_count - MR_optind + 1; return MR_TRUE; }
static MR_bool MR_trace_options_retry(MR_RetryAcrossIo *across_io, MR_bool *assume_all_io_is_tabled, char ***words, int *word_count) { int c; MR_optind = 0; while ((c = MR_getopt_long(*word_count, *words, "afio", MR_trace_retry_opts, NULL)) != EOF) { switch (c) { case 'a': *assume_all_io_is_tabled = MR_TRUE; break; case 'f': *across_io = MR_RETRY_IO_FORCE; break; case 'i': *across_io = MR_RETRY_IO_INTERACTIVE; break; case 'o': *across_io = MR_RETRY_IO_ONLY_IF_SAFE; break; default: MR_trace_usage_cur_cmd(); return MR_FALSE; } } *words = *words + MR_optind - 1; *word_count = *word_count - MR_optind + 1; return MR_TRUE; }
static MR_bool MR_trace_options_dd(MR_bool *assume_all_io_is_tabled, MR_Unsigned *default_depth, MR_Unsigned *num_nodes, MR_DeclSearchMode *search_mode, MR_bool *search_mode_was_set, MR_bool *search_mode_requires_trace_counts, char **pass_trace_counts_file, char **fail_trace_counts_file, MR_bool *new_session, MR_bool *reset_kb, MR_bool *testing, MR_bool *debug, char ***words, int *word_count) { int c; MR_optind = 0; while ((c = MR_getopt_long(*word_count, *words, "ad:f:n:p:rRs:tz", MR_trace_dd_opts, NULL)) != EOF) { switch (c) { case 'a': *assume_all_io_is_tabled = MR_TRUE; break; case 'd': if (! MR_trace_is_natural_number(MR_optarg, default_depth)) { MR_trace_usage_cur_cmd(); return MR_FALSE; } break; case 'f': *fail_trace_counts_file = MR_copy_string(MR_optarg); break; case 'n': if (! MR_trace_is_natural_number(MR_optarg, num_nodes)) { MR_trace_usage_cur_cmd(); return MR_FALSE; } break; case 'p': *pass_trace_counts_file = MR_copy_string(MR_optarg); break; case 'r': *new_session = MR_FALSE; break; case 'R': *reset_kb = MR_TRUE; break; case 's': if (MR_trace_is_valid_search_mode_string(MR_optarg, search_mode, search_mode_requires_trace_counts)) { *search_mode_was_set = MR_TRUE; } else { MR_trace_usage_cur_cmd(); return MR_FALSE; } break; case 't': *testing = MR_TRUE; break; case 'z': *debug = MR_TRUE; break; default: MR_trace_usage_cur_cmd(); return MR_FALSE; } } *words = *words + MR_optind - 1; *word_count = *word_count - MR_optind + 1; return MR_TRUE; }