summaryrefslogtreecommitdiff
path: root/src/dged/lang.c
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2024-01-31 16:53:16 +0100
committerAlbert Cervin <albert@acervin.com>2024-01-31 16:53:16 +0100
commitef64c4d05794484e5affbf633f095877cc1422df (patch)
tree782fd6684135de8a8eee483fe49cc5008fc62f7d /src/dged/lang.c
parent703fde993cd672990242b31f8d28ba5180b4a6a0 (diff)
downloaddged-ef64c4d05794484e5affbf633f095877cc1422df.tar.gz
dged-ef64c4d05794484e5affbf633f095877cc1422df.tar.xz
dged-ef64c4d05794484e5affbf633f095877cc1422df.zip
Finish lang settings rework
Diffstat (limited to 'src/dged/lang.c')
-rw-r--r--src/dged/lang.c21
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) {