PARSER. Field 2 in ARGP. Order of parameters: KEY, ARG, STATE. */
| 47 | Order of parameters: KEY, ARG, STATE. |
| 48 | */ |
| 49 | static error_t parse_opt(int key, char *arg, struct argp_state *state) { |
| 50 | struct arguments *arguments = state->input; |
| 51 | |
| 52 | switch (key) { |
| 53 | case OPTION_TRACE_TYPE_PARAMS: |
| 54 | arguments->trace_type_params = arg; |
| 55 | break; |
| 56 | // case OPTION_OUTPUT_PATH: |
| 57 | // strncpy(arguments->ofilepath, arg, OFILEPATH_LEN); |
| 58 | // break; |
| 59 | case OPTION_NUM_REQ: |
| 60 | arguments->n_req = atoi(arg); |
| 61 | break; |
| 62 | case OPTION_VERBOSE: |
| 63 | arguments->verbose = is_true(arg) ? true : false; |
| 64 | break; |
| 65 | case ARGP_KEY_ARG: |
| 66 | if (state->arg_num >= N_ARGS) { |
| 67 | printf("found too many arguments, current %s\n", arg); |
| 68 | argp_usage(state); |
| 69 | exit(1); |
| 70 | } |
| 71 | arguments->args[state->arg_num] = arg; |
| 72 | break; |
| 73 | case ARGP_KEY_END: |
| 74 | if (state->arg_num < N_ARGS) { |
| 75 | printf("not enough arguments found\n"); |
| 76 | argp_usage(state); |
| 77 | exit(1); |
| 78 | } |
| 79 | break; |
| 80 | default: |
| 81 | return ARGP_ERR_UNKNOWN; |
| 82 | } |
| 83 | return 0; |
| 84 | } |
| 85 | |
| 86 | /* |
| 87 | ARGS_DOC. Field 3 in ARGP. |