diff options
author | Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> | 2009-08-31 18:16:16 +0000 |
---|---|---|
committer | Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com> | 2009-08-31 18:16:16 +0000 |
commit | 418699b85d0bbe5497ca0570f3c15ae9274460ed (patch) | |
tree | 1f90d8bfccded286555efd67500f2c0e0bb062fe /wsutil | |
parent | 80d50191a3f235e9667a838873c16d547201ad46 (diff) |
Add utf_8to16_snprintf() which creates a UTF16 string according to the given format string. The format string + arguments are expected to be in UTF-8 format. This change effectively removes the only place where we use PRIu64.
svn path=/trunk/; revision=29635
Diffstat (limited to 'wsutil')
-rw-r--r-- | wsutil/libwsutil.def | 2 | ||||
-rw-r--r-- | wsutil/unicode-utils.c | 18 | ||||
-rw-r--r-- | wsutil/unicode-utils.h | 17 |
3 files changed, 31 insertions, 6 deletions
diff --git a/wsutil/libwsutil.def b/wsutil/libwsutil.def index 4edca72000..db5d2ec498 100644 --- a/wsutil/libwsutil.def +++ b/wsutil/libwsutil.def @@ -47,4 +47,4 @@ type_util_guint64_to_gdouble ; unicode-utils.c utf_16to8 utf_8to16 - +utf_8to16_snprintf diff --git a/wsutil/unicode-utils.c b/wsutil/unicode-utils.c index 91c4aeca88..f011d46292 100644 --- a/wsutil/unicode-utils.c +++ b/wsutil/unicode-utils.c @@ -26,13 +26,8 @@ #error "This is only for Windows" #endif -#include <glib.h> #include "unicode-utils.h" -#include <windows.h> -#include <tchar.h> -#include <wchar.h> - /** @file * Unicode utilities (internal interface) * @@ -89,6 +84,19 @@ wchar_t * utf_8to16(const char *utf8str) { return utf16buf[idx]; } +void utf_8to16_snprintf(TCHAR *utf16buf, gint utf16buf_len, const gchar* fmt, ...) { + va_list ap; + gchar* dst; + + va_start(ap,fmt); + dst = g_strdup_vprintf(fmt, ap); + va_end(ap); + + _snwprintf(utf16buf, utf16buf_len, _T("%s"), utf_8to16(dst)); + + g_free(dst); +} + /* Convert from UTF-16 to UTF-8. */ gchar * utf_16to8(const wchar_t *utf16str) { static gchar *utf8buf[3]; diff --git a/wsutil/unicode-utils.h b/wsutil/unicode-utils.h index 2a08be71af..f3c423ffd8 100644 --- a/wsutil/unicode-utils.h +++ b/wsutil/unicode-utils.h @@ -27,6 +27,15 @@ #ifdef _WIN32 +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <glib.h> +#include <windows.h> +#include <tchar.h> +#include <wchar.h> + /** * @file Unicode convenience routines. */ @@ -40,6 +49,14 @@ */ wchar_t * utf_8to16(const char *utf8str); +/** Create a UTF-16 string (in place) according to the format string. + * + * @param utf16buf The buffer to return the UTF-16 string in. + * @param utf16buf_len The size of the 'utf16buf' parameter + * @param fmt A standard g_printf() format string + */ +void utf_8to16_snprintf(TCHAR *utf16buf, gint utf16buf_len, const gchar* fmt, ...); + /** Given a UTF-16 string, convert it to UTF-8. This is meant to be used * to convert between GTK+ 2.x (UTF-8) to Windows (UTF-16). * |