summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2015-06-19 09:44:14 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2015-06-19 09:51:48 +0200
commit3173442984dd8d31e43cb50db385f31c75cc9839 (patch)
treead7f5639ddcae0570aad3ebbe52995fa5d445e38
parent438a65dfdb13abd10b3311e96786770d70868de1 (diff)
downloadlvm2-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_NEW2
-rw-r--r--tools/lvm.c25
-rw-r--r--tools/lvmcmdline.c23
3 files changed, 25 insertions, 25 deletions
diff --git a/WHATS_NEW b/WHATS_NEW
index 3ef783f48..8ea02cd58 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -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;