Added a thread save, allocating settings get_str variant called alloc_str

This commit is contained in:
Martin Willi
2011-04-21 10:10:26 +02:00
parent 6d41218ced
commit 17ce69b47a
2 changed files with 39 additions and 1 deletions
+20
View File
@@ -444,6 +444,25 @@ METHOD(settings_t, get_str, char*,
return def;
}
METHOD(settings_t, alloc_str, char*,
private_settings_t *this, char *key, char *def, ...)
{
char *value;
va_list args;
va_start(args, def);
/* additional lock to savely strdup */
this->lock->read_lock(this->lock);
value = strdupnull(find_value(this, this->top, key, args));
this->lock->unlock(this->lock);
va_end(args);
if (value)
{
return value;
}
return def;
}
/**
* Described in header
*/
@@ -1192,6 +1211,7 @@ settings_t *settings_create(char *file)
INIT(this,
.public = {
.get_str = _get_str,
.alloc_str = _alloc_str,
.get_int = _get_int,
.get_double = _get_double,
.get_time = _get_time,