diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2015-06-19 09:44:14 +0200 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2015-06-19 09:51:48 +0200 |
commit | 3173442984dd8d31e43cb50db385f31c75cc9839 (patch) | |
tree | ad7f5639ddcae0570aad3ebbe52995fa5d445e38 | |
parent | 438a65dfdb13abd10b3311e96786770d70868de1 (diff) | |
download | lvm2-3173442984dd8d31e43cb50db385f31c75cc9839.tar.gz |
lvm: move hyphen mangling code
Relocate hyphen code from lvm main into lvm_run_command()
so all command and library user will have it.
Update WHATS_NEW with missing changes.
-rw-r--r-- | WHATS_NEW | 2 | ||||
-rw-r--r-- | tools/lvm.c | 25 | ||||
-rw-r--r-- | tools/lvmcmdline.c | 23 |
3 files changed, 25 insertions, 25 deletions
@@ -5,6 +5,8 @@ Version 2.02.122 - Allow to extend reduced thin volumes with external origins. Consider snapshot and origin LV as unusable if its component is suspended. Fix lvmconfig segfault on settings with undefined default value (2.02.120). + Add explicit 's' (shared) activation mode. + Ignore hyphens in long options names (i.e. --long-option == --longoption). Version 2.02.121 - 12th June 2015 ================================= diff --git a/tools/lvm.c b/tools/lvm.c index 00cd16f6a..f9ab438b2 100644 --- a/tools/lvm.c +++ b/tools/lvm.c @@ -16,33 +16,8 @@ #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); } diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index 792dc41f8..023a3d6c8 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -1414,12 +1414,35 @@ int lvm_run_command(struct cmd_context *cmd, int argc, char **argv) int ret = 0; int locking_type; int monitoring; + char *arg_new, *arg; + int i; init_error_message_produced(0); /* each command should start out with sigint flag cleared */ sigint_clear(); + /* eliminate '-' from all options starting with -- */ + for (i = 1; i < argc; ++i) { + + if (argv[i][0] != '-' || argv[i][1] != '-') + continue; + + arg_new = arg = argv[i] + 2; + + while (*arg) { + if (*arg != '-') { + if (arg_new != arg) + *arg_new = *arg; + ++arg_new; + } + ++arg; + } + + if (arg_new != arg) + *arg_new = 0; + } + if (!(cmd->cmd_line = _copy_command_line(cmd, argc, argv))) return_ECMD_FAILED; |