From 4e29ccba6220630f8cc34b9aa64c787b84613f80 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sat, 6 Feb 2010 14:23:34 +0200 Subject: [PATCH] Use C locale when formatting error messages in the log --- include/vlc_fixups.h | 3 ++- src/libvlc.h | 2 ++ src/misc/messages.c | 13 +++++++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index e1680ae69f..ef6fae285d 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -170,7 +170,8 @@ static inline char *getenv (const char *name) #endif #ifndef HAVE_USELOCALE -#define LC_NUMERIC_MASK 0 +#define LC_NUMERIC_MASK 0 +#define LC_MESSAGES_MASK 0 typedef void *locale_t; static inline locale_t uselocale(locale_t loc) { diff --git a/src/libvlc.h b/src/libvlc.h index ff1b89f8f8..06c955c95d 100644 --- a/src/libvlc.h +++ b/src/libvlc.h @@ -100,6 +100,8 @@ typedef struct msg_bank_t #ifdef UNDER_CE FILE *logfile; #endif + + locale_t locale; } msg_bank_t; void msg_Create (libvlc_int_t *); diff --git a/src/misc/messages.c b/src/misc/messages.c index 30cb00455a..45af2e5106 100644 --- a/src/misc/messages.c +++ b/src/misc/messages.c @@ -35,7 +35,7 @@ #include #include /* va_list for BSD */ - +#include #include /* errno */ #ifdef WIN32 @@ -109,6 +109,9 @@ void msg_Create (libvlc_int_t *p_libvlc) QUEUE.i_sub = 0; QUEUE.pp_sub = NULL; + /* C locale to get error messages in English in the logs */ + bank->locale = newlocale (LC_MESSAGES_MASK, "C", (locale_t)0); + #ifdef UNDER_CE QUEUE.logfile = CreateFile( L"vlc-log.txt", GENERIC_WRITE, @@ -175,6 +178,8 @@ void msg_Destroy (libvlc_int_t *p_libvlc) #ifdef UNDER_CE CloseHandle( QUEUE.logfile ); #endif + if (bank->locale != (locale_t)0) + freelocale (bank->locale); vlc_dictionary_clear( &priv->msg_enabled_objects, NULL, NULL ); @@ -288,6 +293,9 @@ static void QueueMsg( vlc_object_t *p_this, int i_type, const char *psz_module, (p_this->i_flags & OBJECT_FLAGS_NODBG && i_type == VLC_MSG_DBG) ) return; + msg_bank_t *bank = &QUEUE; + locale_t locale = uselocale (bank->locale); + #ifndef __GLIBC__ /* Expand %m to strerror(errno) - only once */ char buf[strlen( psz_format ) + 2001], *ptr; @@ -373,8 +381,10 @@ static void QueueMsg( vlc_object_t *p_this, int i_type, const char *psz_module, va_end( args ); fputs( "\n", stderr ); vlc_restorecancel (canc); + uselocale (locale); return; } + uselocale (locale); msg_item_t * p_item = malloc (sizeof (*p_item)); if (p_item == NULL) @@ -421,7 +431,6 @@ static void QueueMsg( vlc_object_t *p_this, int i_type, const char *psz_module, PrintMsg( p_this, p_item ); - msg_bank_t *bank = &QUEUE; vlc_rwlock_rdlock (&bank->lock); for (int i = 0; i < bank->i_sub; i++) { -- 2.39.2