diff options
author | Jaap Keuter <jaap.keuter@xs4all.nl> | 2009-12-14 22:05:29 +0000 |
---|---|---|
committer | Jaap Keuter <jaap.keuter@xs4all.nl> | 2009-12-14 22:05:29 +0000 |
commit | 81b585cf8e24b954fed8077d53a2970c3e761724 (patch) | |
tree | 9454b3ef349ecdf735dc9c0008964bc6c30a171a | |
parent | 6d11b171d64f005f7c29d271d983a8e35fa43c86 (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.c | 2 | ||||
-rw-r--r-- | file.c | 37 | ||||
-rw-r--r-- | file.h | 13 | ||||
-rw-r--r-- | gtk/capture_file_dlg.c | 4 | ||||
-rw-r--r-- | gtk/drag_and_drop.c | 4 | ||||
-rw-r--r-- | gtk/file_dlg_win32.c | 4 | ||||
-rw-r--r-- | gtk/fileset_dlg.c | 2 | ||||
-rw-r--r-- | gtk/funnel_stat.c | 2 | ||||
-rw-r--r-- | gtk/main.c | 30 | ||||
-rw-r--r-- | gtk/main_statusbar.c | 27 | ||||
-rw-r--r-- | gtk/menus.c | 4 |
11 files changed, 70 insertions, 59 deletions
@@ -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: @@ -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: @@ -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 */ |