MCPcopy Create free account
hub / github.com/1a1a11a/libCacheSim / parse_opt

Function parse_opt

libCacheSim/bin/dep/traceOneHit/cli_parser.c:47–83  ·  view source on GitHub ↗

PARSER. Field 2 in ARGP. Order of parameters: KEY, ARG, STATE. */

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 2

atoiFunction · 0.85
is_trueFunction · 0.85

Tested by

no test coverage detected