2 * Shows display filter byte-code, for debugging dfilter routines.
4 * Wireshark - Network traffic analyzer
5 * By Gerald Combs <gerald@wireshark.org>
6 * Copyright 1998 Gerald Combs
8 * SPDX-License-Identifier: GPL-2.0-or-later
21 #include <epan/epan.h>
22 #include <epan/timestamp.h>
23 #include <epan/prefs.h>
24 #include <epan/dfilter/dfilter.h>
27 #include <wsutil/plugins.h>
29 #include <wsutil/filesystem.h>
30 #include <wsutil/privileges.h>
31 #include <wsutil/report_message.h>
33 #include <wiretap/wtap.h>
37 static void failure_warning_message(const char *msg_format, va_list ap);
38 static void open_failure_message(const char *filename, int err,
39 gboolean for_writing);
40 static void read_failure_message(const char *filename, int err);
41 static void write_failure_message(const char *filename, int err);
44 main(int argc, char **argv)
46 char *init_progfile_dir_error;
52 * Get credential information for later use.
54 init_process_policies();
57 * Attempt to get the pathname of the directory containing the
60 init_progfile_dir_error = init_progfile_dir(argv[0]);
61 if (init_progfile_dir_error != NULL) {
62 fprintf(stderr, "dftest: Can't get pathname of directory containing the dftest program: %s.\n",
63 init_progfile_dir_error);
64 g_free(init_progfile_dir_error);
67 init_report_message(failure_warning_message, failure_warning_message,
68 open_failure_message, read_failure_message,
69 write_failure_message);
71 timestamp_set_type(TS_RELATIVE);
72 timestamp_set_seconds_type(TS_SECONDS_DEFAULT);
76 /* Register all dissectors; we must do this before checking for the
77 "-g" flag, as the "-g" flag dumps a list of fields registered
78 by the dissectors, and we must do it before we read the preferences,
79 in case any dissectors register preferences. */
80 if (!epan_init(NULL, NULL, FALSE))
83 /* set the c-language locale to the native environment. */
84 setlocale(LC_ALL, "");
86 /* Load libwireshark settings from the current profile. */
89 /* notify all registered modules that have had any of their preferences
90 changed either from one of the preferences file or from the command
91 line that its preferences have changed. */
94 /* Check for filter on command line */
96 fprintf(stderr, "Usage: dftest <filter>\n");
100 /* Get filter text */
101 text = get_args_as_string(argc, argv, 1);
103 printf("Filter: \"%s\"\n", text);
106 if (!dfilter_compile(text, &df, &err_msg)) {
107 fprintf(stderr, "dftest: %s\n", err_msg);
116 printf("Filter is empty\n");
126 * General errors and warnings are reported with an console message
130 failure_warning_message(const char *msg_format, va_list ap)
132 fprintf(stderr, "dftest: ");
133 vfprintf(stderr, msg_format, ap);
134 fprintf(stderr, "\n");
138 * Open/create errors are reported with an console message in "dftest".
141 open_failure_message(const char *filename, int err, gboolean for_writing)
143 fprintf(stderr, "dftest: ");
144 fprintf(stderr, file_open_error_message(err, for_writing), filename);
145 fprintf(stderr, "\n");
149 * Read errors are reported with an console message in "dftest".
152 read_failure_message(const char *filename, int err)
154 fprintf(stderr, "dftest: An error occurred while reading from the file \"%s\": %s.\n",
155 filename, g_strerror(err));
159 * Write errors are reported with an console message in "dftest".
162 write_failure_message(const char *filename, int err)
164 fprintf(stderr, "dftest: An error occurred while writing to the file \"%s\": %s.\n",
165 filename, g_strerror(err));
169 * Editor modelines - http://www.wireshark.org/tools/modelines.html
174 * indent-tabs-mode: t
177 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
178 * :indentSize=8:tabSize=8:noTabs=false: