From 14c12eb0e5d2f3a2aeb0d0fb83833cfc3362fe3e Mon Sep 17 00:00:00 2001 From: EmeraldLockdown <86802223+EmeraldLoc@users.noreply.github.com> Date: Wed, 11 Mar 2026 19:34:19 -0500 Subject: [PATCH 1/4] Make languages default to english with missing data --- src/pc/djui/djui_language.c | 28 ++++++++++++++++++++-------- src/pc/ini.c | 4 +++- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/pc/djui/djui_language.c b/src/pc/djui/djui_language.c index 1de53e651..5ba673c7e 100644 --- a/src/pc/djui/djui_language.c +++ b/src/pc/djui/djui_language.c @@ -7,33 +7,45 @@ #include "pc/djui/djui_language.h" #include "pc/djui/djui_popup.h" +static ini_t* sEnglishLang = NULL; static ini_t* sLang = NULL; bool djui_language_init(char* lang) { // free old ini - if (sLang != NULL) { - ini_free(sLang); - sLang = NULL; - } + ini_free(sLang); + sLang = NULL; + ini_free(sEnglishLang); + sEnglishLang = NULL; // construct path char path[SYS_MAX_PATH] = ""; if (!lang || lang[0] == '\0') { lang = "English"; } snprintf(path, SYS_MAX_PATH, "%s/lang/%s.ini", sys_resource_path(), lang); - // load + // load normal lang sLang = ini_load(path); + // load english lang + snprintf(path, SYS_MAX_PATH, "%s/lang/English.ini", sys_resource_path()); + sEnglishLang = ini_load(path); + return sLang != NULL; } -char* djui_language_get(const char *section, const char *key) { - if (!sLang) { return (char*)key; } - char* value = (char*)ini_get(sLang, section, key); +static char* djui_language_get_english(const char *section, const char *key) { + if (!sEnglishLang) { return (char*)key; } + char* value = (char*)ini_get(sEnglishLang, section, key); if (!value) { return (char*)key; } return value; } +char* djui_language_get(const char *section, const char *key) { + if (!sLang) { return djui_language_get_english(section, key); } + char* value = (char*)ini_get(sLang, section, key); + if (!value) { return djui_language_get_english(section, key); } + return value; +} + char* djui_language_find_key(const char* section, const char* value) { if (!sLang) return NULL; return (char*)ini_find_key(sLang, section, value); diff --git a/src/pc/ini.c b/src/pc/ini.c index 91927cbba..87fef555e 100644 --- a/src/pc/ini.c +++ b/src/pc/ini.c @@ -215,7 +215,9 @@ fail: * Deletes ini_t struct from memory. */ void ini_free(ini_t *ini) { - free(ini->data); + if (ini) { + free(ini->data); + } free(ini); } From e383d0759474f94df04a3191c44940b46b93934a Mon Sep 17 00:00:00 2001 From: EmeraldLockdown <86802223+EmeraldLoc@users.noreply.github.com> Date: Wed, 11 Mar 2026 19:36:23 -0500 Subject: [PATCH 2/4] Make syntax in ini more concise --- src/pc/ini.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pc/ini.c b/src/pc/ini.c index 87fef555e..528f42b3c 100644 --- a/src/pc/ini.c +++ b/src/pc/ini.c @@ -215,9 +215,7 @@ fail: * Deletes ini_t struct from memory. */ void ini_free(ini_t *ini) { - if (ini) { - free(ini->data); - } + if (ini) free(ini->data); free(ini); } From 766f3107e98bfd2898d0695f4cdc2f1a881eb596 Mon Sep 17 00:00:00 2001 From: EmeraldLockdown <86802223+EmeraldLoc@users.noreply.github.com> Date: Wed, 11 Mar 2026 21:01:44 -0500 Subject: [PATCH 3/4] coolio is happy now, right? --- src/pc/djui/djui_language.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pc/djui/djui_language.c b/src/pc/djui/djui_language.c index 5ba673c7e..f8db04959 100644 --- a/src/pc/djui/djui_language.c +++ b/src/pc/djui/djui_language.c @@ -22,7 +22,7 @@ bool djui_language_init(char* lang) { if (!lang || lang[0] == '\0') { lang = "English"; } snprintf(path, SYS_MAX_PATH, "%s/lang/%s.ini", sys_resource_path(), lang); - // load normal lang + // load user lang sLang = ini_load(path); // load english lang From 348bb3b35a980eab8ae4bc7e2776c59a1f2d2233 Mon Sep 17 00:00:00 2001 From: EmeraldLockdown <86802223+EmeraldLoc@users.noreply.github.com> Date: Thu, 12 Mar 2026 15:16:19 -0500 Subject: [PATCH 4/4] good idea peachy, thanks! --- src/pc/djui/djui_language.c | 2 -- src/pc/ini.c | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pc/djui/djui_language.c b/src/pc/djui/djui_language.c index f8db04959..2720342f8 100644 --- a/src/pc/djui/djui_language.c +++ b/src/pc/djui/djui_language.c @@ -33,14 +33,12 @@ bool djui_language_init(char* lang) { } static char* djui_language_get_english(const char *section, const char *key) { - if (!sEnglishLang) { return (char*)key; } char* value = (char*)ini_get(sEnglishLang, section, key); if (!value) { return (char*)key; } return value; } char* djui_language_get(const char *section, const char *key) { - if (!sLang) { return djui_language_get_english(section, key); } char* value = (char*)ini_get(sLang, section, key); if (!value) { return djui_language_get_english(section, key); } return value; diff --git a/src/pc/ini.c b/src/pc/ini.c index 528f42b3c..068afb949 100644 --- a/src/pc/ini.c +++ b/src/pc/ini.c @@ -256,6 +256,7 @@ const char* ini_find_key(ini_t *ini, const char* section, const char* value) { * @return string with the key. */ const char* ini_get(ini_t *ini, const char *section, const char *key) { + if (!ini) return NULL; char *current_section = ""; char *val; char *p = ini->data;