.verbose = 0,
};
- const struct argconfig_commandline_options command_line_options[] = {
- {"output-file", 'o', "FILE", CFG_STRING, &cfg.file, required_argument, file},
- {"transfer-size", 's', "NUM", CFG_POSITIVE, &cfg.xfer_size, required_argument, size},
- {"data-area", 'd', "NUM", CFG_POSITIVE, &cfg.data_area, required_argument, data_area},
- {"file-size", 'f', "NUM", CFG_POSITIVE, &cfg.file_size, required_argument, file_size},
- {"offset", 't', "NUM", CFG_LONG, &cfg.offset, required_argument, offset},
- {"verbose", 'v', "", CFG_NONE, &cfg.verbose, no_argument, verbose},
- { NULL, '\0', NULL, CFG_NONE, NULL, no_argument, desc},
+ OPT_ARGS(opts) = {
+ OPT_FILE("output-file", 'o', &cfg.file, file),
+ OPT_UINT("transfer-size", 's', &cfg.xfer_size, size),
+ OPT_UINT("data-area", 'd', &cfg.data_area, data_area),
++ OPT_UINT("file-size", 'f', &cfg.file-size, file-size),
++ OPT_LONG("offset", 't', &cfg.offset, offset),
+ OPT_FLAG("verbose", 'v', &cfg.verbose, verbose),
+ OPT_END()
};
- fd = parse_and_open(argc, argv, desc, command_line_options, NULL, 0);
+ fd = parse_and_open(argc, argv, desc, opts, NULL, 0);
if (fd < 0)
return fd;
}
capabilities = wdc_get_drive_capabilities(fd);
- if ((capabilities & WDC_DRIVE_CAP_INTERNAL_LOG) == WDC_DRIVE_CAP_INTERNAL_LOG) {
+ if ((capabilities & WDC_DRIVE_CAP_INTERNAL_LOG) == WDC_DRIVE_CAP_INTERNAL_LOG)
return wdc_do_cap_diag(fd, f, xfer_size);
- } else if ((capabilities & WDC_DRIVE_CAP_SN340_DUI) == WDC_DRIVE_CAP_SN340_DUI) {
+ if ((capabilities & WDC_DRIVE_CAP_SN340_DUI) == WDC_DRIVE_CAP_SN340_DUI)
- return wdc_do_cap_dui(fd, f, xfer_size, cfg.data_area, cfg.verbose);
+ return wdc_do_cap_dui(fd, f, xfer_size, cfg.data_area, cfg.verbose, cfg.file_size, cfg.offset);
- } else if ((capabilities & WDC_DRIVE_CAP_DUI_DATA) == WDC_DRIVE_CAP_DUI_DATA) {
+ if ((capabilities & WDC_DRIVE_CAP_DUI_DATA) == WDC_DRIVE_CAP_DUI_DATA)
- return wdc_do_cap_dui(fd, f, xfer_size, cfg.data_area, cfg.verbose);
+ //return wdc_do_cap_dui(fd, f, xfer_size, WDC_NVME_DUI_MAX_DATA_AREA, cfg.verbose, 0, 0);
+ return wdc_do_cap_dui(fd, f, xfer_size, cfg.data_area, cfg.verbose, cfg.file_size, cfg.offset);
- } else if ((capabilities & WDC_SN730B_CAP_VUC_LOG) == WDC_SN730B_CAP_VUC_LOG) {
+ if ((capabilities & WDC_SN730B_CAP_VUC_LOG) == WDC_SN730B_CAP_VUC_LOG)
return wdc_do_sn730_get_and_tar(fd, f);
- } else {
- fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
- return -1;
- }
+
+ fprintf(stderr, "ERROR : WDC: unsupported device for this command\n");
+ return -1;
}
static int wdc_do_crash_dump(int fd, char *file, int type)