aboutsummaryrefslogtreecommitdiffstats
path: root/tshark.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2019-05-01 18:46:23 -0700
committerGuy Harris <guy@alum.mit.edu>2019-05-02 09:29:01 +0000
commit2ee483a222bc765f8a738dfa15124826d89dc543 (patch)
treeb1011d49978414331d191c2190318cb1d92d634e /tshark.c
parent7bc066aa0c74f8c595ba01678832f2ac17e279dc (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.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/tshark.c b/tshark.c
index a7834a8d7f..bbfc343cd7 100644
--- a/tshark.c
+++ b/tshark.c
@@ -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