]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Helper functions added to easily convert enumerated values.
authorTobias Brunner <tobias@strongswan.org>
Mon, 15 Nov 2010 12:07:10 +0000 (13:07 +0100)
committerTobias Brunner <tobias@strongswan.org>
Fri, 3 Dec 2010 16:40:52 +0000 (17:40 +0100)
src/libstrongswan/settings.c
src/libstrongswan/settings.h

index cc24312a7b50bba77a8677ae968d259650e78200..a7766643e175a28d57a9d3f91e0f65a7ca77d41a 100644 (file)
@@ -352,15 +352,11 @@ METHOD(settings_t, get_str, char*,
        return def;
 }
 
-METHOD(settings_t, get_bool, bool,
-          private_settings_t *this, char *key, bool def, ...)
+/**
+ * Described in header
+ */
+inline bool settings_value_as_bool(char *value, bool def)
 {
-       char *value;
-       va_list args;
-
-       va_start(args, def);
-       value = find_value(this, this->top, key, args);
-       va_end(args);
        if (value)
        {
                if (strcaseeq(value, "true") ||
@@ -381,16 +377,24 @@ METHOD(settings_t, get_bool, bool,
        return def;
 }
 
-METHOD(settings_t, get_int, int,
-          private_settings_t *this, char *key, int def, ...)
+METHOD(settings_t, get_bool, bool,
+          private_settings_t *this, char *key, bool def, ...)
 {
        char *value;
-       int intval;
        va_list args;
 
        va_start(args, def);
        value = find_value(this, this->top, key, args);
        va_end(args);
+       return settings_value_as_bool(value, def);
+}
+
+/**
+ * Described in header
+ */
+inline int settings_value_as_int(char *value, int def)
+{
+       int intval;
        if (value)
        {
                errno = 0;
@@ -403,16 +407,24 @@ METHOD(settings_t, get_int, int,
        return def;
 }
 
-METHOD(settings_t, get_double, double,
-          private_settings_t *this, char *key, double def, ...)
+METHOD(settings_t, get_int, int,
+          private_settings_t *this, char *key, int def, ...)
 {
        char *value;
-       double dval;
        va_list args;
 
        va_start(args, def);
        value = find_value(this, this->top, key, args);
        va_end(args);
+       return settings_value_as_int(value, def);
+}
+
+/**
+ * Described in header
+ */
+inline double settings_value_as_double(char *value, double def)
+{
+       double dval;
        if (value)
        {
                errno = 0;
@@ -425,16 +437,25 @@ METHOD(settings_t, get_double, double,
        return def;
 }
 
-METHOD(settings_t, get_time, u_int32_t,
-          private_settings_t *this, char *key, u_int32_t def, ...)
+METHOD(settings_t, get_double, double,
+          private_settings_t *this, char *key, double def, ...)
 {
-       char *value, *endptr;
-       u_int32_t timeval;
+       char *value;
        va_list args;
 
        va_start(args, def);
        value = find_value(this, this->top, key, args);
        va_end(args);
+       return settings_value_as_double(value, def);
+}
+
+/**
+ * Described in header
+ */
+inline u_int32_t settings_value_as_time(char *value, u_int32_t def)
+{
+       char *endptr;
+       u_int32_t timeval;
        if (value)
        {
                errno = 0;
@@ -462,6 +483,18 @@ METHOD(settings_t, get_time, u_int32_t,
        return def;
 }
 
+METHOD(settings_t, get_time, u_int32_t,
+          private_settings_t *this, char *key, u_int32_t def, ...)
+{
+       char *value;
+       va_list args;
+
+       va_start(args, def);
+       value = find_value(this, this->top, key, args);
+       va_end(args);
+       return settings_value_as_time(value, def);
+}
+
 /**
  * Enumerate section names, not sections
  */
index 70aa96fb5ba966b6f43720cbcb9f5236c817effe..ad66fed58d362856450668939a6fde641af58c3f 100644 (file)
@@ -27,6 +27,46 @@ typedef struct settings_t settings_t;
 #include "utils.h"
 #include "utils/enumerator.h"
 
+/**
+ * Convert a string value returned by a key/value enumerator to a boolean.
+ *
+ * @see settings_t.create_key_value_enumerator()
+ * @see settings_t.get_bool()
+ * @param value                        the string value
+ * @param def                  the default value, if value is NULL or invalid
+ */
+bool settings_value_as_bool(char *value, bool def);
+
+/**
+ * Convert a string value returned by a key/value enumerator to an integer.
+ *
+ * @see settings_t.create_key_value_enumerator()
+ * @see settings_t.get_int()
+ * @param value                        the string value
+ * @param def                  the default value, if value is NULL or invalid
+ */
+int settings_value_as_int(char *value, int def);
+
+/**
+ * Convert a string value returned by a key/value enumerator to a double.
+ *
+ * @see settings_t.create_key_value_enumerator()
+ * @see settings_t.get_double()
+ * @param value                        the string value
+ * @param def                  the default value, if value is NULL or invalid
+ */
+double settings_value_as_double(char *value, double def);
+
+/**
+ * Convert a string value returned by a key/value enumerator to a time value.
+ *
+ * @see settings_t.create_key_value_enumerator()
+ * @see settings_t.get_time()
+ * @param value                        the string value
+ * @param def                  the default value, if value is NULL or invalid
+ */
+u_int32_t settings_value_as_time(char *value, u_int32_t def);
+
 /**
  * Generic configuration options read from a config file.
  *
@@ -167,7 +207,7 @@ struct settings_t {
         * Create an enumerator over key/value pairs in a section.
         *
         * @param section       section name to list key/value pairs of, printf style
-        * @param ...           argmuent list for section
+        * @param ...           argument list for section
         * @return                      enumerator over (char *key, char *value)
         */
        enumerator_t* (*create_key_value_enumerator)(settings_t *this,