]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
fabrics: fail early if argconfig_parse failed
authorSagi Grimberg <sagi@grimberg.me>
Tue, 3 Jul 2018 12:09:24 +0000 (15:09 +0300)
committerKeith Busch <keith.busch@intel.com>
Tue, 3 Jul 2018 14:23:28 +0000 (08:23 -0600)
If user got params wrong or asked for --help,
we shouldn't try to execute the command.

Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
fabrics.c

index 9a31f1719c3f2c5a5b47adeaf1d00917fac8bdba..fadbc95b6daa4562b536d566f5b0a7e4e8d00ee2 100644 (file)
--- a/fabrics.c
+++ b/fabrics.c
@@ -784,7 +784,9 @@ static int discover_from_conf_file(const char *desc, char *argstr,
                while ((ptr = strsep(&args, " =\n")) != NULL)
                        argv[argc++] = ptr;
 
-               argconfig_parse(argc, argv, desc, opts, &cfg, sizeof(cfg));
+               err = argconfig_parse(argc, argv, desc, opts, &cfg, sizeof(cfg));
+               if (err)
+                       continue;
 
                err = build_options(argstr, BUF_SIZE);
                if (err) {
@@ -827,8 +829,10 @@ int discover(const char *desc, int argc, char **argv, bool connect)
                {NULL},
        };
 
-       argconfig_parse(argc, argv, desc, command_line_options, &cfg,
+       ret = argconfig_parse(argc, argv, desc, command_line_options, &cfg,
                        sizeof(cfg));
+       if (ret)
+               return ret;
 
        cfg.nqn = NVME_DISC_SUBSYS_NAME;
 
@@ -865,8 +869,10 @@ int connect(const char *desc, int argc, char **argv)
                {NULL},
        };
 
-       argconfig_parse(argc, argv, desc, command_line_options, &cfg,
+       ret = argconfig_parse(argc, argv, desc, command_line_options, &cfg,
                        sizeof(cfg));
+       if (ret)
+               return ret;
 
        ret = build_options(argstr, BUF_SIZE);
        if (ret)
@@ -971,7 +977,7 @@ int disconnect(const char *desc, int argc, char **argv)
 {
        const char *nqn = "nqn name";
        const char *device = "nvme device";
-       int ret = 0;
+       int ret;
 
        const struct argconfig_commandline_options command_line_options[] = {
                {"nqn",    'n', "LIST", CFG_STRING, &cfg.nqn,    required_argument, nqn},
@@ -979,8 +985,11 @@ int disconnect(const char *desc, int argc, char **argv)
                {NULL},
        };
 
-       argconfig_parse(argc, argv, desc, command_line_options, &cfg,
+       ret = argconfig_parse(argc, argv, desc, command_line_options, &cfg,
                        sizeof(cfg));
+       if (ret)
+               return ret;
+
        if (!cfg.nqn && !cfg.device) {
                fprintf(stderr, "need a -n or -d argument\n");
                return -EINVAL;