[lvm-devel] master - lvmcmdline: enhance locales check
Zdenek Kabelac
zkabelac at sourceware.org
Mon Jul 17 19:27:52 UTC 2017
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=4fa739faf2d30beea5a8423806594f506644a540
Commit: 4fa739faf2d30beea5a8423806594f506644a540
Parent: 864017710c65e07a19d70bc226b2522a6b1907dc
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Mon Jul 17 21:25:50 2017 +0200
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Jul 17 21:25:50 2017 +0200
lvmcmdline: enhance locales check
Make check for 'radixchar' more readable and logical.
Also avoid reread of number of locale is already using '.' as radixchar.
---
tools/lvmcmdline.c | 11 ++++-------
1 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
index c62c776..a952c8c 100644
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
@@ -544,7 +544,7 @@ static int _size_arg(struct cmd_context *cmd __attribute__((unused)),
char *val;
double v;
uint64_t v_tmp, adjustment;
- char *radixchar = nl_langinfo(RADIXCHAR);
+ const char *radixchar = nl_langinfo(RADIXCHAR) ? : ".";
av->percent = PERCENT_NONE;
@@ -567,10 +567,7 @@ static int _size_arg(struct cmd_context *cmd __attribute__((unused)),
return 0;
}
-
- if (!isdigit(*val) &&
- (*val != '.') &&
- (radixchar && (*val != radixchar[0]))) {
+ if (!isdigit(*val) && (*val != '.') && (*val != radixchar[0])) {
log_error("Size requires number argument.");
return 0;
}
@@ -578,10 +575,10 @@ static int _size_arg(struct cmd_context *cmd __attribute__((unused)),
errno = 0;
v = strtod(val, &ptr);
- if (*ptr == '.') {
+ if (*ptr == '.' && radixchar[0] != '.') {
/*
* Maybe user has non-C locale with different decimal point ?
- * Lets be toleran and retry with standard C locales
+ * Lets be tolerant and retry with standard C locales
*/
if (setlocale(LC_ALL, "C")) {
errno = 0;
More information about the lvm-devel
mailing list