aboutsummaryrefslogtreecommitdiffstats
path: root/extcap
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2018-10-09 08:44:54 -0700
committerAnders Broman <a.broman58@gmail.com>2018-10-12 19:01:49 +0000
commitaba59e5973af5e8b2e0705bba3c8f2d47791261b (patch)
tree78f7620a15e3ffd76829cd0de76e925e34b0e15e /extcap
parent0efb1c6f6bf8d9f116dc5fb56eb0f9866bc575fc (diff)
Win32: Make extcap utilities console applications.
Switch from using WinMain in extcap to wmain. Change-Id: I54fafad598f5ff74fe84a3ce3e993ac5a31188f7 Reviewed-on: https://code.wireshark.org/review/30094 Reviewed-by: Gerald Combs <gerald@wireshark.org> Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'extcap')
-rw-r--r--extcap/.editorconfig2
-rw-r--r--extcap/CMakeLists.txt14
-rw-r--r--extcap/androiddump.c22
-rw-r--r--extcap/ciscodump.c22
-rw-r--r--extcap/extcap-base.c47
-rw-r--r--extcap/extcap-base.h6
-rw-r--r--extcap/randpktdump.c24
-rw-r--r--extcap/sshdump.c22
-rw-r--r--extcap/udpdump.c21
9 files changed, 74 insertions, 106 deletions
diff --git a/extcap/.editorconfig b/extcap/.editorconfig
index fa8c8081f8..fdb4526bce 100644
--- a/extcap/.editorconfig
+++ b/extcap/.editorconfig
@@ -4,6 +4,6 @@
# http://editorconfig.org/
#
-[{extcap-base,randpktdump,ssh-base,sshdump}.[ch]]
+[{ciscodump,extcap-base,randpktdump,ssh-base,sshdump,udpdump}.[ch]]
indent_style = tab
indent_size = tab
diff --git a/extcap/CMakeLists.txt b/extcap/CMakeLists.txt
index de90d1d6d5..3035b53206 100644
--- a/extcap/CMakeLists.txt
+++ b/extcap/CMakeLists.txt
@@ -96,7 +96,7 @@ if(BUILD_androiddump)
)
set_executable_resources(androiddump "Androiddump")
- add_executable(androiddump WIN32 ${androiddump_FILES})
+ add_executable(androiddump ${androiddump_FILES})
# XXX Shouldn't we add wsutil to androiddump_LIBS instead?
set_extcap_executable_properties(androiddump)
target_link_libraries(androiddump ${androiddump_LIBS})
@@ -118,7 +118,7 @@ if(BUILD_sshdump AND LIBSSH_FOUND)
)
set_executable_resources(sshdump "Sshdump")
- add_executable(sshdump WIN32 ${sshdump_FILES})
+ add_executable(sshdump ${sshdump_FILES})
set_extcap_executable_properties(sshdump)
target_link_libraries(sshdump ${sshdump_LIBS})
target_include_directories(sshdump PUBLIC ${LIBSSH_INCLUDE_DIR})
@@ -143,7 +143,7 @@ if(BUILD_ciscodump AND LIBSSH_FOUND)
)
set_executable_resources(ciscodump "Ciscodump")
- add_executable(ciscodump WIN32 ${ciscodump_FILES})
+ add_executable(ciscodump ${ciscodump_FILES})
set_extcap_executable_properties(ciscodump)
target_link_libraries(ciscodump ${ciscodump_LIBS})
target_include_directories(ciscodump PUBLIC ${LIBSSH_INCLUDE_DIR})
@@ -167,7 +167,7 @@ if(BUILD_dpauxmon AND HAVE_LIBNL3)
)
set_executable_resources(dpauxmon "dpauxmon")
- add_executable(dpauxmon WIN32 ${dpauxmon_FILES})
+ add_executable(dpauxmon ${dpauxmon_FILES})
set_extcap_executable_properties(dpauxmon)
target_link_libraries(dpauxmon ${dpauxmon_LIBS})
target_include_directories(dpauxmon PUBLIC ${NL_INCLUDE_DIR})
@@ -190,7 +190,7 @@ if(BUILD_udpdump)
)
set_executable_resources(udpdump "udpdump")
- add_executable(udpdump WIN32 ${udpdump_FILES})
+ add_executable(udpdump ${udpdump_FILES})
set_extcap_executable_properties(udpdump)
target_link_libraries(udpdump ${udpdump_LIBS})
install(TARGETS udpdump RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
@@ -212,7 +212,7 @@ if(BUILD_randpktdump)
)
set_executable_resources(randpktdump "randpktdump")
- add_executable(randpktdump WIN32 ${randpktdump_FILES})
+ add_executable(randpktdump ${randpktdump_FILES})
# XXX Shouldn't we add wsutil to randpktdump_LIBS instead?
set_extcap_executable_properties(randpktdump)
target_link_libraries(randpktdump ${randpktdump_LIBS})
@@ -237,7 +237,7 @@ if(BUILD_sdjournal AND SYSTEMD_FOUND)
)
set_executable_resources(sdjournal "sdjournal")
- add_executable(sdjournal WIN32 ${sdjournal_FILES})
+ add_executable(sdjournal ${sdjournal_FILES})
set_extcap_executable_properties(sdjournal)
target_link_libraries(sdjournal ${sdjournal_LIBS})
install(TARGETS sdjournal RUNTIME DESTINATION ${EXTCAP_INSTALL_LIBDIR})
diff --git a/extcap/androiddump.c b/extcap/androiddump.c
index b1d5bbd6e2..858968911a 100644
--- a/extcap/androiddump.c
+++ b/extcap/androiddump.c
@@ -2485,7 +2485,7 @@ static int capture_android_tcpdump(char *interface, char *fifo,
return EXIT_CODE_SUCCESS;
}
-int main(int argc, char **argv) {
+int real_main(int argc, char **argv) {
int ret = EXIT_CODE_GENERIC;
int option_idx = 0;
int result;
@@ -2512,8 +2512,6 @@ int main(int argc, char **argv) {
#ifdef _WIN32
WSADATA wsaData;
-
- attach_parent_console();
#endif /* _WIN32 */
cmdarg_err_init(failure_warning_message, failure_warning_message);
@@ -2753,13 +2751,19 @@ end:
}
#ifdef _WIN32
-int _stdcall
-WinMain (struct HINSTANCE__ *hInstance,
- struct HINSTANCE__ *hPrevInstance,
- char *lpszCmdLine,
- int nCmdShow)
+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 main(__argc, __argv);
+ return real_main(argc, argv);
}
#endif
diff --git a/extcap/ciscodump.c b/extcap/ciscodump.c
index 9f2eed5b8f..5ec4fbe74f 100644
--- a/extcap/ciscodump.c
+++ b/extcap/ciscodump.c
@@ -510,7 +510,7 @@ static int list_config(char *interface, unsigned int remote_port)
return EXIT_SUCCESS;
}
-int main(int argc, char **argv)
+int real_main(int argc, char **argv)
{
int result;
int option_idx = 0;
@@ -530,8 +530,6 @@ int main(int argc, char **argv)
#ifdef _WIN32
WSADATA wsaData;
-
- attach_parent_console();
#endif /* _WIN32 */
help_url = data_file_url("ciscodump.html");
@@ -710,13 +708,19 @@ end:
}
#ifdef _WIN32
-int _stdcall
-WinMain (struct HINSTANCE__ *hInstance,
- struct HINSTANCE__ *hPrevInstance,
- char *lpszCmdLine,
- int nCmdShow)
+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 main(__argc, __argv);
+ return real_main(argc, argv);
}
#endif
diff --git a/extcap/extcap-base.c b/extcap/extcap-base.c
index 7d47aa41e5..bf34d39326 100644
--- a/extcap/extcap-base.c
+++ b/extcap/extcap-base.c
@@ -49,53 +49,6 @@ typedef struct _extcap_option {
FILE* custom_log = NULL;
-#ifdef _WIN32
-BOOLEAN IsHandleRedirected(DWORD handle)
-{
- HANDLE h = GetStdHandle(handle);
- if (h) {
- BY_HANDLE_FILE_INFORMATION fi;
- if (GetFileInformationByHandle(h, &fi)) {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-void attach_parent_console()
-{
- BOOL outRedirected, errRedirected;
-
- outRedirected = IsHandleRedirected(STD_OUTPUT_HANDLE);
- errRedirected = IsHandleRedirected(STD_ERROR_HANDLE);
-
- if (outRedirected && errRedirected) {
- /* Both standard output and error handles are redirected.
- * There is no point in attaching to parent process console.
- */
- return;
- }
-
- if (AttachConsole(ATTACH_PARENT_PROCESS) == 0) {
- /* Console attach failed. */
- return;
- }
-
- /* Console attach succeeded */
- if (outRedirected == FALSE) {
- if (!freopen("CONOUT$", "w", stdout)) {
- g_warning("Cannot redirect to stdout.");
- }
- }
-
- if (errRedirected == FALSE) {
- if (!freopen("CONOUT$", "w", stderr)) {
- g_warning("Cannot redirect to strerr.");
- }
- }
-}
-#endif
-
void extcap_base_register_interface(extcap_parameters * extcap, const char * interface, const char * ifdescription, uint16_t dlt, const char * dltdescription )
{
extcap_base_register_interface_ext(extcap, interface, ifdescription, dlt, NULL, dltdescription );
diff --git a/extcap/extcap-base.h b/extcap/extcap-base.h
index 9413bf931f..322d08a9ab 100644
--- a/extcap/extcap-base.h
+++ b/extcap/extcap-base.h
@@ -29,6 +29,7 @@
#ifdef _WIN32
#include <io.h>
+ #include <wsutil/unicode-utils.h> // arg_list_utf_16to8
#endif
#include <wsutil/socket.h>
@@ -58,11 +59,6 @@
{ "debug", required_argument, NULL, EXTCAP_OPT_DEBUG}, \
{ "debug-file", required_argument, NULL, EXTCAP_OPT_DEBUG_FILE}
-#if defined(_WIN32)
- BOOLEAN IsHandleRedirected(DWORD handle);
- void attach_parent_console();
-#endif
-
typedef struct _extcap_parameters
{
char * exename;
diff --git a/extcap/randpktdump.c b/extcap/randpktdump.c
index 4fa76e3526..f7639dcb57 100644
--- a/extcap/randpktdump.c
+++ b/extcap/randpktdump.c
@@ -119,7 +119,7 @@ static int list_config(char *interface)
return EXIT_SUCCESS;
}
-int main(int argc, char *argv[])
+int real_main(int argc, char *argv[])
{
int option_idx = 0;
int result;
@@ -172,10 +172,6 @@ int main(int argc, char *argv[])
goto end;
}
-#ifdef _WIN32
- attach_parent_console();
-#endif /* _WIN32 */
-
while ((result = getopt_long(argc, argv, ":", longopts, &option_idx)) != -1) {
switch (result) {
case OPT_VERSION:
@@ -323,13 +319,19 @@ end:
}
#ifdef _WIN32
-int _stdcall
-WinMain (struct HINSTANCE__ *hInstance,
- struct HINSTANCE__ *hPrevInstance,
- char *lpszCmdLine,
- int nCmdShow)
+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 main(__argc, __argv);
+ return real_main(argc, argv);
}
#endif
diff --git a/extcap/sshdump.c b/extcap/sshdump.c
index 6a09057a53..3a3e710e58 100644
--- a/extcap/sshdump.c
+++ b/extcap/sshdump.c
@@ -324,7 +324,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 main(int argc, char **argv)
+int real_main(int argc, char **argv)
{
int result;
int option_idx = 0;
@@ -347,8 +347,6 @@ int main(int argc, char **argv)
#ifdef _WIN32
WSADATA wsaData;
-
- attach_parent_console();
#endif /* _WIN32 */
help_url = data_file_url("sshdump.html");
@@ -534,13 +532,19 @@ end:
}
#ifdef _WIN32
-int _stdcall
-WinMain (struct HINSTANCE__ *hInstance,
- struct HINSTANCE__ *hPrevInstance,
- char *lpszCmdLine,
- int nCmdShow)
+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 main(__argc, __argv);
+ return real_main(argc, argv);
}
#endif
diff --git a/extcap/udpdump.c b/extcap/udpdump.c
index 121b3c4816..ac74f2421b 100644
--- a/extcap/udpdump.c
+++ b/extcap/udpdump.c
@@ -354,7 +354,7 @@ static void run_listener(const char* fifo, const guint16 port, const char* proto
g_free(buf);
}
-int main(int argc, char *argv[])
+int real_main(int argc, char *argv[])
{
int option_idx = 0;
int result;
@@ -367,7 +367,6 @@ int main(int argc, char *argv[])
char* port_msg = NULL;
#ifdef _WIN32
WSADATA wsaData;
- attach_parent_console();
#endif /* _WIN32 */
help_url = data_file_url("udpdump.html");
@@ -477,13 +476,19 @@ end:
}
#ifdef _WIN32
-int _stdcall
-WinMain (struct HINSTANCE__ *hInstance,
- struct HINSTANCE__ *hPrevInstance,
- char *lpszCmdLine,
- int nCmdShow)
+int
+wmain(int argc, wchar_t *wc_argv[])
{
- return main(__argc, __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