diff options
author | Guy Harris <guy@alum.mit.edu> | 2018-12-12 02:53:08 -0800 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2018-12-13 00:52:11 +0000 |
commit | a34cc98b2ac5a0ad011a1c3a40ce5e59230a9498 (patch) | |
tree | 6cff6069cc4b3925fa4af82ce968959444dadd75 /rawshark.c | |
parent | 17b721e45180a9decebb70dab77f41d96d5f7a03 (diff) |
Put the main() and wmain() routines for CLI programs into a separate file.
That means that code is only in one place, rather than having copies of
it in each of those programs.
CLI programs that, on Windows, should get UTF-8 arguments rather than
arguments in the local code page should:
include the top-level cli_main.h header;
define the main function as real_main();
be built with the top-level cli_main.c file.
On UN*X, cli_main.c has a main() program, and just passes the arguments
on to real_main().
On Windows, cli_main.c has a wmain() function that converts the UTF-16
arguments it's handed to UTF-8 arguments, using WideCharToMultiByte() so
that it doesn't use any functions other than those provided by the
system, and then calls real_main() with the argument count and UTF-8
arguments.
Change-Id: I8b11f01dbc5c63fce599d1bef9ad96cd92c3c01e
Reviewed-on: https://code.wireshark.org/review/31017
Petri-Dish: Guy Harris <guy@alum.mit.edu>
Tested-by: Petri Dish Buildbot
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'rawshark.c')
-rw-r--r-- | rawshark.c | 23 |
1 files changed, 3 insertions, 20 deletions
diff --git a/rawshark.c b/rawshark.c index 317e6bfd86..15b7b4c933 100644 --- a/rawshark.c +++ b/rawshark.c @@ -53,6 +53,7 @@ #include <wsutil/plugins.h> #include <wsutil/privileges.h> #include <wsutil/report_message.h> +#include <wsutil/clopts_common.h> #include "globals.h" #include <epan/packet.h> @@ -73,7 +74,6 @@ #include <epan/epan_dissect.h> #include <epan/stat_tap_ui.h> #include <epan/timestamp.h> -#include <wsutil/unicode-utils.h> #include "epan/column-utils.h" #include "epan/proto.h" #include <epan/tap.h> @@ -82,7 +82,7 @@ #include <wiretap/libpcap.h> #include <wiretap/pcap-encap.h> -#include <wsutil/clopts_common.h> +#include <cli_main.h> #include <version_info.h> #include "caputils/capture-pcap-util.h" @@ -403,7 +403,7 @@ set_link_type(const char *lt_arg) { return FALSE; } -static int +int real_main(int argc, char *argv[]) { GString *comp_info_str; @@ -828,23 +828,6 @@ clean_exit: return ret; } -#ifdef _WIN32 -int -wmain(int argc, wchar_t *wc_argv[]) -{ - char **argv; - - argv = arg_list_utf_16to8(argc, wc_argv); - return real_main(argc, argv); -} -#else -int -main(int argc, char *argv[]) -{ - return real_main(argc, argv); -} -#endif - /** * Read data from a raw pipe. The "raw" data consists of a libpcap * packet header followed by the payload. |