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 /text2pcap.c | |
parent | b0beaec6a19b496bed93a040c9fcddc65abc4806 (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.
svn path=/trunk/; revision=35411
Diffstat (limited to 'text2pcap.c')
-rw-r--r-- | text2pcap.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/text2pcap.c b/text2pcap.c index 4b0ee8a236..cb3d3737a0 100644 --- a/text2pcap.c +++ b/text2pcap.c @@ -138,6 +138,11 @@ #include "text2pcap.h" #include "svnversion.h" +#ifdef _WIN32 +#include <windows.h> +#include <shellapi.h> +#endif /* _WIN32 */ + /*--- Options --------------------------------------------------------------------*/ /* Debug level */ @@ -1108,6 +1113,20 @@ parse_options (int argc, char *argv[]) { int c; char *p; +#ifdef _WIN32 + LPWSTR *wc_argv; + int wc_argc, i; +#endif /* _WIN32 */ + +#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 */ /* Scan CLI parameters */ while ((c = getopt(argc, argv, "dhqe:i:l:m:o:u:s:S:t:T:")) != -1) { @@ -1351,7 +1370,8 @@ parse_options (int argc, char *argv[]) } } -int main(int argc, char *argv[]) +int +main(int argc, char *argv[]) { parse_options(argc, argv); |