aboutsummaryrefslogtreecommitdiffstats
path: root/file.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2002-05-23 10:27:12 +0000
committerGuy Harris <guy@alum.mit.edu>2002-05-23 10:27:12 +0000
commita6a5ff53ea2a38615ab531ac402434e5353cd885 (patch)
treec2900555706f1fd7defb15d581d89863603ff0cc /file.c
parentc01a2aa70bf7cd491a72d0d400c7b245540df2d8 (diff)
downloadwireshark-a6a5ff53ea2a38615ab531ac402434e5353cd885.tar.gz
wireshark-a6a5ff53ea2a38615ab531ac402434e5353cd885.tar.bz2
wireshark-a6a5ff53ea2a38615ab531ac402434e5353cd885.zip
Clean up the file saving code a bit.
svn path=/trunk/; revision=5531
Diffstat (limited to 'file.c')
-rw-r--r--file.c110
1 files changed, 51 insertions, 59 deletions
diff --git a/file.c b/file.c
index b9e96d822b..914e851ff0 100644
--- a/file.c
+++ b/file.c
@@ -1,7 +1,7 @@
/* file.c
* File I/O routines
*
- * $Id: file.c,v 1.274 2002/05/23 07:46:58 guy Exp $
+ * $Id: file.c,v 1.275 2002/05/23 10:27:12 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -1724,7 +1724,6 @@ gboolean
save_cap_file(char *fname, capture_file *cf, gboolean save_filtered,
gboolean save_marked, guint save_format)
{
- gboolean ret = TRUE;
gchar *from_filename;
gchar *name_ptr, *save_msg, *save_fmt = " Saving: %s...";
size_t msg_len;
@@ -1772,8 +1771,7 @@ save_cap_file(char *fname, capture_file *cf, gboolean save_filtered,
is it worth requiring the user to go off and fix it?) */
simple_dialog(ESD_TYPE_CRIT, NULL,
file_rename_error_message(errno), fname);
- ret = FALSE;
- goto done;
+ goto fail;
}
}
#else
@@ -1793,15 +1791,12 @@ save_cap_file(char *fname, capture_file *cf, gboolean save_filtered,
simple_dialog(ESD_TYPE_CRIT, NULL,
"Can't save over current capture file: %s!",
from_filename);
- ret = FALSE;
- goto done;
+ goto fail;
}
/* Copy the file, if we haven't moved it. */
- if (!copy_binary_file(from_filename, fname)) {
- ret = FALSE;
- goto done;
- }
+ if (!copy_binary_file(from_filename, fname))
+ goto fail;
}
} else {
/* Either we're filtering packets, or we're saving in a different
@@ -1811,8 +1806,7 @@ save_cap_file(char *fname, capture_file *cf, gboolean save_filtered,
if (pdh == NULL) {
simple_dialog(ESD_TYPE_CRIT, NULL,
file_open_error_message(err, TRUE), fname);
- ret = FALSE;
- goto done;
+ goto fail;
}
/* XXX - have a way to save only the packets currently selected by
@@ -1841,19 +1835,17 @@ save_cap_file(char *fname, capture_file *cf, gboolean save_filtered,
hdr.pkt_encap = fdata->lnk_t;
if (!wtap_seek_read(cf->wth, fdata->file_off, &pseudo_header,
pd, fdata->cap_len, &err)) {
- simple_dialog(ESD_TYPE_CRIT, NULL,
+ simple_dialog(ESD_TYPE_CRIT, NULL,
file_read_error_message(err), cf->filename);
- wtap_dump_close(pdh, &err);
- ret = FALSE;
- goto done;
+ wtap_dump_close(pdh, &err);
+ goto fail;
}
if (!wtap_dump(pdh, &hdr, &pseudo_header, pd, &err)) {
- simple_dialog(ESD_TYPE_CRIT, NULL,
+ simple_dialog(ESD_TYPE_CRIT, NULL,
file_write_error_message(err), fname);
- wtap_dump_close(pdh, &err);
- ret = FALSE;
- goto done;
+ wtap_dump_close(pdh, &err);
+ goto fail;
}
}
}
@@ -1861,53 +1853,53 @@ save_cap_file(char *fname, capture_file *cf, gboolean save_filtered,
if (!wtap_dump_close(pdh, &err)) {
simple_dialog(ESD_TYPE_WARN, NULL,
file_close_error_message(err), fname);
- ret = FALSE;
- goto done;
+ goto fail;
}
}
-done:
-
/* Pop the "Saving:" message off the status bar. */
statusbar_pop_file_msg();
- if (ret) {
- if (!save_filtered && !save_marked) {
- /* We saved the entire capture, not just some packets from it.
- Open and read the file we saved it to.
-
- XXX - this is somewhat of a waste; we already have the
- packets, all this gets us is updated file type information
- (which we could just stuff into "cf"), and having the new
- file be the one we have opened and from which we're reading
- the data, and it means we have to spend time opening and
- reading the file, which could be a significant amount of
- time if the file is large. */
- cf->user_saved = TRUE;
-
- if ((err = open_cap_file(fname, FALSE, cf)) == 0) {
- /* XXX - report errors if this fails? */
- switch (read_cap_file(cf, &err)) {
-
- case READ_SUCCESS:
- case READ_ERROR:
- /* Just because we got an error, that doesn't mean we were unable
- to read any of the file; we handle what we could get from the
- file. */
- break;
-
- case READ_ABORTED:
- /* The user bailed out of re-reading the capture file; the
- capture file has been closed - just return (without
- changing any menu settings; "close_cap_file()" set them
- correctly for the "no capture file open" state). */
- return 0;
- }
- set_menus_for_unsaved_capture_file(FALSE);
- ret = FALSE; /* XXX - save succeeded, but re-read failed */
+ if (!save_filtered && !save_marked) {
+ /* We saved the entire capture, not just some packets from it.
+ Open and read the file we saved it to.
+
+ XXX - this is somewhat of a waste; we already have the
+ packets, all this gets us is updated file type information
+ (which we could just stuff into "cf"), and having the new
+ file be the one we have opened and from which we're reading
+ the data, and it means we have to spend time opening and
+ reading the file, which could be a significant amount of
+ time if the file is large. */
+ cf->user_saved = TRUE;
+
+ if ((err = open_cap_file(fname, FALSE, cf)) == 0) {
+ /* XXX - report errors if this fails?
+ What should we return if it fails or is aborted? */
+ switch (read_cap_file(cf, &err)) {
+
+ case READ_SUCCESS:
+ case READ_ERROR:
+ /* Just because we got an error, that doesn't mean we were unable
+ to read any of the file; we handle what we could get from the
+ file. */
+ break;
+
+ case READ_ABORTED:
+ /* The user bailed out of re-reading the capture file; the
+ capture file has been closed - just return (without
+ changing any menu settings; "close_cap_file()" set them
+ correctly for the "no capture file open" state). */
+ break;
}
+ set_menus_for_unsaved_capture_file(FALSE);
}
}
- return ret;
+ return TRUE;
+
+fail:
+ /* Pop the "Saving:" message off the status bar. */
+ statusbar_pop_file_msg();
+ return FALSE;
}
char *