diff options
author | Daiki Ueno <dueno@redhat.com> | 2018-04-27 10:00:52 +0200 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2018-05-01 13:30:43 +0200 |
commit | a625dfa4f2456b1a866489e5be15fb46578237a5 (patch) | |
tree | d0959e03eeeec6d331aa0451fe6f9199f70eb4b3 /common/message.c | |
parent | 6202903b261dfae740af3f8e985244bab48470ba (diff) |
library: Use dedicated locale object for printing error
Diffstat (limited to 'common/message.c')
-rw-r--r-- | common/message.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/common/message.c b/common/message.c index 34e0d5b..e4e00d5 100644 --- a/common/message.c +++ b/common/message.c @@ -60,6 +60,10 @@ static bool print_messages = false; +#ifdef HAVE_LOCALE_H +locale_t p11_message_locale = (locale_t) 0; +#endif + static char * default_message_storage (void) { @@ -104,9 +108,6 @@ p11_message_err (int errnum, char strerr[P11_MESSAGE_MAX]; va_list va; size_t length; -#ifdef HAVE_STRERROR_L - locale_t loc; -#endif va_start (va, msg); length = vsnprintf (buffer, P11_MESSAGE_MAX - 1, msg, va); @@ -118,10 +119,9 @@ p11_message_err (int errnum, buffer[length] = 0; snprintf (strerr, sizeof (strerr), "Unknown error %d", errnum); -#ifdef HAVE_STRERROR_L - loc = uselocale ((locale_t) 0); - if (loc != NULL) - strncpy (strerr, strerror_l (errnum, loc), sizeof (strerr)); +#if defined(HAVE_STRERROR_L) && defined(HAVE_NEWLOCALE) + if (p11_message_locale != (locale_t) 0) + strncpy (strerr, strerror_l (errnum, p11_message_locale), sizeof (strerr)); #else strerror_r (errnum, strerr, sizeof (strerr)); #endif |