]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Help: use an array to choose which help matches which mode.
authorNeilBrown <neilb@suse.de>
Mon, 9 Jul 2012 07:14:16 +0000 (17:14 +1000)
committerNeilBrown <neilb@suse.de>
Mon, 9 Jul 2012 07:14:16 +0000 (17:14 +1000)
Looks cleaner than a big switch statement.

Signed-off-by: NeilBrown <neilb@suse.de>
ReadMe.c
mdadm.c
mdadm.h

index fa71ec94c580aa332cff3f1092478dac70d58cba..b6aac0b3d8210c0ef2ba77d13cec2c84e76a3794 100644 (file)
--- a/ReadMe.c
+++ b/ReadMe.c
@@ -600,3 +600,14 @@ char Help_config[] =
 "\n"
 ;
 
+char *mode_help[mode_count] = {
+       [0]             = Help,
+       [ASSEMBLE]      = Help_assemble,
+       [BUILD]         = Help_build,
+       [CREATE]        = Help_create,
+       [MANAGE]        = Help_manage,
+       [MISC]          = Help_misc,
+       [MONITOR]       = Help_monitor,
+       [GROW]          = Help_grow,
+       [INCREMENTAL]   = Help_incr,
+};
diff --git a/mdadm.c b/mdadm.c
index 6a632e9e86ac87b6eef19e17e01da4b3b47d5be4..1d050e4db325ac2e7e06deafc71fa87d3cd4a10b 100644 (file)
--- a/mdadm.c
+++ b/mdadm.c
@@ -1136,20 +1136,13 @@ int main(int argc, char *argv[])
        }
 
        if (print_help) {
-               char *help_text = Help;
+               char *help_text;
                if (print_help == 2)
                        help_text = OptionHelp;
                else
-                       switch (mode) {
-                       case ASSEMBLE : help_text = Help_assemble; break;
-                       case BUILD    : help_text = Help_build; break;
-                       case CREATE   : help_text = Help_create; break;
-                       case MANAGE   : help_text = Help_manage; break;
-                       case MISC     : help_text = Help_misc; break;
-                       case MONITOR  : help_text = Help_monitor; break;
-                       case GROW     : help_text = Help_grow; break;
-                       case INCREMENTAL:help_text= Help_incr; break;
-                       }
+                       help_text = mode_help[mode];
+               if (help_text == NULL)
+                       help_text = Help;
                fputs(help_text,stdout);
                exit(0);
        }
diff --git a/mdadm.h b/mdadm.h
index bda557dbfd76b529fc77d2bcdb580e549df627a3..98ea472de37f9c0faa4812b3069f4640f821527f 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -264,6 +264,7 @@ enum mode {
        GROW,
        INCREMENTAL,
        AUTODETECT,
+       mode_count
 };
 
 extern char short_options[];
@@ -271,6 +272,7 @@ extern char short_bitmap_options[];
 extern char short_bitmap_auto_options[];
 extern struct option long_options[];
 extern char Version[], Usage[], Help[], OptionHelp[],
+       *mode_help[],
        Help_create[], Help_build[], Help_assemble[], Help_grow[],
        Help_incr[],
        Help_manage[], Help_misc[], Help_monitor[], Help_config[];