diff options
Diffstat (limited to 'src/dged/lang.c')
| -rw-r--r-- | src/dged/lang.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/dged/lang.c b/src/dged/lang.c index 7c7e478..e392136 100644 --- a/src/dged/lang.c +++ b/src/dged/lang.c @@ -60,7 +60,13 @@ void languages_init(bool register_default) { } } -struct language lang_from_settings(const char *id) { +void lang_destroy(struct language *lang) { + if (strlen(lang->id) != 3 || strncmp(lang->id, "fnd", 3) != 0) { + free((void *)lang->id); + } +} + +static struct language lang_from_settings(const char *id) { struct language l; l.id = strdup(id); @@ -93,7 +99,7 @@ struct language lang_from_settings(const char *id) { return l; } -void next_ext(const char *curr, const char **nxt, const char **end) { +static void next_ext(const char *curr, const char **nxt, const char **end) { if (curr == NULL) { *nxt = *end = NULL; return; @@ -138,6 +144,17 @@ void lang_setting_set(struct language *lang, const char *key, free((void *)langkey); } +void lang_setting_set_default(struct language *lang, const char *key, + struct setting_value value) { + const char *langkey = setting_join_key("languages", lang->id); + const char *setting_key = setting_join_key(langkey, key); + + settings_set_default(setting_key, value); + + free((void *)setting_key); + free((void *)langkey); +} + struct language lang_from_filename(const char *filename) { if (strlen(filename) == 0) { |
