diff options
author | Guy Harris <gharris@sonic.net> | 2021-03-15 11:29:43 -0700 |
---|---|---|
committer | Guy Harris <gharris@sonic.net> | 2021-03-15 12:17:59 -0700 |
commit | c33e2f7b51f9e14f99f6b6d9018ac41b7e97d5a6 (patch) | |
tree | 4e02fee80e16cfd08afc9d555e4612399c72d69b /mergecap.c | |
parent | 89ae76d3008719f6b797eb201794dfe0de294640 (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.c | 41 |
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: |