}
int parse_and_open(int argc, char **argv, const char *desc,
- const struct argconfig_commandline_options *clo, void *cfg, size_t size)
+ const struct argconfig_commandline_options *opts)
{
int ret;
- ret = argconfig_parse(argc, argv, desc, clo, cfg, size);
+ ret = argconfig_parse(argc, argv, desc, opts);
if (ret)
return ret;
ret = get_dev(argc, argv);
if (ret < 0)
- argconfig_print_help(desc, clo);
+ argconfig_print_help(desc, opts);
return ret;
}
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
close_fd:
close(fd);
-
ret:
return nvme_status_to_errno(err, false);
}
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (!cfg.file_name) {
fprintf(stderr, "Please provide an output file!\n");
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (cfg.aen) {
cfg.log_len = 4096;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- ret = fd;
+ ret = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (posix_memalign((void *)&cntlist, getpagesize(), 0x1000)) {
fprintf(stderr, "can not allocate controller list payload\n");
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (!cfg.namespace_id) {
err = -EINVAL;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (S_ISBLK(nvme_stat.st_mode)) {
cfg.namespace_id = get_nsid(fd);
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (!cfg.namespace_id) {
fprintf(stderr, "%s: namespace-id parameter required\n",
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (cfg.flbas != 0xff && cfg.bs != 0x00) {
fprintf(stderr,
OPT_END()
};
- ret = argconfig_parse(argc, argv, desc, opts, &cfg, sizeof(cfg));
+ ret = argconfig_parse(argc, argv, desc, opts);
if (ret < 0)
goto ret;
OPT_END()
};
- ret = argconfig_parse(argc, argv, desc, opts, &cfg, sizeof(cfg));
+ ret = argconfig_parse(argc, argv, desc, opts);
if (ret < 0)
return ret;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
nsid = nvme_get_nsid(fd);
if (nsid <= 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
cfg.cdw10 = cfg.cntlid << 16;
cfg.cdw10 = cfg.cdw10 | (cfg.rt << 8);
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
err = nvme_self_test_start(fd, cfg.namespace_id, cfg.cdw10);
if (!err) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (cfg.sel > 7) {
fprintf(stderr, "invalid 'select' param:%d\n", cfg.sel);
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fw_fd = open(cfg.fw, O_RDONLY);
cfg.offset <<= 2;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (cfg.slot > 7) {
fprintf(stderr, "invalid slot:%d\n", cfg.slot);
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
err = nvme_subsystem_reset(fd);
if (err < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
err = nvme_reset_controller(fd);
if (err < 0)
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
err = nvme_ns_rescan(fd);
if (err < 0)
const char *sanact_desc = "Sanitize action.";
const char *ovrpat_desc = "Overwrite pattern.";
- int fd;
- int ret;
+ int fd, ret;
struct config {
int no_dealloc;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
- if (fd < 0) {
- ret = fd;
+ ret = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
switch (cfg.sanact) {
case NVME_SANITIZE_ACT_CRYPTO_ERASE:
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (cfg.offset == -1) {
fprintf(stderr, "offset required param");
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (cfg.offset == -1) {
fprintf(stderr, "offset required param");
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (cfg.lbaf != 0xff && cfg.bs !=0) {
fprintf(stderr,
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (!cfg.feature_id) {
fprintf(stderr, "feature-id required param\n");
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
sec_fd = open(cfg.file, O_RDONLY);
if (sec_fd < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
switch (cfg.dtype) {
case NVME_DIR_IDENTIFY:
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (!cfg.namespace_id) {
cfg.namespace_id = get_nsid(fd);
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (cfg.prinfo > 0xf) {
err = -EINVAL;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
nc = argconfig_parse_comma_sep_array(cfg.ctx_attrs, ctx_attrs, ARRAY_SIZE(ctx_attrs));
nb = argconfig_parse_comma_sep_array(cfg.blocks, nlbs, ARRAY_SIZE(nlbs));
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (S_ISBLK(nvme_stat.st_mode)) {
cfg.namespace_id = get_nsid(fd);
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (!cfg.namespace_id) {
cfg.namespace_id = get_nsid(fd);
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (!cfg.namespace_id) {
cfg.namespace_id = get_nsid(fd);
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (!cfg.namespace_id) {
cfg.namespace_id = get_nsid(fd);
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
fmt = validate_output_format(cfg.output_format);
if (fmt < 0) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
dfd = mfd = opcode & 1 ? STDIN_FILENO : STDOUT_FILENO;
if (cfg.prinfo > 0xf) {
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
+ err = fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (cfg.size) {
if (posix_memalign(&sec_buf, getpagesize(), cfg.size)) {
OPT_END()
};
- err = fd = parse_and_open(argc, argv, desc, opts, &cfg,
- sizeof(cfg));
+ err = fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
goto ret;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
switch (cfg.dtype) {
case NVME_DIR_IDENTIFY:
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
- if (fd < 0) {
- err = fd;
+ err = fd = parse_and_open(argc, argv, desc, opts);
+ if (fd < 0)
goto ret;
- }
if (strlen(cfg.input_file)){
wfd = open(cfg.input_file, O_RDONLY,
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, &cfg, sizeof(cfg));
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
memset(&admin_cmd, 0, sizeof (admin_cmd));
admin_cmd.opcode = WDC_NVME_PURGE_CMD_OPCODE;
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
admin_cmd.cdw10 = WDC_NVME_PURGE_MONITOR_CMD_CDW10;
admin_cmd.timeout_ms = WDC_NVME_PURGE_MONITOR_TIMEOUT;
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;
OPT_END()
};
- fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts);
if (fd < 0)
return fd;