aboutsummaryrefslogtreecommitdiffstats
path: root/mergecap.c
diff options
context:
space:
mode:
authorGuy Harris <gharris@sonic.net>2021-03-15 11:29:43 -0700
committerGuy Harris <gharris@sonic.net>2021-03-15 12:17:59 -0700
commitc33e2f7b51f9e14f99f6b6d9018ac41b7e97d5a6 (patch)
tree4e02fee80e16cfd08afc9d555e4612399c72d69b /mergecap.c
parent89ae76d3008719f6b797eb201794dfe0de294640 (diff)
Add more error-reporting routines that call through a function pointer.
Have routines to report capture-file errors, using libwireshark error codes and strings, that call through a pointer, so they can pop up dialogs in GUI apps, print a message to the standard error on command-line apps, and possibly do something different on server programs. Have init_report_message() take a pointer to structure containing those function pointers, rather than the function pointers themselves, as arguments. Make other API changes to make that work.
Diffstat (limited to 'mergecap.c')
-rw-r--r--mergecap.c41
1 files changed, 18 insertions, 23 deletions
diff --git a/mergecap.c b/mergecap.c
index 085bc1f021..fc21531d5a 100644
--- a/mergecap.c
+++ b/mergecap.c
@@ -101,18 +101,6 @@ mergecap_cmdarg_err_cont(const char *fmt, va_list ap)
fprintf(stderr, "\n");
}
-/*
- * General errors and warnings are reported with an console message
- * in mergecap.
- */
-static void
-failure_warning_message(const char *msg_format, va_list ap)
-{
- fprintf(stderr, "mergecap: ");
- vfprintf(stderr, msg_format, ap);
- fprintf(stderr, "\n");
-}
-
static void
list_capture_types(void) {
GArray *writable_type_subtypes;
@@ -206,6 +194,18 @@ int
main(int argc, char *argv[])
{
char *init_progfile_dir_error;
+ static const struct report_message_routines mergecap_report_routines = {
+ failure_message,
+ failure_message,
+ open_failure_message,
+ read_failure_message,
+ write_failure_message,
+ cfile_open_failure_message,
+ cfile_dump_open_failure_message,
+ cfile_read_failure_message,
+ cfile_write_failure_message,
+ cfile_close_failure_message
+ };
int opt;
static const struct option long_options[] = {
{"help", no_argument, NULL, 'h'},
@@ -252,8 +252,7 @@ main(int argc, char *argv[])
g_free(init_progfile_dir_error);
}
- init_report_message(failure_warning_message, failure_warning_message,
- NULL, NULL, NULL);
+ init_report_message("mergecap", &mergecap_report_routines);
wtap_init(TRUE);
@@ -393,18 +392,15 @@ main(int argc, char *argv[])
break;
case MERGE_ERR_CANT_OPEN_INFILE:
- cfile_open_failure_message("mergecap", argv[optind + err_fileno],
- err, err_info);
+ cfile_open_failure_message(argv[optind + err_fileno], err, err_info);
break;
case MERGE_ERR_CANT_OPEN_OUTFILE:
- cfile_dump_open_failure_message("mergecap", out_filename, err, err_info,
- file_type);
+ cfile_dump_open_failure_message(out_filename, err, err_info, file_type);
break;
case MERGE_ERR_CANT_READ_INFILE:
- cfile_read_failure_message("mergecap", argv[optind + err_fileno],
- err, err_info);
+ cfile_read_failure_message(argv[optind + err_fileno], err, err_info);
break;
case MERGE_ERR_BAD_PHDR_INTERFACE_ID:
@@ -413,9 +409,8 @@ main(int argc, char *argv[])
break;
case MERGE_ERR_CANT_WRITE_OUTFILE:
- cfile_write_failure_message("mergecap", argv[optind + err_fileno],
- out_filename, err, err_info, err_framenum,
- file_type);
+ cfile_write_failure_message(argv[optind + err_fileno], out_filename,
+ err, err_info, err_framenum, file_type);
break;
case MERGE_ERR_CANT_CLOSE_OUTFILE: