diff options
Diffstat (limited to 'rawshark.c')
-rw-r--r-- | rawshark.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/rawshark.c b/rawshark.c index a88d6fee5e..27d4d7639d 100644 --- a/rawshark.c +++ b/rawshark.c @@ -117,6 +117,10 @@ #endif /* HAVE_LIBPCAP */ #include "log.h" +#ifdef _WIN32 +#include <shellapi.h> +#endif /* _WIN32 */ + /* * This is the template for the decode as option; it is shared between the * various functions that output the usage for this parameter. @@ -430,7 +434,9 @@ main(int argc, char *argv[]) gboolean arg_error = FALSE; #ifdef _WIN32 - WSADATA wsaData; + WSADATA wsaData; + LPWSTR *wc_argv; + int wc_argc; #endif /* _WIN32 */ char *gpf_path, *pf_path; @@ -453,6 +459,16 @@ main(int argc, char *argv[]) static const char optstring[] = OPTSTRING_INIT; +#ifdef _WIN32 + /* Convert our arg list to UTF-8. */ + wc_argv = CommandLineToArgvW(GetCommandLineW(), &wc_argc); + if (wc_argv && wc_argc == argc) { + for (i = 0; i < argc; i++) { + argv[i] = g_utf16_to_utf8(wc_argv[i], -1, NULL, NULL, NULL); + } + } /* XXX else bail because something is horribly, horribly wrong? */ +#endif /* _WIN32 */ + /* * Get credential information for later use. */ |