aboutsummaryrefslogtreecommitdiffstats
path: root/file.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2017-04-19 14:43:11 -0700
committerGuy Harris <guy@alum.mit.edu>2017-04-19 21:43:47 +0000
commit4362e63dd54d8d35603d81fd2468cfe710b88f3e (patch)
tree8d670fa2ff4042858f08d1330ab54516d351f865 /file.c
parent26cc3f06a7541578ed216ab37e8c07683f2e9b3a (diff)
Have a common "capture file close alert box" routine.
Take the code from cf_read() to pop up an alert box and put it into libui, with the name cfile_read_failure_alert_box(). Use it in a couple of places where we pop up such an error dialog. While we're at it, get rid of the "err" argument to rescan_file(); nobody uses what it returns. Change-Id: Iba7099b95de24309359d94eb96f606020e2ff2c3 Reviewed-on: https://code.wireshark.org/review/21232 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'file.c')
-rw-r--r--file.c105
1 files changed, 10 insertions, 95 deletions
diff --git a/file.c b/file.c
index 7b10412071..7bdc8e80ae 100644
--- a/file.c
+++ b/file.c
@@ -737,41 +737,7 @@ cf_read(capture_file *cf, gboolean reloading)
/* Put up a message box noting that the read failed somewhere along
the line. Don't throw out the stuff we managed to read, though,
if any. */
- switch (err) {
-
- case WTAP_ERR_UNSUPPORTED:
- simple_error_message_box(
- "The capture file contains record data that Wireshark doesn't support.\n(%s)",
- err_info != NULL ? err_info : "no information supplied");
- g_free(err_info);
- break;
-
- case WTAP_ERR_SHORT_READ:
- simple_error_message_box(
- "The capture file appears to have been cut short"
- " in the middle of a packet.");
- break;
-
- case WTAP_ERR_BAD_FILE:
- simple_error_message_box(
- "The capture file appears to be damaged or corrupt.\n(%s)",
- err_info != NULL ? err_info : "no information supplied");
- g_free(err_info);
- break;
-
- case WTAP_ERR_DECOMPRESS:
- simple_error_message_box(
- "The compressed capture file appears to be damaged or corrupt.\n(%s)",
- err_info != NULL ? err_info : "no information supplied");
- g_free(err_info);
- break;
-
- default:
- simple_error_message_box(
- "An error occurred while reading the"
- " capture file: %s.", wtap_strerror(err));
- break;
- }
+ cfile_read_failure_alert_box(NULL, err, err_info);
return CF_READ_ERROR;
} else
return CF_READ_OK;
@@ -1531,7 +1497,6 @@ cf_read_record_r(capture_file *cf, const frame_data *fdata,
{
int err;
gchar *err_info;
- gchar *display_basename;
#ifdef WANT_PACKET_EDITOR
/* if fdata->file_off == -1 it means packet was edited, and we must find data inside edited_frames tree */
@@ -1551,23 +1516,7 @@ cf_read_record_r(capture_file *cf, const frame_data *fdata,
#endif
if (!wtap_seek_read(cf->wth, fdata->file_off, phdr, buf, &err, &err_info)) {
- display_basename = g_filename_display_basename(cf->filename);
- switch (err) {
-
- case WTAP_ERR_BAD_FILE:
- simple_error_message_box("An error occurred while reading from the file \"%s\": %s.\n(%s)",
- display_basename, wtap_strerror(err),
- err_info != NULL ? err_info : "no information supplied");
- g_free(err_info);
- break;
-
- default:
- simple_error_message_box(
- "An error occurred while reading from the file \"%s\": %s.",
- display_basename, wtap_strerror(err));
- break;
- }
- g_free(display_basename);
+ cfile_read_failure_alert_box(cf->filename, err, err_info);
return FALSE;
}
return TRUE;
@@ -4282,9 +4231,10 @@ cf_has_unsaved_data(capture_file *cf)
* Quick scan to find packet offsets.
*/
static cf_read_status_t
-rescan_file(capture_file *cf, const char *fname, gboolean is_tempfile, int *err)
+rescan_file(capture_file *cf, const char *fname, gboolean is_tempfile)
{
const struct wtap_pkthdr *phdr;
+ int err;
gchar *err_info;
gchar *name_ptr;
gint64 data_offset;
@@ -4307,9 +4257,9 @@ rescan_file(capture_file *cf, const char *fname, gboolean is_tempfile, int *err)
format than the original, and the user is not given a choice of which
reader to use (only which format to save it in), so doing this makes
sense for now. */
- cf->wth = wtap_open_offline(fname, WTAP_TYPE_AUTO, err, &err_info, TRUE);
+ cf->wth = wtap_open_offline(fname, WTAP_TYPE_AUTO, &err, &err_info, TRUE);
if (cf->wth == NULL) {
- cfile_open_failure_alert_box(fname, *err, err_info, FALSE, 0);
+ cfile_open_failure_alert_box(fname, err, err_info, FALSE, 0);
return CF_READ_ERROR;
}
@@ -4357,7 +4307,7 @@ rescan_file(capture_file *cf, const char *fname, gboolean is_tempfile, int *err)
framenum = 0;
phdr = wtap_phdr(cf->wth);
- while ((wtap_read(cf->wth, err, &err_info, &data_offset))) {
+ while ((wtap_read(cf->wth, &err, &err_info, &data_offset))) {
framenum++;
fdata = frame_data_sequence_find(cf->frames, framenum);
fdata->file_off = data_offset;
@@ -4433,46 +4383,11 @@ rescan_file(capture_file *cf, const char *fname, gboolean is_tempfile, int *err)
return CF_READ_ABORTED;
}
- if (*err != 0) {
+ if (err != 0) {
/* Put up a message box noting that the read failed somewhere along
the line. Don't throw out the stuff we managed to read, though,
if any. */
- switch (*err) {
-
- case WTAP_ERR_UNSUPPORTED:
- simple_error_message_box(
- "The capture file contains record data that Wireshark doesn't support.\n(%s)",
- err_info != NULL ? err_info : "no information supplied");
- g_free(err_info);
- break;
-
- case WTAP_ERR_SHORT_READ:
- simple_error_message_box(
- "The capture file appears to have been cut short"
- " in the middle of a packet.");
- break;
-
- case WTAP_ERR_BAD_FILE:
- simple_error_message_box(
- "The capture file appears to be damaged or corrupt.\n(%s)",
- err_info != NULL ? err_info : "no information supplied");
- g_free(err_info);
- break;
-
- case WTAP_ERR_DECOMPRESS:
- simple_error_message_box(
- "The compressed capture file appears to be damaged or corrupt.\n"
- "(%s)",
- err_info != NULL ? err_info : "no information supplied");
- g_free(err_info);
- break;
-
- default:
- simple_error_message_box(
- "An error occurred while reading the"
- " capture file: %s.", wtap_strerror(*err));
- break;
- }
+ cfile_read_failure_alert_box(NULL, err, err_info);
return CF_READ_ERROR;
} else
return CF_READ_OK;
@@ -4752,7 +4667,7 @@ cf_save_records(capture_file *cf, const char *fname, guint save_format,
/* rescan_file will cause us to try all open_routines, so
reset cfile's open_type */
cf->open_type = WTAP_TYPE_AUTO;
- if (rescan_file(cf, fname, FALSE, &err) != CF_READ_OK) {
+ if (rescan_file(cf, fname, FALSE) != CF_READ_OK) {
/* The rescan failed; just close the file. Either
a dialog was popped up for the failure, so the
user knows what happened, or they stopped the