aboutsummaryrefslogtreecommitdiffstats
path: root/randpkt.c
diff options
context:
space:
mode:
authorgerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2011-01-06 23:28:58 +0000
committergerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2011-01-06 23:28:58 +0000
commiteb492e28afd20ccb931ffa0f3d0190257b7f654e (patch)
treed8e63f631f4eb3535026e250352b0254e49be4f1 /randpkt.c
parentb0231277a83ec91cc8489d2765aaf78afd6110e8 (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.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/randpkt.c b/randpkt.c
index 941b267643..a9d157ac52 100644
--- a/randpkt.c
+++ b/randpkt.c
@@ -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 */