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>
36 #include "epan/register.h"
38 static void failure_warning_message(const char *msg_format, va_list ap);
39 static void open_failure_message(const char *filename, int err,
40 gboolean for_writing);
41 static void read_failure_message(const char *filename, int err);
42 static void write_failure_message(const char *filename, int err);
45 main(int argc, char **argv)
47 char *init_progfile_dir_error;
53 * Get credential information for later use.
55 init_process_policies();
58 * Attempt to get the pathname of the directory containing the
61 init_progfile_dir_error = init_progfile_dir(argv[0], main);
62 if (init_progfile_dir_error != NULL) {
63 fprintf(stderr, "dftest: Can't get pathname of directory containing the dftest program: %s.\n",
64 init_progfile_dir_error);
65 g_free(init_progfile_dir_error);
68 init_report_message(failure_warning_message, failure_warning_message,
69 open_failure_message, read_failure_message,
70 write_failure_message);
72 timestamp_set_type(TS_RELATIVE);
73 timestamp_set_seconds_type(TS_SECONDS_DEFAULT);
77 /* Register all dissectors; we must do this before checking for the
78 "-g" flag, as the "-g" flag dumps a list of fields registered
79 by the dissectors, and we must do it before we read the preferences,
80 in case any dissectors register preferences. */
81 if (!epan_init(register_all_protocols, register_all_protocol_handoffs,
85 /* set the c-language locale to the native environment. */
86 setlocale(LC_ALL, "");
88 /* Load libwireshark settings from the current profile. */
91 /* notify all registered modules that have had any of their preferences
92 changed either from one of the preferences file or from the command
93 line that its preferences have changed. */
96 /* Check for filter on command line */
98 fprintf(stderr, "Usage: dftest <filter>\n");
102 /* Get filter text */
103 text = get_args_as_string(argc, argv, 1);
105 printf("Filter: \"%s\"\n", text);
108 if (!dfilter_compile(text, &df, &err_msg)) {
109 fprintf(stderr, "dftest: %s\n", err_msg);
118 printf("Filter is empty\n");
128 * General errors and warnings are reported with an console message
132 failure_warning_message(const char *msg_format, va_list ap)
134 fprintf(stderr, "dftest: ");
135 vfprintf(stderr, msg_format, ap);
136 fprintf(stderr, "\n");
140 * Open/create errors are reported with an console message in "dftest".
143 open_failure_message(const char *filename, int err, gboolean for_writing)
145 fprintf(stderr, "dftest: ");
146 fprintf(stderr, file_open_error_message(err, for_writing), filename);
147 fprintf(stderr, "\n");
151 * Read errors are reported with an console message in "dftest".
154 read_failure_message(const char *filename, int err)
156 fprintf(stderr, "dftest: An error occurred while reading from the file \"%s\": %s.\n",
157 filename, g_strerror(err));
161 * Write errors are reported with an console message in "dftest".
164 write_failure_message(const char *filename, int err)
166 fprintf(stderr, "dftest: An error occurred while writing to the file \"%s\": %s.\n",
167 filename, g_strerror(err));
171 * Editor modelines - http://www.wireshark.org/tools/modelines.html
176 * indent-tabs-mode: t
179 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
180 * :indentSize=8:tabSize=8:noTabs=false: