aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaap Keuter <jaap.keuter@xs4all.nl>2009-12-14 22:05:29 +0000
committerJaap Keuter <jaap.keuter@xs4all.nl>2009-12-14 22:05:29 +0000
commit81b585cf8e24b954fed8077d53a2970c3e761724 (patch)
tree9454b3ef349ecdf735dc9c0008964bc6c30a171a
parent6d11b171d64f005f7c29d271d983a8e35fa43c86 (diff)
From Valerio Messina:
As now, when Wireshark save capture files, it show "Loading" in status bar and in the dialog box, warning many users of lost them packets. Saving work as expected. Is simply a GUI use interaction problem. svn path=/trunk/; revision=31269
-rw-r--r--capture.c2
-rw-r--r--file.c37
-rw-r--r--file.h13
-rw-r--r--gtk/capture_file_dlg.c4
-rw-r--r--gtk/drag_and_drop.c4
-rw-r--r--gtk/file_dlg_win32.c4
-rw-r--r--gtk/fileset_dlg.c2
-rw-r--r--gtk/funnel_stat.c2
-rw-r--r--gtk/main.c30
-rw-r--r--gtk/main_statusbar.c27
-rw-r--r--gtk/menus.c4
11 files changed, 70 insertions, 59 deletions
diff --git a/capture.c b/capture.c
index d6461eec7d..c2352867f6 100644
--- a/capture.c
+++ b/capture.c
@@ -289,7 +289,7 @@ guint32 drops)
}
/* read in the packet data */
- switch (cf_read(capture_opts->cf)) {
+ switch (cf_read(capture_opts->cf, FALSE)) {
case CF_READ_OK:
case CF_READ_ERROR:
diff --git a/file.c b/file.c
index 4d19f10f6d..feafb226a2 100644
--- a/file.c
+++ b/file.c
@@ -484,7 +484,7 @@ static float calc_progbar_val(capture_file *cf, gint64 size, gint64 file_pos){
}
cf_read_status_t
-cf_read(capture_file *cf)
+cf_read(capture_file *cf, gboolean from_save)
{
int err;
gchar *err_info;
@@ -524,10 +524,13 @@ cf_read(capture_file *cf)
reset_tap_listeners();
- cf_callback_invoke(cf_cb_file_read_start, cf);
-
name_ptr = get_basename(cf->filename);
+ if (from_save == FALSE)
+ cf_callback_invoke(cf_cb_file_read_started, cf);
+ else
+ cf_callback_invoke(cf_cb_file_save_started, (gpointer)name_ptr);
+
/* Find the size of the file. */
size = wtap_file_size(cf->wth, NULL);
@@ -561,8 +564,12 @@ cf_read(capture_file *cf)
*/
if ((progbar == NULL) && !(count % MIN_NUMBER_OF_PACKET)){
progbar_val = calc_progbar_val( cf, size, data_offset);
- progbar = delayed_create_progress_dlg("Loading", name_ptr,
- TRUE, &stop_flag, &start_time, progbar_val);
+ if (from_save == FALSE)
+ progbar = delayed_create_progress_dlg("Loading", name_ptr,
+ TRUE, &stop_flag, &start_time, progbar_val);
+ else
+ progbar = delayed_create_progress_dlg("Saving", name_ptr,
+ TRUE, &stop_flag, &start_time, progbar_val);
}
/* Update the progress bar, but do it only N_PROGBAR_UPDATES times;
@@ -673,8 +680,10 @@ cf_read(capture_file *cf)
#else
packet_list_thaw();
#endif
-
- cf_callback_invoke(cf_cb_file_read_finished, cf);
+ if (from_save == FALSE)
+ cf_callback_invoke(cf_cb_file_read_finished, cf);
+ else
+ cf_callback_invoke(cf_cb_file_save_finished, cf);
/* If we have any displayed packets to select, select the first of those
packets by making the first row the selected row. */
@@ -4130,7 +4139,7 @@ cf_save(capture_file *cf, const char *fname, packet_range_t *range, guint save_f
wtap_dumper *pdh;
save_callback_args_t callback_args;
- cf_callback_invoke(cf_cb_file_safe_started, (gpointer) fname);
+ cf_callback_invoke(cf_cb_file_save_started, (gpointer)fname);
/* don't write over an existing file. */
/* this should've been already checked by our caller, just to be sure... */
@@ -4144,7 +4153,6 @@ cf_save(capture_file *cf, const char *fname, packet_range_t *range, guint save_f
packet_range_process_init(range);
-
if (packet_range_process_all(range) && save_format == cf->cd_t) {
/* We're not filtering packets, and we're saving it in the format
it's already in, so we can just move or copy the raw data. */
@@ -4243,7 +4251,7 @@ cf_save(capture_file *cf, const char *fname, packet_range_t *range, guint save_f
}
}
- cf_callback_invoke(cf_cb_file_safe_finished, NULL);
+ cf_callback_invoke(cf_cb_file_save_finished, NULL);
if (packet_range_process_all(range)) {
/* We saved the entire capture, not just some packets from it.
@@ -4261,7 +4269,8 @@ cf_save(capture_file *cf, const char *fname, packet_range_t *range, guint save_f
if ((cf_open(cf, fname, FALSE, &err)) == CF_OK) {
/* XXX - report errors if this fails?
What should we return if it fails or is aborted? */
- switch (cf_read(cf)) {
+
+ switch (cf_read(cf, TRUE)) {
case CF_READ_OK:
case CF_READ_ERROR:
@@ -4277,13 +4286,13 @@ cf_save(capture_file *cf, const char *fname, packet_range_t *range, guint save_f
correctly for the "no capture file open" state). */
break;
}
- cf_callback_invoke(cf_cb_file_safe_reload_finished, NULL);
+ cf_callback_invoke(cf_cb_file_save_reload_finished, NULL);
}
}
return CF_OK;
fail:
- cf_callback_invoke(cf_cb_file_safe_failed, NULL);
+ cf_callback_invoke(cf_cb_file_save_failed, NULL);
return CF_ERROR;
}
@@ -4542,7 +4551,7 @@ cf_reload(capture_file *cf) {
is_tempfile = cf->is_tempfile;
cf->is_tempfile = FALSE;
if (cf_open(cf, filename, is_tempfile, &err) == CF_OK) {
- switch (cf_read(cf)) {
+ switch (cf_read(cf, FALSE)) {
case CF_READ_OK:
case CF_READ_ERROR:
diff --git a/file.h b/file.h
index 6c02b9e13a..97c478399b 100644
--- a/file.h
+++ b/file.h
@@ -58,15 +58,15 @@ typedef enum {
typedef enum {
cf_cb_file_closing,
cf_cb_file_closed,
- cf_cb_file_read_start,
+ cf_cb_file_read_started,
cf_cb_file_read_finished,
cf_cb_packet_selected,
cf_cb_packet_unselected,
cf_cb_field_unselected,
- cf_cb_file_safe_started,
- cf_cb_file_safe_finished,
- cf_cb_file_safe_reload_finished,
- cf_cb_file_safe_failed
+ cf_cb_file_save_started,
+ cf_cb_file_save_finished,
+ cf_cb_file_save_reload_finished,
+ cf_cb_file_save_failed
} cf_cbs;
typedef void (*cf_callback_t) (gint event, gpointer data, gpointer user_data);
@@ -105,9 +105,10 @@ void cf_reload(capture_file *cf);
* Read all packets of a capture file into the internal structures.
*
* @param cf the capture file to be read
+ * @param from_save reread asked from cf_save
* @return one of cf_read_status_t
*/
-cf_read_status_t cf_read(capture_file *cf);
+cf_read_status_t cf_read(capture_file *cf, gboolean from_save);
/**
* Start reading from the end of a capture file.
diff --git a/gtk/capture_file_dlg.c b/gtk/capture_file_dlg.c
index 077646e647..8a8f93434c 100644
--- a/gtk/capture_file_dlg.c
+++ b/gtk/capture_file_dlg.c
@@ -669,7 +669,7 @@ file_open_ok_cb(GtkWidget *w, gpointer fs) {
/* We've crossed the Rubicon; get rid of the file selection box. */
window_destroy(GTK_WIDGET (fs));
- switch (cf_read(&cfile)) {
+ switch (cf_read(&cfile, FALSE)) {
case CF_READ_OK:
case CF_READ_ERROR:
@@ -1007,7 +1007,7 @@ file_merge_ok_cb(GtkWidget *w, gpointer fs) {
previous read filter attached to "cf"). */
cfile.rfcode = rfcode;
- switch (cf_read(&cfile)) {
+ switch (cf_read(&cfile, FALSE)) {
case CF_READ_OK:
case CF_READ_ERROR:
diff --git a/gtk/drag_and_drop.c b/gtk/drag_and_drop.c
index c0ca337f19..971c9c4ebc 100644
--- a/gtk/drag_and_drop.c
+++ b/gtk/drag_and_drop.c
@@ -177,7 +177,7 @@ dnd_merge_files(int in_file_count, char **in_filenames)
}
g_free(tmpname);
- switch (cf_read(&cfile)) {
+ switch (cf_read(&cfile, FALSE)) {
case CF_READ_OK:
case CF_READ_ERROR:
@@ -252,7 +252,7 @@ dnd_open_file_cmd(gchar *cf_names_freeme)
/* open and read the capture file (this will close an existing file) */
if (cf_open(&cfile, in_filenames[0], FALSE, &err) == CF_OK) {
/* XXX - add this to the menu if the read fails? */
- cf_read(&cfile);
+ cf_read(&cfile, FALSE);
add_menu_recent_capture_file(in_filenames[0]);
} else {
/* the capture file couldn't be read (doesn't exist, file format unknown, ...) */
diff --git a/gtk/file_dlg_win32.c b/gtk/file_dlg_win32.c
index 65f41ce9b5..a210dd0497 100644
--- a/gtk/file_dlg_win32.c
+++ b/gtk/file_dlg_win32.c
@@ -230,7 +230,7 @@ win32_open_file (HWND h_wnd) {
cf_set_rfcode(&cfile, dfp);
}
- switch (cf_read(&cfile)) {
+ switch (cf_read(&cfile, FALSE)) {
case CF_READ_OK:
case CF_READ_ERROR:
dirname = get_dirname(utf_16to8(file_name));
@@ -484,7 +484,7 @@ win32_merge_file (HWND h_wnd) {
cf_set_rfcode(&cfile, dfp);
}
- switch (cf_read(&cfile)) {
+ switch (cf_read(&cfile, FALSE)) {
case CF_READ_OK:
case CF_READ_ERROR:
dirname = get_dirname(utf_16to8(file_name));
diff --git a/gtk/fileset_dlg.c b/gtk/fileset_dlg.c
index 72167c9821..78709a7838 100644
--- a/gtk/fileset_dlg.c
+++ b/gtk/fileset_dlg.c
@@ -84,7 +84,7 @@ fs_open_entry(fileset_entry *entry)
/* close the old and open the new file */
cf_close(&cfile);
if (cf_open(&cfile, fname, FALSE, &err) == CF_OK) {
- cf_read(&cfile);
+ cf_read(&cfile, FALSE);
}
g_free(fname);
diff --git a/gtk/funnel_stat.c b/gtk/funnel_stat.c
index be0bdee611..8060536f1c 100644
--- a/gtk/funnel_stat.c
+++ b/gtk/funnel_stat.c
@@ -515,7 +515,7 @@ static gboolean funnel_open_file(const char* fname, const char* filter, const ch
cfile.rfcode = rfcode;
- switch (cf_read(&cfile)) {
+ switch (cf_read(&cfile, FALSE)) {
case CF_READ_OK:
case CF_READ_ERROR:
break;
diff --git a/gtk/main.c b/gtk/main.c
index 310a9be853..a0f97057ee 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -1370,7 +1370,7 @@ main_cf_cb_file_closed(capture_file *cf _U_)
static void
-main_cf_cb_file_read_start(capture_file *cf _U_)
+main_cf_cb_file_read_started(capture_file *cf _U_)
{
tap_dfilter_dlg_update();
@@ -1604,7 +1604,7 @@ main_cf_cb_field_unselected(capture_file *cf)
}
static void
-main_cf_cb_file_safe_reload_finished(gpointer data _U_)
+main_cf_cb_file_save_reload_finished(gpointer data _U_)
{
set_menus_for_capture_file(&cfile);
}
@@ -1621,9 +1621,9 @@ main_cf_callback(gint event, gpointer data, gpointer user_data _U_)
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Closed");
main_cf_cb_file_closed(data);
break;
- case(cf_cb_file_read_start):
- g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Read start");
- main_cf_cb_file_read_start(data);
+ case(cf_cb_file_read_started):
+ g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Read started");
+ main_cf_cb_file_read_started(data);
break;
case(cf_cb_file_read_finished):
g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Read finished");
@@ -1638,18 +1638,18 @@ main_cf_callback(gint event, gpointer data, gpointer user_data _U_)
case(cf_cb_field_unselected):
main_cf_cb_field_unselected(data);
break;
- case(cf_cb_file_safe_started):
- g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: safe started");
+ case(cf_cb_file_save_started):
+ g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Save started");
break;
- case(cf_cb_file_safe_finished):
- g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: safe finished");
+ case(cf_cb_file_save_finished):
+ g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Save finished");
break;
- case(cf_cb_file_safe_reload_finished):
- g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: reload finished");
- main_cf_cb_file_safe_reload_finished(data);
+ case(cf_cb_file_save_reload_finished):
+ g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Reload finished");
+ main_cf_cb_file_save_reload_finished(data);
break;
- case(cf_cb_file_safe_failed):
- g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: safe failed");
+ case(cf_cb_file_save_failed):
+ g_log(LOG_DOMAIN_MAIN, G_LOG_LEVEL_DEBUG, "Callback: Save failed");
break;
default:
g_warning("main_cf_callback: event %u unknown", event);
@@ -2705,7 +2705,7 @@ main(int argc, char *argv[])
start_requested_stats();
/* Read the capture file. */
- switch (cf_read(&cfile)) {
+ switch (cf_read(&cfile, FALSE)) {
case CF_READ_OK:
case CF_READ_ERROR:
diff --git a/gtk/main_statusbar.c b/gtk/main_statusbar.c
index e6d50e4b29..9d4a97224f 100644
--- a/gtk/main_statusbar.c
+++ b/gtk/main_statusbar.c
@@ -609,7 +609,7 @@ statusbar_cf_file_closed_cb(capture_file *cf _U_)
static void
-statusbar_cf_file_read_start_cb(capture_file *cf)
+statusbar_cf_file_read_started_cb(capture_file *cf)
{
const gchar *name_ptr;
gchar *load_msg;
@@ -763,24 +763,25 @@ statusbar_cf_field_unselected_cb(capture_file *cf _U_)
}
static void
-statusbar_cf_file_safe_started_cb(gchar * filename)
+statusbar_cf_file_save_started_cb(gchar *filename)
{
gchar *save_msg;
+ statusbar_pop_file_msg();
save_msg = g_strdup_printf(" Saving: %s...", get_basename(filename));
statusbar_push_file_msg(save_msg);
g_free(save_msg);
}
static void
-statusbar_cf_file_safe_finished_cb(gpointer data _U_)
+statusbar_cf_file_save_finished_cb(gpointer data _U_)
{
/* Pop the "Saving:" message off the status bar. */
statusbar_pop_file_msg();
}
static void
-statusbar_cf_file_safe_failed_cb(gpointer data _U_)
+statusbar_cf_file_save_failed_cb(gpointer data _U_)
{
/* Pop the "Saving:" message off the status bar. */
statusbar_pop_file_msg();
@@ -798,8 +799,8 @@ statusbar_cf_callback(gint event, gpointer data, gpointer user_data _U_)
case(cf_cb_file_closed):
statusbar_cf_file_closed_cb(data);
break;
- case(cf_cb_file_read_start):
- statusbar_cf_file_read_start_cb(data);
+ case(cf_cb_file_read_started):
+ statusbar_cf_file_read_started_cb(data);
break;
case(cf_cb_file_read_finished):
statusbar_cf_file_read_finished_cb(data);
@@ -811,16 +812,16 @@ statusbar_cf_callback(gint event, gpointer data, gpointer user_data _U_)
case(cf_cb_field_unselected):
statusbar_cf_field_unselected_cb(data);
break;
- case(cf_cb_file_safe_started):
- statusbar_cf_file_safe_started_cb(data);
+ case(cf_cb_file_save_started):
+ statusbar_cf_file_save_started_cb(data);
break;
- case(cf_cb_file_safe_finished):
- statusbar_cf_file_safe_finished_cb(data);
+ case(cf_cb_file_save_finished):
+ statusbar_cf_file_save_finished_cb(data);
break;
- case(cf_cb_file_safe_reload_finished):
+ case(cf_cb_file_save_reload_finished):
break;
- case(cf_cb_file_safe_failed):
- statusbar_cf_file_safe_failed_cb(data);
+ case(cf_cb_file_save_failed):
+ statusbar_cf_file_save_failed_cb(data);
break;
default:
g_warning("statusbar_cf_callback: event %u unknown", event);
diff --git a/gtk/menus.c b/gtk/menus.c
index c22e271e56..bd449d5a88 100644
--- a/gtk/menus.c
+++ b/gtk/menus.c
@@ -1858,7 +1858,7 @@ menu_open_filename(gchar *cf_name)
/* open and read the capture file (this will close an existing file) */
if (cf_open(&cfile, cf_name, FALSE, &err) == CF_OK) {
- cf_read(&cfile);
+ cf_read(&cfile, FALSE);
} else {
/* the capture file apparently no longer exists; remove menu item */
/* XXX: ask user to remove item, it's maybe only a temporary problem */
@@ -1886,7 +1886,7 @@ menu_open_recent_file_cmd(GtkWidget *w)
/* open and read the capture file (this will close an existing file) */
if (cf_open(&cfile, cf_name, FALSE, &err) == CF_OK) {
- cf_read(&cfile);
+ cf_read(&cfile, FALSE);
} else {
/* the capture file apparently no longer exists; remove menu item */
/* XXX: ask user to remove item, it's maybe only a temporary problem */