]> sourceware.org Git - lvm2.git/commitdiff
lvmcmdline: extra support for decimal point
authorZdenek Kabelac <zkabelac@redhat.com>
Tue, 28 Oct 2014 10:20:33 +0000 (11:20 +0100)
committerZdenek Kabelac <zkabelac@redhat.com>
Thu, 30 Oct 2014 22:58:49 +0000 (23:58 +0100)
If root has locales with different decimal point then '.'
(i.e. Czech with ',') lets be tolerant and retry with
"C" locales in the case '.' is found during parse of number.

Locales are then restored back.

WHATS_NEW
tools/lvmcmdline.c

index e59e0f4bd3c3baba9f4f61973349c82857060ae2..a8ea15fcb905629baa20858f1e2cb6e4b6b59086 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.112 - 
 =====================================
+  Add extra support for '.' as decimal point in size args.
   Configurable support for creation of sparse volumes with thin-pools.
   Update and correct lvcreate and lvcovert man pages.
   Mark pools and snapshots as unzeroable volumes.
index c426873caa913dc6f787fd37c83984a02eafc31b..33c0045b0a1aebb50dca8230802cdef952b2cd2b 100644 (file)
@@ -27,6 +27,7 @@
 #include <sys/resource.h>
 #include <dirent.h>
 #include <paths.h>
+#include <locale.h>
 
 #ifdef HAVE_GETOPTLONG
 #  include <getopt.h>
@@ -414,6 +415,17 @@ static int _size_arg(struct cmd_context *cmd __attribute__((unused)), struct arg
 
        v = strtod(val, &ptr);
 
+       if (*ptr == '.') {
+               /*
+                * Maybe user has non-C locale with different decimal point ?
+                * Lets be toleran and retry with standard C locales
+                */
+               if (setlocale(LC_ALL, "C")) {
+                       v = strtod(val, &ptr);
+                       setlocale(LC_ALL, "");
+               }
+       }
+
        if (ptr == val)
                return 0;
 
This page took 0.040031 seconds and 5 git commands to generate.