diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/helpfile.c | 22 | ||||
-rw-r--r-- | common/t-helpfile.c | 2 | ||||
-rw-r--r-- | common/util.h | 2 |
3 files changed, 17 insertions, 9 deletions
diff --git a/common/helpfile.c b/common/helpfile.c index 956ec2516..240562794 100644 --- a/common/helpfile.c +++ b/common/helpfile.c @@ -234,21 +234,25 @@ findkey_locale (const char *domain, const char *key, const char *locname, intervening lines (except for comment lines) lead to the same help text. Lines following the key lines make up the actual template texts. */ - char * -gnupg_get_template (const char *domain, const char *key, unsigned int flags) +gnupg_get_template (const char *domain, const char *key, unsigned int flags, + const char *override_locale) { - static const char *locname; + static const char *locname_buffer; + const char *locname; char *result; - if (!locname) + if (override_locale && *override_locale) + locname = override_locale; + else if (!locname_buffer) { char *buffer, *p; int count = 0; const char *s = gnupg_messages_locale_name (); + buffer = xtrystrdup (s); if (!buffer) - locname = ""; + locname_buffer = ""; else { for (p = buffer; *p; p++) @@ -259,9 +263,12 @@ gnupg_get_template (const char *domain, const char *key, unsigned int flags) if (count++) *p = 0; /* Also cut at an underscore in the territory. */ } - locname = buffer; + locname_buffer = buffer; } + locname = locname_buffer; } + else + locname = locname_buffer; if (!key || !*key) return NULL; @@ -293,5 +300,6 @@ char * gnupg_get_help_string (const char *key, int only_current) { return gnupg_get_template ("help", key, - only_current? GET_TEMPLATE_CURRENT_LOCALE : 0); + only_current? GET_TEMPLATE_CURRENT_LOCALE : 0, + NULL); } diff --git a/common/t-helpfile.c b/common/t-helpfile.c index adb69ba2d..d1e7f547d 100644 --- a/common/t-helpfile.c +++ b/common/t-helpfile.c @@ -66,7 +66,7 @@ main (int argc, char **argv) } - result = gnupg_get_template (argv[0], argv[1], flags); + result = gnupg_get_template (argv[0], argv[1], flags, NULL); if (!result) { fprintf (stderr, diff --git a/common/util.h b/common/util.h index ce1dc37d8..b81664c3e 100644 --- a/common/util.h +++ b/common/util.h @@ -303,7 +303,7 @@ void gnupg_rl_initialize (void); #define GET_TEMPLATE_CRLF 4 /* Use CR+LF. */ char *gnupg_get_template (const char *domain, const char *key, - unsigned int flags); + unsigned int flags, const char *override_locale); char *gnupg_get_help_string (const char *key, int only_current_locale); /*-- localename.c --*/ |