summaryrefslogtreecommitdiff
path: root/wsutil
diff options
context:
space:
mode:
authorKovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com>2009-08-31 18:16:16 +0000
committerKovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com>2009-08-31 18:16:16 +0000
commit418699b85d0bbe5497ca0570f3c15ae9274460ed (patch)
tree1f90d8bfccded286555efd67500f2c0e0bb062fe /wsutil
parent80d50191a3f235e9667a838873c16d547201ad46 (diff)
downloadwireshark-418699b85d0bbe5497ca0570f3c15ae9274460ed.tar.gz
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.def2
-rw-r--r--wsutil/unicode-utils.c18
-rw-r--r--wsutil/unicode-utils.h17
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).
*