diff options
author | Gerald Combs <gerald@wireshark.org> | 2011-01-06 23:28:58 +0000 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2011-01-06 23:28:58 +0000 |
commit | 3bc1fc38026b7438361c23e3fe0d8bb16a4b1583 (patch) | |
tree | d8e63f631f4eb3535026e250352b0254e49be4f1 /randpkt.c | |
parent | b0beaec6a19b496bed93a040c9fcddc65abc4806 (diff) | |
download | wireshark-3bc1fc38026b7438361c23e3fe0d8bb16a4b1583.tar.gz |
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.
svn path=/trunk/; revision=35411
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 */ |