Commit 0ad2d338 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

utf8_vfprintf(): simplify

parent 130ff9a3
......@@ -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
}
/**
......
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