diff options
author | Gerald Combs <gerald@wireshark.org> | 2007-06-27 05:39:13 +0000 |
---|---|---|
committer | Gerald Combs <gerald@wireshark.org> | 2007-06-27 05:39:13 +0000 |
commit | 4345560f29cd0a99238fbf8d324365a3304bb95c (patch) | |
tree | bce5cefefaec685ea141ac9afcef44f35fccc6e4 /gtk | |
parent | 85b3120a7d6ad3500db3dfa9ad84172d7c71ba35 (diff) |
If we have problems with "Save All" in the HTTP object list, show a single
error dialog instead of one dialog per unsaved file.
svn path=/trunk/; revision=22198
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/export_object.c | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/gtk/export_object.c b/gtk/export_object.c index 3e72e1a986..0168f49866 100644 --- a/gtk/export_object.c +++ b/gtk/export_object.c @@ -3,7 +3,7 @@ * Copyright 2007, Stephen Fisher <stephentfisher@yahoo.com> * * $Id$ - * + * * Wireshark - Network traffic analyzer * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs @@ -110,13 +110,13 @@ eo_win_destroy_cb(GtkWindow *win _U_, gpointer data) while(slist) { entry = slist->data; - + g_free(entry->hostname); g_free(entry->content_type); g_free(entry->filename); g_free(entry->payload_data); - - slist = slist->next; + + slist = slist->next; g_free(entry); } @@ -124,33 +124,37 @@ eo_win_destroy_cb(GtkWindow *win _U_, gpointer data) g_free(object_list); } -static void -eo_save_entry(gchar *save_as_filename, export_object_entry_t *entry) +static gboolean +eo_save_entry(gchar *save_as_filename, export_object_entry_t *entry, gboolean show_err) { int to_fd; to_fd = eth_open(save_as_filename, O_WRONLY | O_CREAT | O_EXCL | O_BINARY, 0644); if(to_fd == -1) { /* An error occurred */ - open_failure_alert_box(save_as_filename, errno, TRUE); + if (show_err) + open_failure_alert_box(save_as_filename, errno, TRUE); g_free(save_as_filename); - return; + return FALSE; } if(eth_write(to_fd, entry->payload_data, entry->payload_len) < 0) { - write_failure_alert_box(save_as_filename, errno); + if (show_err) + write_failure_alert_box(save_as_filename, errno); eth_close(to_fd); g_free(save_as_filename); - return; + return FALSE; } if (eth_close(to_fd) < 0) { - write_failure_alert_box(save_as_filename, errno); + if (show_err) + write_failure_alert_box(save_as_filename, errno); g_free(save_as_filename); - return; + return FALSE; } g_free(save_as_filename); + return TRUE; } @@ -179,7 +183,7 @@ eo_save_clicked_cb(GtkWidget *widget _U_, gpointer arg) entry->filename); if(gtk_dialog_run(GTK_DIALOG(save_as_w)) == GTK_RESPONSE_ACCEPT) - eo_save_entry(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(save_as_w)), entry); + eo_save_entry(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(save_as_w)), entry, TRUE); window_destroy(save_as_w); } @@ -192,6 +196,7 @@ eo_save_all_clicked_cb(GtkWidget *widget _U_, gpointer arg) export_object_entry_t *entry; GtkWidget *save_in_w; GSList *slist = object_list->entries; + gboolean all_saved = TRUE; save_in_w = file_selection_new("Wireshark: Save All Objects In ...", FILE_SELECTION_CREATE_FOLDER); @@ -204,13 +209,18 @@ eo_save_all_clicked_cb(GtkWidget *widget _U_, gpointer arg) entry = slist->data; save_as_fullpath = g_build_filename(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(save_in_w)), entry->filename, NULL); - - eo_save_entry(save_as_fullpath, entry); + + if (!eo_save_entry(save_as_fullpath, entry, FALSE)) + all_saved = FALSE; slist = slist->next; } } + if (!all_saved) + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Some files could not be saved."); + window_destroy(save_in_w); } @@ -236,7 +246,7 @@ eo_draw(void *tapdata) while(slist) { eo_entry = slist->data; - + gtk_tree_store_append(object_list->store, &new_iter, object_list->iter); |