svn commit: r328715 - stable/11/sbin/nvmecontrol
Alexander Motin
mav at FreeBSD.org
Thu Feb 1 19:37:19 UTC 2018
Author: mav
Date: Thu Feb 1 19:37:18 2018
New Revision: 328715
URL: https://svnweb.freebsd.org/changeset/base/328715
Log:
MFC r313190 (by imp):
Move the usage and command name lookup into functions.
Modified:
stable/11/sbin/nvmecontrol/nvmecontrol.c
stable/11/sbin/nvmecontrol/nvmecontrol.h
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sbin/nvmecontrol/nvmecontrol.c
==============================================================================
--- stable/11/sbin/nvmecontrol/nvmecontrol.c Thu Feb 1 19:36:42 2018 (r328714)
+++ stable/11/sbin/nvmecontrol/nvmecontrol.c Thu Feb 1 19:37:18 2018 (r328715)
@@ -45,13 +45,8 @@ __FBSDID("$FreeBSD$");
#include "nvmecontrol.h"
-typedef void (*nvme_fn_t)(int argc, char *argv[]);
-static struct nvme_function {
- const char *name;
- nvme_fn_t fn;
- const char *usage;
-} funcs[] = {
+static struct nvme_function funcs[] = {
{"devlist", devlist, DEVLIST_USAGE},
{"identify", identify, IDENTIFY_USAGE},
{"perftest", perftest, PERFTEST_USAGE},
@@ -62,12 +57,10 @@ static struct nvme_function {
{NULL, NULL, NULL},
};
-static void
-usage(void)
+void
+gen_usage(struct nvme_function *f)
{
- struct nvme_function *f;
- f = funcs;
fprintf(stderr, "usage:\n");
while (f->name != NULL) {
fprintf(stderr, "%s", f->usage);
@@ -76,6 +69,21 @@ usage(void)
exit(1);
}
+void
+dispatch(int argc, char *argv[], struct nvme_function *tbl)
+{
+ struct nvme_function *f = tbl;
+
+ while (f->name != NULL) {
+ if (strcmp(argv[1], f->name) == 0)
+ f->fn(argc-1, &argv[1]);
+ f++;
+ }
+
+ fprintf(stderr, "Unknown command: %s\n", argv[1]);
+ gen_usage(tbl);
+}
+
static void
print_bytes(void *data, uint32_t length)
{
@@ -217,19 +225,11 @@ parse_ns_str(const char *ns_str, char *ctrlr_str, int
int
main(int argc, char *argv[])
{
- struct nvme_function *f;
if (argc < 2)
- usage();
+ gen_usage(funcs);
- f = funcs;
- while (f->name != NULL) {
- if (strcmp(argv[1], f->name) == 0)
- f->fn(argc-1, &argv[1]);
- f++;
- }
-
- usage();
+ dispatch(argc, argv, funcs);
return (0);
}
Modified: stable/11/sbin/nvmecontrol/nvmecontrol.h
==============================================================================
--- stable/11/sbin/nvmecontrol/nvmecontrol.h Thu Feb 1 19:36:42 2018 (r328714)
+++ stable/11/sbin/nvmecontrol/nvmecontrol.h Thu Feb 1 19:37:18 2018 (r328715)
@@ -31,6 +31,14 @@
#include <dev/nvme/nvme.h>
+typedef void (*nvme_fn_t)(int argc, char *argv[]);
+
+struct nvme_function {
+ const char *name;
+ nvme_fn_t fn;
+ const char *usage;
+};
+
#define NVME_CTRLR_PREFIX "nvme"
#define NVME_NS_PREFIX "ns"
@@ -73,6 +81,8 @@ void read_namespace_data(int fd, int nsid, struct nvme
void print_hex(void *data, uint32_t length);
void read_logpage(int fd, uint8_t log_page, int nsid, void *payload,
uint32_t payload_size);
+void gen_usage(struct nvme_function *);
+void dispatch(int argc, char *argv[], struct nvme_function *f);
#endif
More information about the svn-src-stable
mailing list