diff --git a/gtk/file_dlg_win32.c b/gtk/file_dlg_win32.c index fbe2f64577..65f41ce9b5 100644 --- a/gtk/file_dlg_win32.c +++ b/gtk/file_dlg_win32.c @@ -947,7 +947,7 @@ preview_set_filename(HWND of_hwnd, gchar *preview_file) { TCHAR string_buff[PREVIEW_STR_MAX]; gint64 data_offset; guint packet = 0; - guint64 filesize; + gint64 filesize; time_t ti_time; struct tm *ti_tm; guint elapsed_time; @@ -993,7 +993,7 @@ preview_set_filename(HWND of_hwnd, gchar *preview_file) { /* size */ filesize = wtap_file_size(wth, &err); - _snwprintf(string_buff, PREVIEW_STR_MAX, _T("%") _T(PRIu64) _T(" bytes"), filesize); + utf_8to16_snprintf(string_buff, PREVIEW_STR_MAX, "%" G_GINT64_FORMAT " bytes", filesize); cur_ctrl = GetDlgItem(of_hwnd, EWFD_PTX_SIZE); SetWindowText(cur_ctrl, string_buff); 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 #include "unicode-utils.h" -#include -#include -#include - /** @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 +#include +#include +#include + /** * @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). *