[vlc-devel] commit: Use C locale when formatting error messages in the log ( Rémi Denis-Courmont )
git version control
git at videolan.org
Sat Feb 6 13:24:58 CET 2010
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Feb 6 14:23:34 2010 +0200| [4e29ccba6220630f8cc34b9aa64c787b84613f80] | committer: Rémi Denis-Courmont
Use C locale when formatting error messages in the log
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4e29ccba6220630f8cc34b9aa64c787b84613f80
---
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 e1680ae..ef6fae2 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 ff1b89f..06c955c 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 30cb004..45af2e5 100644
--- a/src/misc/messages.c
+++ b/src/misc/messages.c
@@ -35,7 +35,7 @@
#include <vlc_common.h>
#include <stdarg.h> /* va_list for BSD */
-
+#include <locale.h>
#include <errno.h> /* 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++)
{
More information about the vlc-devel
mailing list