Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com>
Cc: Pekka Enberg <penb...@kernel.org>
Cc: kvm@vger.kernel.org
---
 tools/kvm/util/parse-options.c |   81 ++++++++--------------------------------
 1 files changed, 16 insertions(+), 65 deletions(-)

diff --git a/tools/kvm/util/parse-options.c b/tools/kvm/util/parse-options.c
index c280379..4f9fdff 100644
--- a/tools/kvm/util/parse-options.c
+++ b/tools/kvm/util/parse-options.c
@@ -1,3 +1,4 @@
+#include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
@@ -39,74 +40,24 @@ static int get_arg(struct parse_opt_ctx_t *p, const struct 
option *opt,
        return 0;
 }
 
-#define numvalue(c)                                    \
-       ((c) >= 'a' ? (c) - 'a' + 10 :                  \
-        (c) >= 'A' ? (c) - 'A' + 10 : (c) - '0')
-
-static u64 readhex(const char *str, bool *error)
-{
-       char *pos = strchr(str, 'x') + 1;
-       u64 res = 0;
-
-       while (*pos) {
-               unsigned int v = numvalue(*pos);
-               if (v > 16) {
-                       *error = true;
-                       return 0;
-               }
-
-               res = (res * 16) + v;
-               pos++;
-       }
-
-       *error = false;
-       return res;
-}
-
 static int readnum(const struct option *opt, int flags,
                   const char *str, char **end)
 {
-       if (strchr(str, 'x')) {
-               bool error;
-               u64 value;
-
-               value = readhex(str, &error);
-               if (error)
-                       goto enotnum;
-
-               switch (opt->type) {
-               case OPTION_INTEGER:
-                       *(int *)opt->value = value;
-                       break;
-               case OPTION_UINTEGER:
-                       *(unsigned int *)opt->value = value;
-                       break;
-               case OPTION_LONG:
-                       *(long *)opt->value = value;
-                       break;
-               case OPTION_U64:
-                       *(u64 *)opt->value = value;
-                       break;
-               default:
-                       goto invcall;
-               }
-       } else {
-               switch (opt->type) {
-               case OPTION_INTEGER:
-                       *(int *)opt->value = strtol(str, end, 10);
-                       break;
-               case OPTION_UINTEGER:
-                       *(unsigned int *)opt->value = strtol(str, end, 10);
-                       break;
-               case OPTION_LONG:
-                       *(long *)opt->value = strtol(str, end, 10);
-                       break;
-               case OPTION_U64:
-                       *(u64 *)opt->value = strtoull(str, end, 10);
-                       break;
-               default:
-                       goto invcall;
-               }
+       switch (opt->type) {
+       case OPTION_INTEGER:
+               *(int *)opt->value = strtol(str, end, 0);
+               break;
+       case OPTION_UINTEGER:
+               *(unsigned int *)opt->value = strtol(str, end, 0);
+               break;
+       case OPTION_LONG:
+               *(long *)opt->value = strtol(str, end, 0);
+               break;
+       case OPTION_U64:
+               *(u64 *)opt->value = strtoull(str, end, 0);
+               break;
+       default:
+               goto invcall;
        }
 
        return 0;
-- 
1.7.6.3

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to