Fix parsing of "-a" in various contexts.
From: Doug Ledford <dledford@redhat.com> This one fixes a bug where once manage mode is set, the -a short option is no longer parsed correctly (true of grow mode as well). This happens because when you switch the short opts to the bitmap_auto version, it specifies that the argument must follow a, yet the loop expects to get an undecorated option and parse it as the disk dev instead of trying to parse optarg. So, create a new short opt array that is used for manage and grow that doesn't list a as having an argument.
This commit is contained in:
parent
e4dc510628
commit
024768c465
2
ReadMe.c
2
ReadMe.c
|
@ -87,6 +87,8 @@ char Version[] = Name " - v2.6.2 - 21st May 2007\n";
|
|||
*/
|
||||
|
||||
char short_options[]="-ABCDEFGIQhVXWvqbc:i:l:p:m:n:x:u:c:d:z:U:sarfRSow1tye:";
|
||||
char short_bitmap_options[]=
|
||||
"-ABCDEFGIQhVXWvqb:c:i:l:p:m:n:x:u:c:d:z:U:sarfRSow1tye:";
|
||||
char short_bitmap_auto_options[]=
|
||||
"-ABCDEFGIQhVXWvqb:c:i:l:p:m:n:x:u:c:d:z:U:sa:rfRSow1tye:";
|
||||
|
||||
|
|
8
mdadm.c
8
mdadm.c
|
@ -180,7 +180,7 @@ int main(int argc, char *argv[])
|
|||
switch(opt) {
|
||||
case '@': /* just incase they say --manage */
|
||||
newmode = MANAGE;
|
||||
shortopt = short_bitmap_auto_options;
|
||||
shortopt = short_bitmap_options;
|
||||
break;
|
||||
case 'a':
|
||||
case 'r':
|
||||
|
@ -188,7 +188,7 @@ int main(int argc, char *argv[])
|
|||
case ReAdd: /* re-add */
|
||||
if (!mode) {
|
||||
newmode = MANAGE;
|
||||
shortopt = short_bitmap_auto_options;
|
||||
shortopt = short_bitmap_options;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -196,7 +196,9 @@ int main(int argc, char *argv[])
|
|||
case 'B': newmode = BUILD; shortopt = short_bitmap_auto_options; break;
|
||||
case 'C': newmode = CREATE; shortopt = short_bitmap_auto_options; break;
|
||||
case 'F': newmode = MONITOR;break;
|
||||
case 'G': newmode = GROW; shortopt = short_bitmap_auto_options; break;
|
||||
case 'G': newmode = GROW;
|
||||
shortopt = short_bitmap_options;
|
||||
break;
|
||||
case 'I': newmode = INCREMENTAL; break;
|
||||
case AutoDetect:
|
||||
newmode = AUTODETECT; break;
|
||||
|
|
Loading…
Reference in New Issue