From 0ad2d338236c5b14cdabb545741cd4ab8a5bd7f7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sat, 21 Aug 2010 12:24:56 +0300 Subject: [PATCH 1/1] utf8_vfprintf(): simplify --- src/text/unicode.c | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/src/text/unicode.c b/src/text/unicode.c index cbbe53222e..3030d47085 100644 --- a/src/text/unicode.c +++ b/src/text/unicode.c @@ -197,36 +197,19 @@ char *ToLocaleDup (const char *utf8) #endif } -/** - * Formats an UTF-8 string as vasprintf(), then print it to stdout, with - * appropriate conversion to local encoding. - */ -static int utf8_vasprintf( char **str, const char *fmt, va_list ap ) -{ - char *utf8; - int res = vasprintf( &utf8, fmt, ap ); - if( res == -1 ) - return -1; - -#ifdef ASSUME_UTF8 - *str = utf8; -#else - *str = ToLocaleDup( utf8 ); - free( utf8 ); -#endif - return res; -} - /** * Formats an UTF-8 string as vfprintf(), then print it, with * appropriate conversion to local encoding. */ int utf8_vfprintf( FILE *stream, const char *fmt, va_list ap ) { +#ifdef ASSUME_UTF8 + return vfprintf (stream, fmt, ap); +#else char *str; int res; -#if defined( WIN32 ) && !defined( UNDER_CE ) +# if defined( WIN32 ) && !defined( UNDER_CE ) /* Writing to the console is a lot of fun on Microsoft Windows. * If you use the standard I/O functions, you must use the OEM code page, * which is different from the usual ANSI code page. Or maybe not, if the @@ -259,15 +242,19 @@ int utf8_vfprintf( FILE *stream, const char *fmt, va_list ap ) free (str); return res; } -#endif +# endif - res = utf8_vasprintf (&str, fmt, ap); + res = vasprintf (&str, fmt, ap); if (unlikely(res == -1)) return -1; - fputs( str, stream ); - free( str ); + char *ansi = ToLocaleDup (str); + free (str); + + fputs (ansi, stream); + free (ansi); return res; +#endif } /** -- 2.39.2