]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Support --help --assemble etc.
authorNeil Brown <neilb@suse.de>
Mon, 30 Jan 2006 00:13:26 +0000 (00:13 +0000)
committerNeil Brown <neilb@suse.de>
Mon, 30 Jan 2006 00:13:26 +0000 (00:13 +0000)
i.e. allow '--help' to be first and still give
context sensitive help.

Also don't print truncated device-size of very large arrays.

Signed-off-by: Neil Brown <neilb@suse.de>
Detail.c
mdadm.c

index d63efdf82c87dc14296600be4b937d5bc290b2b4..6836f09495d0e0e0485c196e27830a7977fa6004 100644 (file)
--- a/Detail.c
+++ b/Detail.c
@@ -163,8 +163,13 @@ int Detail(char *dev, int brief, int test)
                printf("     Raid Level : %s\n", c?c:"-unknown-");
                if (larray_size)
                        printf("     Array Size : %llu%s\n", (larray_size>>10), human_size(larray_size));
-               if (array.level >= 1)
-                       printf("    Device Size : %d%s\n", array.size, human_size((long long)array.size<<10));
+               if (array.level >= 1) {
+                       if (array.major_version != 0 &&
+                           larray_size >= 0xFFFFFFFFULL)
+                               printf("    Device Size : unknown\n");
+                       else
+                               printf("    Device Size : %d%s\n", array.size, human_size((long long)array.size<<10));
+               }
                printf("   Raid Devices : %d\n", array.raid_disks);
                printf("  Total Devices : %d\n", array.nr_disks);
                printf("Preferred Minor : %d\n", array.md_minor);
diff --git a/mdadm.c b/mdadm.c
index 64e895eebc82303ad4a90695a8c2c6321ca4fc10..4174f9262d3e02489673f137e48737b5aabe014f 100644 (file)
--- a/mdadm.c
+++ b/mdadm.c
@@ -40,7 +40,6 @@ int main(int argc, char *argv[])
        int mode = 0;
        int opt;
        int option_index;
-       char *help_text;
        char *c;
        int rv;
        int i;
@@ -97,6 +96,7 @@ int main(int argc, char *argv[])
        int dosyslog = 0;
 
        int copies;
+       int print_help = 0;
 
        int mdfd = -1;
 
@@ -121,22 +121,12 @@ int main(int argc, char *argv[])
                /* firstly, some mode-independant options */
                switch(opt) {
                case 'h':
-                       help_text = Help;
                        if (option_index > 0 && 
                            strcmp(long_options[option_index].name, "help-options")==0)
-                               help_text = OptionHelp;
+                               print_help = 2;
                        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;
-                               }
-                       fputs(help_text,stderr);
-                       exit(0);
+                               print_help = 1;
+                       continue;
 
                case 'V':
                        fputs(Version, stderr);
@@ -821,6 +811,24 @@ int main(int argc, char *argv[])
 
        }
 
+       if (print_help) {
+               char *help_text = Help;
+               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;
+                       }
+               fputs(help_text,stderr);
+               exit(0);
+       }
+
        if (!mode && devs_found) {
                mode = MISC;
                devmode = 'Q';