Commit 4e29ccba authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Use C locale when formatting error messages in the log

parent a72aea60
...@@ -170,7 +170,8 @@ static inline char *getenv (const char *name) ...@@ -170,7 +170,8 @@ static inline char *getenv (const char *name)
#endif #endif
#ifndef HAVE_USELOCALE #ifndef HAVE_USELOCALE
#define LC_NUMERIC_MASK 0 #define LC_NUMERIC_MASK 0
#define LC_MESSAGES_MASK 0
typedef void *locale_t; typedef void *locale_t;
static inline locale_t uselocale(locale_t loc) static inline locale_t uselocale(locale_t loc)
{ {
......
...@@ -100,6 +100,8 @@ typedef struct msg_bank_t ...@@ -100,6 +100,8 @@ typedef struct msg_bank_t
#ifdef UNDER_CE #ifdef UNDER_CE
FILE *logfile; FILE *logfile;
#endif #endif
locale_t locale;
} msg_bank_t; } msg_bank_t;
void msg_Create (libvlc_int_t *); void msg_Create (libvlc_int_t *);
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include <vlc_common.h> #include <vlc_common.h>
#include <stdarg.h> /* va_list for BSD */ #include <stdarg.h> /* va_list for BSD */
#include <locale.h>
#include <errno.h> /* errno */ #include <errno.h> /* errno */
#ifdef WIN32 #ifdef WIN32
...@@ -109,6 +109,9 @@ void msg_Create (libvlc_int_t *p_libvlc) ...@@ -109,6 +109,9 @@ void msg_Create (libvlc_int_t *p_libvlc)
QUEUE.i_sub = 0; QUEUE.i_sub = 0;
QUEUE.pp_sub = NULL; 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 #ifdef UNDER_CE
QUEUE.logfile = QUEUE.logfile =
CreateFile( L"vlc-log.txt", GENERIC_WRITE, CreateFile( L"vlc-log.txt", GENERIC_WRITE,
...@@ -175,6 +178,8 @@ void msg_Destroy (libvlc_int_t *p_libvlc) ...@@ -175,6 +178,8 @@ void msg_Destroy (libvlc_int_t *p_libvlc)
#ifdef UNDER_CE #ifdef UNDER_CE
CloseHandle( QUEUE.logfile ); CloseHandle( QUEUE.logfile );
#endif #endif
if (bank->locale != (locale_t)0)
freelocale (bank->locale);
vlc_dictionary_clear( &priv->msg_enabled_objects, NULL, NULL ); 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, ...@@ -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) ) (p_this->i_flags & OBJECT_FLAGS_NODBG && i_type == VLC_MSG_DBG) )
return; return;
msg_bank_t *bank = &QUEUE;
locale_t locale = uselocale (bank->locale);
#ifndef __GLIBC__ #ifndef __GLIBC__
/* Expand %m to strerror(errno) - only once */ /* Expand %m to strerror(errno) - only once */
char buf[strlen( psz_format ) + 2001], *ptr; 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, ...@@ -373,8 +381,10 @@ static void QueueMsg( vlc_object_t *p_this, int i_type, const char *psz_module,
va_end( args ); va_end( args );
fputs( "\n", stderr ); fputs( "\n", stderr );
vlc_restorecancel (canc); vlc_restorecancel (canc);
uselocale (locale);
return; return;
} }
uselocale (locale);
msg_item_t * p_item = malloc (sizeof (*p_item)); msg_item_t * p_item = malloc (sizeof (*p_item));
if (p_item == NULL) if (p_item == NULL)
...@@ -421,7 +431,6 @@ static void QueueMsg( vlc_object_t *p_this, int i_type, const char *psz_module, ...@@ -421,7 +431,6 @@ static void QueueMsg( vlc_object_t *p_this, int i_type, const char *psz_module,
PrintMsg( p_this, p_item ); PrintMsg( p_this, p_item );
msg_bank_t *bank = &QUEUE;
vlc_rwlock_rdlock (&bank->lock); vlc_rwlock_rdlock (&bank->lock);
for (int i = 0; i < bank->i_sub; i++) for (int i = 0; i < bank->i_sub; i++)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment