eal: add help option
authorThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 29 Jan 2015 16:51:17 +0000 (17:51 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 24 Feb 2015 11:08:01 +0000 (12:08 +0100)
Help is printed with -h or --help.

Help is also printed for an unknown option.
This was broken since the rework of options.

Fixes: 489a9d6c9f77 ("merge bsd and linux common options parsing")

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: David Marchand <david.marchand@6wind.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
lib/librte_eal/bsdapp/eal/eal.c
lib/librte_eal/common/eal_common_options.c
lib/librte_eal/common/eal_options.h
lib/librte_eal/linuxapp/eal/eal.c

index 69f3c03..ca2f445 100644 (file)
@@ -326,8 +326,10 @@ eal_parse_args(int argc, char **argv)
                int ret;
 
                /* getopt is not happy, stop right now */
-               if (opt == '?')
+               if (opt == '?') {
+                       eal_usage(prgname);
                        return -1;
+               }
 
                ret = eal_parse_common_option(opt, optarg, &internal_config);
                /* common parser is not happy */
@@ -340,6 +342,9 @@ eal_parse_args(int argc, char **argv)
                        continue;
 
                switch (opt) {
+               case 'h':
+                       eal_usage(prgname);
+                       exit(EXIT_SUCCESS);
                default:
                        if (opt < OPT_LONG_MIN_NUM && isprint(opt)) {
                                RTE_LOG(ERR, EAL, "Option %c is not supported "
index 3dda237..4314e4e 100644 (file)
@@ -57,6 +57,7 @@ eal_short_options[] =
        "b:" /* pci-blacklist */
        "c:" /* coremask */
        "d:" /* driver */
+       "h"  /* help */
        "l:" /* corelist */
        "m:" /* memory size */
        "n:" /* memory channels */
@@ -70,6 +71,7 @@ eal_long_options[] = {
        {OPT_BASE_VIRTADDR,     1, NULL, OPT_BASE_VIRTADDR_NUM    },
        {OPT_CREATE_UIO_DEV,    1, NULL, OPT_CREATE_UIO_DEV_NUM   },
        {OPT_FILE_PREFIX,       1, NULL, OPT_FILE_PREFIX_NUM      },
+       {OPT_HELP,              0, NULL, OPT_HELP_NUM             },
        {OPT_HUGE_DIR,          1, NULL, OPT_HUGE_DIR_NUM         },
        {OPT_LOG_LEVEL,         1, NULL, OPT_LOG_LEVEL_NUM        },
        {OPT_MASTER_LCORE,      1, NULL, OPT_MASTER_LCORE_NUM     },
@@ -605,6 +607,7 @@ eal_common_usage(void)
               "  --"OPT_SYSLOG"            Set syslog facility\n"
               "  --"OPT_LOG_LEVEL"         Set default log level\n"
               "  -v                  Display version information on startup\n"
+              "  -h, --help          This help\n"
               "\nEAL options for DEBUG use only:\n"
               "  --"OPT_NO_HUGE"           Use malloc instead of hugetlbfs\n"
               "  --"OPT_NO_PCI"            Disable PCI\n"
index fe1c85d..d199a00 100644 (file)
@@ -35,6 +35,8 @@
 
 enum {
        /* long options mapped to a short option */
+#define OPT_HELP              "help"
+       OPT_HELP_NUM            = 'h',
 #define OPT_PCI_BLACKLIST     "pci-blacklist"
        OPT_PCI_BLACKLIST_NUM   = 'b',
 #define OPT_PCI_WHITELIST     "pci-whitelist"
index e3955e7..d8c0628 100644 (file)
@@ -520,8 +520,10 @@ eal_parse_args(int argc, char **argv)
                int ret;
 
                /* getopt is not happy, stop right now */
-               if (opt == '?')
+               if (opt == '?') {
+                       eal_usage(prgname);
                        return -1;
+               }
 
                ret = eal_parse_common_option(opt, optarg, &internal_config);
                /* common parser is not happy */
@@ -534,6 +536,10 @@ eal_parse_args(int argc, char **argv)
                        continue;
 
                switch (opt) {
+               case 'h':
+                       eal_usage(prgname);
+                       exit(EXIT_SUCCESS);
+
                /* force loading of external driver */
                case 'd':
                        solib = malloc(sizeof(*solib));