diff --git a/src/settings.c b/src/settings.c index 359097b..278332d 100644 --- a/src/settings.c +++ b/src/settings.c @@ -24,7 +24,6 @@ #include #include -static SettingClass* settings_get_class (Settings *s, char *classname) { if (s == NULL || classname == NULL) @@ -264,18 +263,7 @@ char* settings_get (Settings *s, char *class, char *name) return NULL; SettingClass *c = settings_get_class (s, class); - if (c == NULL) - return NULL; - - KeyValue *kv; - int i; - for (i = 0;i < c->entry_count;i++) - { - kv = &c->entries[i]; - if (strcmp(kv->key, name) == 0) - return kv->values; - } - return NULL; + return settingclass_get (c, name); } int settings_set (Settings *s, char *class, char *name, char *value) @@ -284,6 +272,7 @@ int settings_set (Settings *s, char *class, char *name, char *value) return 1; SettingClass *c = settings_get_class (s, class); + if (c == NULL) { if (s->class_count + 1 >= s->class_size) @@ -305,6 +294,28 @@ int settings_set (Settings *s, char *class, char *name, char *value) } + return settingclass_set (c, name, value); +} + +char* settingclass_get (SettingClass *c, char *name) +{ + if (c == NULL) + return NULL; + + KeyValue *kv; + int i; + for (i = 0;i < c->entry_count;i++) + { + kv = &c->entries[i]; + if (strcmp(kv->key, name) == 0) + return kv->values; + } + return NULL; +} + +int settingclass_set (SettingClass *c, char *name, char *value) +{ + int i; for (i = 0;i < c->entry_count;i++) { diff --git a/src/settings.h b/src/settings.h index 49d80ce..971e6c8 100644 --- a/src/settings.h +++ b/src/settings.h @@ -69,6 +69,18 @@ int settings_save (Settings *s); */ void settings_destroy (Settings *s); +/** + * Gets the requested SettingClass. + * @param s Settings Object. + * @param classname The name of the class to find (case sensitive). + * @return a pointer to the found class, or NULL if not found. + */ +SettingClass* settings_get_class (Settings *s, char *classname); + +char* settingclass_get (SettingClass *s, char *name); + +int settingclass_set (SettingClass *s, char *name, char *value); + /** * Gets a setting from a Settings type. * @param s Pointer to a setting type.