settings: Add support for hex integers (0x prefix) via get_int()
[strongswan.git] / src / libstrongswan / settings / settings.c
index 56cc2f1..b00e819 100644 (file)
@@ -512,11 +512,16 @@ inline int settings_value_as_int(char *value, int def)
 {
        int intval;
        char *end;
+       int base = 10;
 
        if (value)
        {
                errno = 0;
-               intval = strtol(value, &end, 10);
+               if (value[0] == '0' && value[1] == 'x')
+               {       /* manually detect 0x prefix as we want to avoid octal encoding */
+                       base = 16;
+               }
+               intval = strtol(value, &end, base);
                if (errno == 0 && *end == 0 && end != value)
                {
                        return intval;
@@ -540,9 +545,9 @@ METHOD(settings_t, get_int, int,
 /**
  * Described in header
  */
-inline u_int64_t settings_value_as_uint64(char *value, u_int64_t def)
+inline uint64_t settings_value_as_uint64(char *value, uint64_t def)
 {
-       u_int64_t intval;
+       uint64_t intval;
        char *end;
        int base = 10;
 
@@ -597,10 +602,10 @@ METHOD(settings_t, get_double, double,
 /**
  * Described in header
  */
-inline u_int32_t settings_value_as_time(char *value, u_int32_t def)
+inline uint32_t settings_value_as_time(char *value, uint32_t def)
 {
        char *endptr;
-       u_int32_t timeval;
+       uint32_t timeval;
        if (value)
        {
                errno = 0;
@@ -638,8 +643,8 @@ inline u_int32_t settings_value_as_time(char *value, u_int32_t def)
        return def;
 }
 
-METHOD(settings_t, get_time, u_int32_t,
-       private_settings_t *this, char *key, u_int32_t def, ...)
+METHOD(settings_t, get_time, uint32_t,
+       private_settings_t *this, char *key, uint32_t def, ...)
 {
        char *value;
        va_list args;
@@ -695,7 +700,7 @@ METHOD(settings_t, set_double, void,
 }
 
 METHOD(settings_t, set_time, void,
-       private_settings_t *this, char *key, u_int32_t value, ...)
+       private_settings_t *this, char *key, uint32_t value, ...)
 {
        char val[16];
        va_list args;