From 5b5c8300ef6f8c8d2105baba7379607d45ce1d84 Mon Sep 17 00:00:00 2001 From: Tatsuo Kawasaki <kawasaki@redhat.com> Date: Fri, 12 Feb 2010 14:42:52 -0500 Subject: [PATCH] qdisk: mkqdisk argument positioning mkqdisk debug option (-d) doesn't work after -L option. This works: mkqdisk -d -L This should also work: mkqdisk -L -d This patch fixes the behavior. Resolves: rhbz#555246 Signed-off-by: Lon Hohberger <lhh@redhat.com> --- cman/qdisk/mkqdisk.c | 23 ++++++++++++++++------- 1 files changed, 16 insertions(+), 7 deletions(-) diff --git a/cman/qdisk/mkqdisk.c b/cman/qdisk/mkqdisk.c index 46d6b63..6afdf94 100644 --- a/cman/qdisk/mkqdisk.c +++ b/cman/qdisk/mkqdisk.c @@ -37,7 +37,7 @@ main(int argc, char **argv) { char device[128]; char *newdev = NULL, *newlabel = NULL; - int rv, verbose_level = 1; + int rv, flg = 0, verbose_level = 1; printf("mkqdisk v0.6.0\n"); @@ -48,13 +48,12 @@ main(int argc, char **argv) break; case 'L': /* List */ - close(2); - return find_partitions(NULL, NULL, 0, verbose_level); - break; + flg = rv; + break; case 'f': - close(2); - return find_partitions( optarg, device, - sizeof(device), verbose_level); + flg = rv; + newlabel = optarg; + break; case 'c': newdev = optarg; break; @@ -70,6 +69,16 @@ main(int argc, char **argv) } } + /* list */ + if (flg == 'L') { + close(2); + return find_partitions(NULL, NULL, 0, verbose_level); + } else if (flg == 'f') { + close(2); + return find_partitions( newlabel, device, + sizeof(device), verbose_level); + } + if (!newdev && !newlabel) { printf("usage: mkqdisk -L | -f <label> | -c " "<device> -l <label>\n"); -- 1.7.2.3