From 75394455bc4ff649d4d505718e3547252dfbd1cf Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Fri, 16 Sep 2011 12:10:02 +0000 Subject: [PATCH] Fix command line option decoding LVM has huge set of options now - it's approaching 60 short-arg less options and we get interesting case of misdetection for 'merge' option which has been put into the middle of options with 'short_arg' - thus certainly past 65. (ASCII 'A'). To avoid confusion of short_arg with long_opt number - add '128' to all such non-short-arg options. --- WHATS_NEW | 1 + tools/lvmcmdline.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index 02d74854c..1e1ca1a68 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.89 - ================================== + Fix command line option decoding. Reset LV status when unlinking LV from VG. Fix overly strict extent-count divisibility requirements for striped mirrors. Fix rounding direction in lvresize when reducing volume size. diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index a8e46b18f..1dab59d5c 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -641,7 +641,7 @@ static void _add_getopt_arg(int arg, char **ptr, struct option **o) if (a->short_arg) (*o)->val = a->short_arg; else - (*o)->val = arg; + (*o)->val = arg + 128; (*o)++; } #endif @@ -662,7 +662,7 @@ static int _find_arg(struct command *com, int opt) * the_args. */ if ((a->short_arg && (opt == a->short_arg)) || - (!a->short_arg && (opt == arg))) + (!a->short_arg && (opt == (arg + 128)))) return arg; } -- 2.43.5