[vlc-devel] commit: Use C locale when formatting error messages in the log ( Rémi Denis-Courmont )
Toralf Niebuhr
gmthor85 at aim.com
Sat Feb 6 15:37:30 CET 2010
This commit breaks the build for VLCKit (Mac OS X)
The Header "xlocale.h" should be included somewhere I just don't know whats the right place.
Including it in "include/vlc_fixups.h" works for me, but it's definitely not the right place.
Any suggestions?
Am 06.02.2010 um 13:24 schrieb git version control:
> 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++)
> {
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> http://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list