diff options
author | David Teigland <teigland@redhat.com> | 2015-06-16 09:35:52 -0500 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2015-06-16 09:35:52 -0500 |
commit | 1f318dbcee07a309a2b2e8f391897a744e68c477 (patch) | |
tree | 99a24b5793f3e45432a42e3c6d7574578744738b | |
parent | 7fe5e4010ce210b54cfcd7b81d088227fde9b23a (diff) | |
download | lvm2-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.h | 2 | ||||
-rw-r--r-- | tools/lvm.c | 25 |
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); } |