Author: imp
Date: Sat Feb  4 05:52:53 2017
New Revision: 313190
URL: https://svnweb.freebsd.org/changeset/base/313190

Log:
  Move the usage and command name lookup into functions.

Modified:
  head/sbin/nvmecontrol/nvmecontrol.c
  head/sbin/nvmecontrol/nvmecontrol.h

Modified: head/sbin/nvmecontrol/nvmecontrol.c
==============================================================================
--- head/sbin/nvmecontrol/nvmecontrol.c Sat Feb  4 05:52:51 2017        
(r313189)
+++ head/sbin/nvmecontrol/nvmecontrol.c Sat Feb  4 05:52:53 2017        
(r313190)
@@ -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 *c
 int
 main(int argc, char *argv[])
 {
-       struct nvme_function *f;
 
        if (argc < 2)
-               usage();
-
-       f = funcs;
-       while (f->name != NULL) {
-               if (strcmp(argv[1], f->name) == 0)
-                       f->fn(argc-1, &argv[1]);
-               f++;
-       }
+               gen_usage(funcs);
 
-       usage();
+       dispatch(argc, argv, funcs);
 
        return (0);
 }

Modified: head/sbin/nvmecontrol/nvmecontrol.h
==============================================================================
--- head/sbin/nvmecontrol/nvmecontrol.h Sat Feb  4 05:52:51 2017        
(r313189)
+++ head/sbin/nvmecontrol/nvmecontrol.h Sat Feb  4 05:52:53 2017        
(r313190)
@@ -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 nsi
 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
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to