From 0c337627054388dc9695ecef7e113f7df7e33967 Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Fri, 27 Oct 2006 01:06:02 +0000 Subject: [PATCH] Allow languages/strings.db to override builtin strings. 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 | 16 ++++++++++++++++ src/helpfile.c | 24 ++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c5441b6..b79a549 100644 --- 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 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 patch-66 Summary: diff --git a/src/helpfile.c b/src/helpfile.c index 8819ebb..c9e1e65 100644 --- a/src/helpfile.c +++ b/src/helpfile.c @@ -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); } -- 2.20.1