Allow languages/strings.db to override builtin strings.
authorMichael Poole <mdpoole@troilus.org>
Fri, 27 Oct 2006 01:06:02 +0000 (01:06 +0000)
committerMichael Poole <mdpoole@troilus.org>
Fri, 27 Oct 2006 01:06:02 +0000 (01:06 +0000)
src/helpfile.c (language_read): Add space before "parent".
  (language_read_list): Explicitly skip the file named "strings.db".
  (helpfile_read_languages): New function.
  (helpfile_finalize): Register it as a conf-reload function.
git-archimport-id: srvx@srvx.net--2006/srvx--devo--1.3--patch-67

ChangeLog
src/helpfile.c

index c5441b6fd5caed067f5d9856f5c47fd2c3d1c1fd..b79a549b3818b352dbe6b6238346809cf7c5e0a9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,22 @@
 # arch-tag: automatic-ChangeLog--srvx@srvx.net--2006/srvx--devo--1.3
 #
 
+2006-10-27 01:06:02 GMT        Michael Poole <mdpoole@troilus.org>     patch-67
+
+    Summary:
+      Allow languages/strings.db to override builtin strings.
+    Revision:
+      srvx--devo--1.3--patch-67
+
+    src/helpfile.c (language_read): Add space before "parent".
+      (language_read_list): Explicitly skip the file named "strings.db".
+      (helpfile_read_languages): New function.
+      (helpfile_finalize): Register it as a conf-reload function.
+
+    modified files:
+     ChangeLog src/helpfile.c
+
+
 2006-10-27 00:47:30 GMT        Michael Poole <mdpoole@troilus.org>     patch-66
 
     Summary:
index 8819ebb30ea5ec549ff0492038dbed2c19953f08..c9e1e657cf96da89ea8de61dac7a274464e4328b 100644 (file)
@@ -205,7 +205,7 @@ static struct language *language_read(const char *name)
     /* Read all the translations from the directory. */
     while ((dirent = readdir(dir))) {
         snprintf(filename, sizeof(filename), "languages/%s/%s", name, dirent->d_name);
-        if (!strcmp(dirent->d_name,"parent")) {
+        if (!strcmp(dirent->d_name, "parent")) {
             continue;
         } else if (!strcmp(dirent->d_name, "strings.db")) {
             dict = parse_database(filename);
@@ -235,6 +235,9 @@ static void language_read_list(void)
         if (dirent->d_name[0] == '.')
             continue;
         snprintf(namebuf, sizeof(namebuf), "languages/%s", dirent->d_name);
+        if (!strcmp(dirent->d_name, "strings.db")) {
+            continue;
+        }
         if (stat(namebuf, &sbuf) < 0) {
             log_module(MAIN_LOG, LOG_INFO, "Skipping language entry '%s' (unable to stat).", dirent->d_name);
             continue;
@@ -1033,10 +1036,27 @@ void helpfile_init(void)
     language_read_list();
 }
 
-void helpfile_finalize(void)
+static void helpfile_read_languages(void)
 {
     dict_iterator_t it;
+    dict_t dict;
+
+    language_read_list();
     for (it = dict_first(languages); it; it = iter_next(it))
         language_read(iter_key(it));
+
+    /* If the user has a strings.db in their languages directory,
+     * allow that to override C language strings.
+     */
+    dict = parse_database("languages/strings.db");
+    if (dict) {
+        language_set_messages(lang_C, dict);
+        free_database(dict);
+    }
+}
+
+void helpfile_finalize(void)
+{
+    conf_register_reload(helpfile_read_languages);
     reg_exit_func(language_cleanup);
 }