if (value)
{
if (strcasecmp(value, "true") == 0 ||
- strcasecmp(value, "enables") == 0 ||
+ strcasecmp(value, "enabled") == 0 ||
strcasecmp(value, "yes") == 0 ||
strcasecmp(value, "1") == 0)
{
}
/**
- * destry a section
-*/
+ * Implementation of settings_t.get_time.
+ */
+static u_int32_t get_time(private_settings_t *this, char *key, u_int32_t def)
+{
+ char *value, *endptr;
+ u_int32_t timeval;
+
+ value = find(this->top, key);
+ if (value)
+ {
+ errno = 0;
+ timeval = strtol(value, &endptr, 10);
+ if (errno == 0 && timeval >= 0)
+ {
+ switch (*endptr)
+ {
+ case 'd': /* time in days */
+ timeval *= 24 * 3600;
+ break;
+ case 'h': /* time in hours */
+ timeval *= 3600;
+ break;
+ case 'm': /* time in minutes */
+ timeval *= 60;
+ break;
+ case 's': /* time in seconds */
+ default:
+ break;
+ }
+ return timeval;
+ }
+ }
+ return def;
+}
+
+/**
+ * destroy a section
+ */
static void section_destroy(section_t *this)
{
this->kv->destroy_function(this->kv, free);
continue;
}
}
+ DBG1("matching '}' not found near %s", *text);
break;
case '=':
if (parse(text, "\t ", "\n", NULL, &value))
section->kv->insert_last(section->kv, kv);
continue;
}
+ DBG1("parsing value failed near %s", *text);
break;
case '#':
parse(text, "", "\n", NULL, &value);
private_settings_t *this = malloc_thing(private_settings_t);
this->public.get_str = (char*(*)(settings_t*, char *key, char* def))get_str;
- this->public.get_int = (int(*)(settings_t*, char *key, bool def))get_int;
+ this->public.get_int = (int(*)(settings_t*, char *key, int def))get_int;
+ this->public.get_time = (u_int32_t(*)(settings_t*, char *key, u_int32_t def))get_time;
this->public.get_bool = (bool(*)(settings_t*, char *key, bool def))get_bool;
this->public.destroy = (void(*)(settings_t*))destroy;