X-Git-Url: http://git.samba.org/samba.git/?p=obnox%2Fwireshark%2Fwip.git;a=blobdiff_plain;f=dftest.c;h=5d82b6374b4a90ad0f7f48c7f7f4bf44dc66031d;hp=ba8c0df315127e32187093aec2617a08af3d3ed2;hb=dc5ab1f85d35669f50a48b6df587b8779dac44c0;hpb=3e1c2030ccb8a650d8a7197fe2d77bacf7507e36 diff --git a/dftest.c b/dftest.c index ba8c0df315..5d82b6374b 100644 --- a/dftest.c +++ b/dftest.c @@ -1,13 +1,12 @@ -/* dftest.c.c +/* dftest.c + * Shows display filter byte-code, for debugging dfilter routines. * - * $Id: dftest.c,v 1.7 2004/01/19 03:46:41 ulfl Exp $ + * $Id$ * - * Ethereal - Network traffic analyzer - * By Gerald Combs + * Wireshark - Network traffic analyzer + * By Gerald Combs * Copyright 1998 Gerald Combs * - * Shows display filter byte-code, for debugging dfilter routines. - * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 @@ -21,7 +20,6 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * */ #ifdef HAVE_CONFIG_H @@ -35,47 +33,63 @@ #include #ifdef NEED_STRERROR_H -#include "strerror.h" +#include "wsutil/strerror.h" #endif #include #include -#if 0 -#include "globals.h" -#include -#include "file.h" -#include "column.h" -#include "print.h" -#include -#include -#endif #include #include -#include "prefs.h" +#include +#include +#include #include "util.h" #include "epan/dfilter/dfilter.h" #include "register.h" -packet_info pi; -ts_type timestamp_type = TS_RELATIVE; +static void failure_message(const char *msg_format, va_list ap); +static void open_failure_message(const char *filename, int err, + gboolean for_writing); +static void read_failure_message(const char *filename, int err); +static void write_failure_message(const char *filename, int err); int main(int argc, char **argv) { + char *init_progfile_dir_error; char *text; char *gpf_path, *pf_path; int gpf_open_errno, gpf_read_errno; int pf_open_errno, pf_read_errno; - e_prefs *prefs; + e_prefs *prefs_p; dfilter_t *df; - /* register all dissectors; we must do this before checking for the - "-g" flag, as the "-g" flag dumps a list of fields registered - by the dissectors, and we must do it before we read the preferences, - in case any dissectors register preferences. */ - epan_init(PLUGIN_DIR,register_all_protocols, - register_all_protocol_handoffs); + /* + * Get credential information for later use. + */ + init_process_policies(); + + /* + * Attempt to get the pathname of the executable file. + */ + init_progfile_dir_error = init_progfile_dir(argv[0], main); + if (init_progfile_dir_error != NULL) { + fprintf(stderr, "dftest: Can't get pathname of dftest program: %s.\n", + init_progfile_dir_error); + } + + timestamp_set_type(TS_RELATIVE); + timestamp_set_seconds_type(TS_SECONDS_DEFAULT); + + /* Register all dissectors; we must do this before checking for the + "-g" flag, as the "-g" flag dumps a list of fields registered + by the dissectors, and we must do it before we read the preferences, + in case any dissectors register preferences. */ + epan_init(register_all_protocols, + register_all_protocol_handoffs, NULL, NULL, + failure_message, open_failure_message, read_failure_message, + write_failure_message); /* now register the preferences for any non-dissector modules. we must do that before we read the preferences as well. */ @@ -84,30 +98,30 @@ main(int argc, char **argv) /* set the c-language locale to the native environment. */ setlocale(LC_ALL, ""); - prefs = read_prefs(&gpf_open_errno, &gpf_read_errno, &gpf_path, - &pf_open_errno, &pf_read_errno, &pf_path); + prefs_p = read_prefs(&gpf_open_errno, &gpf_read_errno, &gpf_path, + &pf_open_errno, &pf_read_errno, &pf_path); if (gpf_path != NULL) { if (gpf_open_errno != 0) { fprintf(stderr, - "can't open global preferences file \"%s\": %s.\n", - pf_path, strerror(gpf_open_errno)); + "can't open global preferences file \"%s\": %s.\n", + pf_path, strerror(gpf_open_errno)); } if (gpf_read_errno != 0) { fprintf(stderr, - "I/O error reading global preferences file \"%s\": %s.\n", - pf_path, strerror(gpf_read_errno)); + "I/O error reading global preferences file \"%s\": %s.\n", + pf_path, strerror(gpf_read_errno)); } } if (pf_path != NULL) { if (pf_open_errno != 0) { fprintf(stderr, - "can't open your preferences file \"%s\": %s.\n", - pf_path, strerror(pf_open_errno)); + "can't open your preferences file \"%s\": %s.\n", + pf_path, strerror(pf_open_errno)); } if (pf_read_errno != 0) { fprintf(stderr, - "I/O error reading your preferences file \"%s\": %s.\n", - pf_path, strerror(pf_read_errno)); + "I/O error reading your preferences file \"%s\": %s.\n", + pf_path, strerror(pf_read_errno)); } } @@ -118,7 +132,7 @@ main(int argc, char **argv) /* Check for filter on command line */ if (argc <= 1) { - fprintf(stderr, "Usage: dftest filter\n"); + fprintf(stderr, "Usage: dftest \n"); exit(1); } @@ -133,12 +147,58 @@ main(int argc, char **argv) epan_cleanup(); exit(2); } - printf("dfilter ptr = 0x%08x\n", (unsigned int) df); + printf("dfilter ptr = 0x%08x\n", GPOINTER_TO_INT(df)); printf("\n\n"); - dfilter_dump(df); + if (df == NULL) + printf("Filter is empty\n"); + else + dfilter_dump(df); + dfilter_free(df); epan_cleanup(); exit(0); } + +/* + * General errors are reported with an console message in "dftest". + */ +static void +failure_message(const char *msg_format, va_list ap) +{ + fprintf(stderr, "dftest: "); + vfprintf(stderr, msg_format, ap); + fprintf(stderr, "\n"); +} + +/* + * Open/create errors are reported with an console message in "dftest". + */ +static void +open_failure_message(const char *filename, int err, gboolean for_writing) +{ + fprintf(stderr, "dftest: "); + fprintf(stderr, file_open_error_message(err, for_writing), filename); + fprintf(stderr, "\n"); +} + +/* + * Read errors are reported with an console message in "dftest". + */ +static void +read_failure_message(const char *filename, int err) +{ + fprintf(stderr, "dftest: An error occurred while reading from the file \"%s\": %s.\n", + filename, strerror(err)); +} + +/* + * Write errors are reported with an console message in "dftest". + */ +static void +write_failure_message(const char *filename, int err) +{ + fprintf(stderr, "dftest: An error occurred while writing to the file \"%s\": %s.\n", + filename, strerror(err)); +}