aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2018-12-26 18:10:12 +0100
committerAnders Broman <a.broman58@gmail.com>2019-01-02 12:08:20 +0000
commite2e5b01d771339a596a418ec306fe00ab504e593 (patch)
tree69b8cb5383cbb91c6890849194f2852bfeee1a94
parent974969cd0650d6c612e035b696b36c1d18b70bc9 (diff)
cli_main: remove real_main from stack traces for non-Windows
Restore the "main" name since that is used everywhere else except for Windows. On Windows, "main" is renamed via a macro to avoid a conflict with "wmain" and to allow it to be called in cli_main.c. For those wondering, GUI applications (such as Qt) have a different entry point, namely WinMain. In Qt5, src/winmain/qtmain_win.cpp defines WinMain, but seems to convert its arguments from Unicode to CP_ACP (ASCII). It might not support UTF-8, but I did not verify this. Change-Id: I93fa59324eb2ef95a305b08fc5ba34d49cc73bf0 Reviewed-on: https://code.wireshark.org/review/31208 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--capinfos.c2
-rw-r--r--captype.c2
-rw-r--r--cli_main.c15
-rw-r--r--cli_main.h10
-rw-r--r--dumpcap.c2
-rw-r--r--editcap.c2
-rw-r--r--extcap/androiddump.c2
-rw-r--r--extcap/ciscodump.c2
-rw-r--r--extcap/randpktdump.c2
-rw-r--r--extcap/sshdump.c2
-rw-r--r--extcap/udpdump.c2
-rw-r--r--mergecap.c2
-rw-r--r--randpkt.c2
-rw-r--r--rawshark.c2
-rw-r--r--reordercap.c2
-rw-r--r--text2pcap.c2
-rw-r--r--tfshark.c2
-rw-r--r--tshark.c2
18 files changed, 29 insertions, 28 deletions
diff --git a/capinfos.c b/capinfos.c
index 18cd9696b9..9bdb961984 100644
--- a/capinfos.c
+++ b/capinfos.c
@@ -1400,7 +1400,7 @@ hash_to_str(const unsigned char *hash, size_t length, char *str) {
}
int
-real_main(int argc, char *argv[])
+main(int argc, char *argv[])
{
char *init_progfile_dir_error;
wtap *wth;
diff --git a/captype.c b/captype.c
index 825f799329..c5dc617ad9 100644
--- a/captype.c
+++ b/captype.c
@@ -78,7 +78,7 @@ failure_message_cont(const char *msg_format, va_list ap)
}
int
-real_main(int argc, char *argv[])
+main(int argc, char *argv[])
{
char *init_progfile_dir_error;
wtap *wth;
diff --git a/cli_main.c b/cli_main.c
index ee5f67e93c..61c8c58ae7 100644
--- a/cli_main.c
+++ b/cli_main.c
@@ -1,7 +1,7 @@
/*
* Compile and link this with all CLI programs where the main routine
- * should get UTF-8 arguments on Windows. In those programs, declare
- * the main program as real_main() rather than main().
+ * should get UTF-8 arguments on Windows. In those programs, include the
+ * cli_main.h header to rename main to real_main on Windows.
*
* This is used in software licensed under the GPLv2, and its license MUST
* be compatible with that license.
@@ -62,12 +62,11 @@ wmain(int argc, wchar_t *wc_argv[])
argv[i] = utf8_string;
}
argv[i] = NULL;
- return real_main(argc, argv);
-}
-#else /* _WIN32 */
-int
-main(int argc, char *argv[])
-{
+ /*
+ * The original "main" routine was renamed to "real_main" via a macro in
+ * the cli_main.h header file since either "main" or "wmain" can be
+ * defined on Windows, but not both.
+ */
return real_main(argc, argv);
}
#endif
diff --git a/cli_main.h b/cli_main.h
index fc947b4ce3..e515485529 100644
--- a/cli_main.h
+++ b/cli_main.h
@@ -1,9 +1,8 @@
/*
* Declaration of the real main routine, for all CLI programs where the
* main routine should get UTF-8 arguments on Windows. In those programs,
- * in the file that defines the main routine, include this header and define
- * the main routine as real_main() rather than main(), and build those
- * programs with cli_main.c and link with the object file.
+ * in the file that defines the main routine, include this header and link
+ * those programs with cli_main.c.
*
* This is used in software licensed under the GPLv2, and its license MUST
* be compatible with that license.
@@ -16,4 +15,7 @@
* SPDX-License-Identifier: MIT
*/
-extern int real_main(int argc, char *argv[]);
+#ifdef _WIN32
+int real_main(int argc, char *argv[]);
+#define main real_main
+#endif
diff --git a/dumpcap.c b/dumpcap.c
index 951328d481..65252580a9 100644
--- a/dumpcap.c
+++ b/dumpcap.c
@@ -4656,7 +4656,7 @@ get_dumpcap_runtime_info(GString *str)
/* And now our feature presentation... [ fade to music ] */
int
-real_main(int argc, char *argv[])
+main(int argc, char *argv[])
{
int opt;
static const struct option long_options[] = {
diff --git a/editcap.c b/editcap.c
index d8ede7b4d7..c0683aa68c 100644
--- a/editcap.c
+++ b/editcap.c
@@ -982,7 +982,7 @@ editcap_dump_open(const char *filename, const wtap_dump_params *params,
}
int
-real_main(int argc, char *argv[])
+main(int argc, char *argv[])
{
char *init_progfile_dir_error;
wtap *wth = NULL;
diff --git a/extcap/androiddump.c b/extcap/androiddump.c
index 56868f2014..b3fd931c2f 100644
--- a/extcap/androiddump.c
+++ b/extcap/androiddump.c
@@ -2480,7 +2480,7 @@ static int capture_android_tcpdump(char *interface, char *fifo,
return EXIT_CODE_SUCCESS;
}
-int real_main(int argc, char **argv) {
+int main(int argc, char *argv[]) {
int ret = EXIT_CODE_GENERIC;
int option_idx = 0;
int result;
diff --git a/extcap/ciscodump.c b/extcap/ciscodump.c
index 798cb7ac50..19a563c335 100644
--- a/extcap/ciscodump.c
+++ b/extcap/ciscodump.c
@@ -515,7 +515,7 @@ static int list_config(char *interface, unsigned int remote_port)
return EXIT_SUCCESS;
}
-int real_main(int argc, char **argv)
+int main(int argc, char *argv[])
{
int result;
int option_idx = 0;
diff --git a/extcap/randpktdump.c b/extcap/randpktdump.c
index 647d291ff9..c31e01ed79 100644
--- a/extcap/randpktdump.c
+++ b/extcap/randpktdump.c
@@ -121,7 +121,7 @@ static int list_config(char *interface)
return EXIT_SUCCESS;
}
-int real_main(int argc, char *argv[])
+int main(int argc, char *argv[])
{
int option_idx = 0;
int result;
diff --git a/extcap/sshdump.c b/extcap/sshdump.c
index 67ee1ee605..eb3636fb8f 100644
--- a/extcap/sshdump.c
+++ b/extcap/sshdump.c
@@ -329,7 +329,7 @@ static char* concat_filters(const char* extcap_filter, const char* remote_filter
return g_strdup_printf("(%s) and (%s)", extcap_filter, remote_filter);
}
-int real_main(int argc, char **argv)
+int main(int argc, char *argv[])
{
int result;
int option_idx = 0;
diff --git a/extcap/udpdump.c b/extcap/udpdump.c
index 444f637200..c1636b7c94 100644
--- a/extcap/udpdump.c
+++ b/extcap/udpdump.c
@@ -356,7 +356,7 @@ static void run_listener(const char* fifo, const guint16 port, const char* proto
g_free(buf);
}
-int real_main(int argc, char *argv[])
+int main(int argc, char *argv[])
{
int option_idx = 0;
int result;
diff --git a/mergecap.c b/mergecap.c
index 4b06014ef1..7a2b6828e8 100644
--- a/mergecap.c
+++ b/mergecap.c
@@ -227,7 +227,7 @@ merge_callback(merge_event event, int num,
}
int
-real_main(int argc, char *argv[])
+main(int argc, char *argv[])
{
char *init_progfile_dir_error;
int opt;
diff --git a/randpkt.c b/randpkt.c
index c70110116f..3046b7de2c 100644
--- a/randpkt.c
+++ b/randpkt.c
@@ -100,7 +100,7 @@ usage(gboolean is_error)
}
int
-real_main(int argc, char **argv)
+main(int argc, char *argv[])
{
char *init_progfile_dir_error;
int opt;
diff --git a/rawshark.c b/rawshark.c
index c23d8020ac..81427ff841 100644
--- a/rawshark.c
+++ b/rawshark.c
@@ -403,7 +403,7 @@ set_link_type(const char *lt_arg) {
}
int
-real_main(int argc, char *argv[])
+main(int argc, char *argv[])
{
char *init_progfile_dir_error;
int opt, i;
diff --git a/reordercap.c b/reordercap.c
index 4507537f16..7f3463d89b 100644
--- a/reordercap.c
+++ b/reordercap.c
@@ -161,7 +161,7 @@ failure_message_cont(const char *msg_format, va_list ap)
/* Main function. */
/********************************************************************/
int
-real_main(int argc, char *argv[])
+main(int argc, char *argv[])
{
char *init_progfile_dir_error;
wtap *wth = NULL;
diff --git a/text2pcap.c b/text2pcap.c
index 1ac2442d31..226d53094f 100644
--- a/text2pcap.c
+++ b/text2pcap.c
@@ -1853,7 +1853,7 @@ parse_options (int argc, char *argv[])
}
int
-real_main(int argc, char *argv[])
+main(int argc, char *argv[])
{
int ret = EXIT_SUCCESS;
diff --git a/tfshark.c b/tfshark.c
index 9ce689ce8b..5269f61ef6 100644
--- a/tfshark.c
+++ b/tfshark.c
@@ -300,7 +300,7 @@ get_tfshark_runtime_version_info(GString *str)
}
int
-real_main(int argc, char *argv[])
+main(int argc, char *argv[])
{
char *init_progfile_dir_error;
int opt;
diff --git a/tshark.c b/tshark.c
index 98b08d0883..d6d935323f 100644
--- a/tshark.c
+++ b/tshark.c
@@ -670,7 +670,7 @@ must_do_dissection(dfilter_t *rfcode, dfilter_t *dfcode,
}
int
-real_main(int argc, char *argv[])
+main(int argc, char *argv[])
{
char *init_progfile_dir_error;
int opt;