app: add common exit point in spdk_app_parse_args

Change-Id: I6868026618d54f3eff8f8acb0ffd26db8d2ace1d
Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-on: https://review.gerrithub.io/424221
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
This commit is contained in:
Pawel Wodkowski 2018-08-31 18:36:52 +02:00 committed by Jim Harris
parent 927ebdcc90
commit 24d20caf3e

View File

@ -731,6 +731,7 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
void (*app_usage)(void)) void (*app_usage)(void))
{ {
int ch, rc, opt_idx, global_long_opts_len, app_long_opts_len; int ch, rc, opt_idx, global_long_opts_len, app_long_opts_len;
enum spdk_app_parse_args_rvals retval = SPDK_APP_PARSE_ARGS_FAIL;
memcpy(&g_default_opts, opts, sizeof(g_default_opts)); memcpy(&g_default_opts, opts, sizeof(g_default_opts));
@ -755,7 +756,7 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
" (got %d, max %d)\n", __func__, " (got %d, max %d)\n", __func__,
app_long_opts_len + global_long_opts_len, app_long_opts_len + global_long_opts_len,
SPDK_APP_MAX_CMDLINE_OPTIONS); SPDK_APP_MAX_CMDLINE_OPTIONS);
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
if (app_long_opts) { if (app_long_opts) {
@ -768,7 +769,7 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
if (ch) { if (ch) {
fprintf(stderr, "Duplicated option '%c' between the generic and application specific spdk opts.\n", fprintf(stderr, "Duplicated option '%c' between the generic and application specific spdk opts.\n",
ch); ch);
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
} }
@ -794,10 +795,11 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
break; break;
case HELP_OPT_IDX: case HELP_OPT_IDX:
usage(app_usage); usage(app_usage);
return SPDK_APP_PARSE_ARGS_HELP; retval = SPDK_APP_PARSE_ARGS_HELP;
goto out;
case SHM_ID_OPT_IDX: case SHM_ID_OPT_IDX:
if (optarg == NULL) { if (optarg == NULL) {
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
opts->shm_id = atoi(optarg); opts->shm_id = atoi(optarg);
break; break;
@ -806,13 +808,13 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
break; break;
case MEM_CHANNELS_OPT_IDX: case MEM_CHANNELS_OPT_IDX:
if (optarg == NULL) { if (optarg == NULL) {
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
opts->mem_channel = atoi(optarg); opts->mem_channel = atoi(optarg);
break; break;
case MASTER_CORE_OPT_IDX: case MASTER_CORE_OPT_IDX:
if (optarg == NULL) { if (optarg == NULL) {
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
opts->master_core = atoi(optarg); opts->master_core = atoi(optarg);
break; break;
@ -830,7 +832,7 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
if (rc != 0) { if (rc != 0) {
fprintf(stderr, "invalid memory pool size `-s %s`\n", optarg); fprintf(stderr, "invalid memory pool size `-s %s`\n", optarg);
usage(app_usage); usage(app_usage);
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
if (mem_size_has_prefix) { if (mem_size_has_prefix) {
@ -843,7 +845,7 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
if (mem_size_mb > INT_MAX) { if (mem_size_mb > INT_MAX) {
fprintf(stderr, "invalid memory pool size `-s %s`\n", optarg); fprintf(stderr, "invalid memory pool size `-s %s`\n", optarg);
usage(app_usage); usage(app_usage);
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
opts->mem_size = (int) mem_size_mb; opts->mem_size = (int) mem_size_mb;
@ -860,13 +862,13 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
free(opts->pci_whitelist); free(opts->pci_whitelist);
fprintf(stderr, "-B and -W cannot be used at the same time\n"); fprintf(stderr, "-B and -W cannot be used at the same time\n");
usage(app_usage); usage(app_usage);
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
rc = spdk_app_opts_add_pci_addr(opts, &opts->pci_blacklist, optarg); rc = spdk_app_opts_add_pci_addr(opts, &opts->pci_blacklist, optarg);
if (rc != 0) { if (rc != 0) {
free(opts->pci_blacklist); free(opts->pci_blacklist);
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
break; break;
case TRACEFLAG_OPT_IDX: case TRACEFLAG_OPT_IDX:
@ -874,13 +876,13 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
fprintf(stderr, "%s must be built with CONFIG_DEBUG=y for -L flag\n", fprintf(stderr, "%s must be built with CONFIG_DEBUG=y for -L flag\n",
argv[0]); argv[0]);
usage(app_usage); usage(app_usage);
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
#else #else
rc = spdk_log_set_trace_flag(optarg); rc = spdk_log_set_trace_flag(optarg);
if (rc < 0) { if (rc < 0) {
fprintf(stderr, "unknown flag\n"); fprintf(stderr, "unknown flag\n");
usage(app_usage); usage(app_usage);
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
opts->print_level = SPDK_LOG_DEBUG; opts->print_level = SPDK_LOG_DEBUG;
break; break;
@ -893,13 +895,13 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
free(opts->pci_blacklist); free(opts->pci_blacklist);
fprintf(stderr, "-B and -W cannot be used at the same time\n"); fprintf(stderr, "-B and -W cannot be used at the same time\n");
usage(app_usage); usage(app_usage);
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
rc = spdk_app_opts_add_pci_addr(opts, &opts->pci_whitelist, optarg); rc = spdk_app_opts_add_pci_addr(opts, &opts->pci_whitelist, optarg);
if (rc != 0) { if (rc != 0) {
free(opts->pci_whitelist); free(opts->pci_whitelist);
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
} }
break; break;
case '?': case '?':
@ -909,7 +911,7 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
* getopt() will return a '?' indicating failure. * getopt() will return a '?' indicating failure.
*/ */
usage(app_usage); usage(app_usage);
return SPDK_APP_PARSE_ARGS_FAIL; goto out;
default: default:
app_parse(ch, optarg); app_parse(ch, optarg);
} }
@ -922,7 +924,9 @@ spdk_app_parse_args(int argc, char **argv, struct spdk_app_opts *opts,
"- Please be careful one options might overwrite others.\n"); "- Please be careful one options might overwrite others.\n");
} }
return SPDK_APP_PARSE_ARGS_SUCCESS; retval = SPDK_APP_PARSE_ARGS_SUCCESS;
out:
return retval;
} }
void void