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-all mailing list