diff options
author | Guy Harris <guy@alum.mit.edu> | 2019-05-01 18:46:23 -0700 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2019-05-02 09:29:01 +0000 |
commit | 2ee483a222bc765f8a738dfa15124826d89dc543 (patch) | |
tree | b1011d49978414331d191c2190318cb1d92d634e /tshark.c | |
parent | 7bc066aa0c74f8c595ba01678832f2ac17e279dc (diff) |
Move the Winsock initialization and cleanup to wsutil routines.
Those routines exist on both Windows and UN*X, but they don't do
anything on UN*X (they could if it were ever necessary).
That eliminates some #ifdefs, and also means that the gory details of
initializing Winsock, including the Winsock version being requested,
are buried in one routine.
The initialization routine returns NULL on success and a pointer to a
g_malloc()ated error message on failure; report the error to the user,
along with a "report this to the Wireshark developers" suggestion.
That means including wsutil/socket.h, which obviates the need to include
some headers for socket APIs, as it includes them for you.
Change-Id: I9327bbf25effbb441e4217edc5354a4d5ab07186
Reviewed-on: https://code.wireshark.org/review/33045
Petri-Dish: Guy Harris <guy@alum.mit.edu>
Tested-by: Petri Dish Buildbot
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'tshark.c')
-rw-r--r-- | tshark.c | 28 |
1 files changed, 12 insertions, 16 deletions
@@ -49,8 +49,10 @@ #include <ui/cmdarg_err.h> #include <wsutil/filesystem.h> #include <wsutil/file_util.h> +#include <wsutil/socket.h> #include <wsutil/privileges.h> #include <wsutil/report_message.h> +#include <wsutil/please_report_bug.h> #include <cli_main.h> #include <version_info.h> #include <wiretap/wtap_opttypes.h> @@ -680,7 +682,7 @@ must_do_dissection(dfilter_t *rfcode, dfilter_t *dfcode, int main(int argc, char *argv[]) { - char *init_progfile_dir_error; + char *err_msg; int opt; static const struct option long_options[] = { {"help", no_argument, NULL, 'h'}, @@ -696,11 +698,6 @@ main(int argc, char *argv[]) }; gboolean arg_error = FALSE; -#ifdef _WIN32 - int result; - WSADATA wsaData; -#endif /* _WIN32 */ - int err; volatile process_file_status_t status; volatile gboolean draw_taps = FALSE; @@ -730,7 +727,6 @@ main(int argc, char *argv[]) #endif dfilter_t *rfcode = NULL; dfilter_t *dfcode = NULL; - gchar *err_msg; e_prefs *prefs_p; int log_flags; gchar *output_only = NULL; @@ -786,14 +782,14 @@ main(int argc, char *argv[]) * Attempt to get the pathname of the directory containing the * executable file. */ - init_progfile_dir_error = init_progfile_dir(argv[0]); - if (init_progfile_dir_error != NULL) { + err_msg = init_progfile_dir(argv[0]); + if (err_msg != NULL) { fprintf(stderr, "tshark: Can't get pathname of directory containing the tshark program: %s.\n" "It won't be possible to capture traffic.\n" "Report this to the Wireshark developers.", - init_progfile_dir_error); - g_free(init_progfile_dir_error); + err_msg); + g_free(err_msg); } initialize_funnel_ops(); @@ -1784,15 +1780,15 @@ main(int argc, char *argv[]) } #endif -#ifdef _WIN32 - /* Start windows sockets */ - result = WSAStartup( MAKEWORD( 2, 2 ), &wsaData ); - if (result != 0) + err_msg = ws_init_sockets(); + if (err_msg != NULL) { + cmdarg_err("%s", err_msg); + g_free(err_msg); + cmdarg_err_cont("%s", please_report_bug()); exit_status = INIT_FAILED; goto clean_exit; } -#endif /* _WIN32 */ /* Notify all registered modules that have had any of their preferences changed either from one of the preferences file or from the command |