diff options
author | gerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7> | 2011-01-06 23:28:58 +0000 |
---|---|---|
committer | gerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7> | 2011-01-06 23:28:58 +0000 |
commit | eb492e28afd20ccb931ffa0f3d0190257b7f654e (patch) | |
tree | d8e63f631f4eb3535026e250352b0254e49be4f1 /randpkt.c | |
parent | b0231277a83ec91cc8489d2765aaf78afd6110e8 (diff) |
On Windows, convert all of our command-line arguments from UTF-16 to
UTF-8 where we don't already do so. In Wireshark use g_utf16_to_utf8
instead of utf_16to8. This should fix bug 5520.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@35411 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'randpkt.c')
-rw-r--r-- | randpkt.c | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -50,6 +50,11 @@ #include <glib.h> #include "wiretap/wtap.h" +#ifdef _WIN32 +#include <windows.h> +#include <shellapi.h> +#endif /* _WIN32 */ + #define array_length(x) (sizeof x / sizeof x[0]) /* Types of produceable packets */ @@ -502,12 +507,29 @@ main(int argc, char **argv) guint8 buffer[65536]; int opt; + +#ifdef _WIN32 + LPWSTR *wc_argv; + int wc_argc; +#endif /* _WIN32 */ + + int produce_count = 1000; /* number of pkts to produce */ int produce_type = PKT_ETHERNET; char *produce_filename = NULL; int produce_max_bytes = 5000; pkt_example *example; +#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 */ + while ((opt = getopt(argc, argv, "b:c:ht:")) != -1) { switch (opt) { case 'b': /* max bytes */ |