summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2015-06-16 09:35:52 -0500
committerDavid Teigland <teigland@redhat.com>2015-06-16 09:35:52 -0500
commit1f318dbcee07a309a2b2e8f391897a744e68c477 (patch)
tree99a24b5793f3e45432a42e3c6d7574578744738b
parent7fe5e4010ce210b54cfcd7b81d088227fde9b23a (diff)
downloadlvm2-1f318dbcee07a309a2b2e8f391897a744e68c477.tar.gz
Ignore hyphens in long option names
The hyphens are removed from long option names before being read. This means that: - Option name specifications in args.h must not include hyphens. (The hyphen in 'use-policies' is removed.) - A user can include hyphens anywhere in the option name. All the following are equivalent: --vgmetadatacopies, --vg-metadata-copies, --v-g-m-e-t-a-d-a-t-a-c-o-p-i-e-s-
-rw-r--r--tools/args.h2
-rw-r--r--tools/lvm.c25
2 files changed, 26 insertions, 1 deletions
diff --git a/tools/args.h b/tools/args.h
index 7b715f50c..b5c4243d4 100644
--- a/tools/args.h
+++ b/tools/args.h
@@ -117,7 +117,7 @@ arg(cachesettings_ARG, '\0', "cachesettings", string_arg, ARG_GROUPABLE)
arg(unconfigured_ARG, '\0', "unconfigured", NULL, 0)
arg(units_ARG, '\0', "units", string_arg, 0)
arg(unquoted_ARG, '\0', "unquoted", NULL, 0)
-arg(use_policies_ARG, '\0', "use-policies", NULL, 0)
+arg(use_policies_ARG, '\0', "usepolicies", NULL, 0)
arg(validate_ARG, '\0', "validate", NULL, 0)
arg(version_ARG, '\0', "version", NULL, 0)
arg(vgmetadatacopies_ARG, '\0', "vgmetadatacopies", metadatacopies_arg, 0)
diff --git a/tools/lvm.c b/tools/lvm.c
index f9ab438b2..00cd16f6a 100644
--- a/tools/lvm.c
+++ b/tools/lvm.c
@@ -16,8 +16,33 @@
#include "tools.h"
#include "lvm2cmdline.h"
+#define MAX_ARG_LEN 64
+
int main(int argc, char **argv)
{
+ char arg_new[MAX_ARG_LEN];
+ char *arg;
+ int i, j, j_new;
+
+ for (i = 1; i < argc; i++) {
+ arg = argv[i];
+
+ if (arg[0] == '-' && arg[1] == '-' && strlen(arg) < MAX_ARG_LEN) {
+ memset(arg_new, 0, sizeof(arg_new));
+ arg_new[0] = '-';
+ arg_new[1] = '-';
+
+ for (j = 2, j_new = 2; j < strlen(arg) + 1; j++) {
+ if (arg[j] == '-')
+ continue;
+ arg_new[j_new] = arg[j];
+ j_new++;
+ }
+
+ memcpy(argv[i], arg_new, strlen(arg_new) + 1);
+ }
+ }
+
return lvm2_main(argc, argv);
}