fcoeadm --interface  without providing any additional arguments
results in an error:
        ./fcoeadm: option '--interface' requires an argument
However, fcoeadm -i displays all the interfaces correctly.

There are two problems:
1) --interface option is not specified to have optional argument,
   in {"interface", 1, 0, 'i'} of fcoeadm_options.
2) The code to parse the --interface option under case 'i' are
   incorrect.

This patch is to fix these two problems by replaing
{"interface", 1, 0, 'i'} by {"interface", 2, 0, 'i'} in fcoeadm_options
to allow --interface to have optional arguments. Secondly,
check the return pointer of s in "case 'i' in case it is NULL.



Signed-off-by: Steve Ma <[email protected]>
---

 fcoeadm.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/fcoeadm.c b/fcoeadm.c
index 6b63e17..2e44b34 100644
--- a/fcoeadm.c
+++ b/fcoeadm.c
@@ -43,7 +43,7 @@ static struct option fcoeadm_opts[] = {
        {"create", 1, 0, 'c'},
        {"destroy", 1, 0, 'd'},
        {"reset", 1, 0, 'r'},
-       {"interface", 1, 0, 'i'},
+       {"interface", 2, 0, 'i'},
        {"target", 2, 0, 't'},
        {"lun", 2, 0, 'l'},
        {"stats", 1, 0, 's'},
@@ -477,9 +477,11 @@ int main(int argc, char *argv[])
                                goto error;
                        s = NULL;
                        if (argc == 2) {
-                               if (argv[1][1] == '-')
-                                       s = strchr(argv[1], '=')+1;
-                               else
+                               if (argv[1][1] == '-') {
+                                       s = strchr(argv[1], '=');
+                                       if (s)
+                                               s += 1;
+                               } else
                                        s = argv[1]+2;
                        } else
                                s = argv[2];

_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel

Reply via email to