aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss@ulticom.com>2012-03-23 01:41:59 +0000
committerJeff Morriss <jeff.morriss@ulticom.com>2012-03-23 01:41:59 +0000
commit9c1bf7223e576acaa9452f06c3cf809c98794cc7 (patch)
tree32797a9cd8a9e28bde09163cf245e986b31f2864
parent4efb92a2746f6fe4b2f93d68a1e200c30abfd647 (diff)
Don't mark the file as unsaved unless the capture or packet comments actually changed.
svn path=/trunk/; revision=41744
-rw-r--r--file.c18
-rw-r--r--ui/gtk/edit_packet_comment_dlg.c3
-rw-r--r--ui/gtk/new_packet_list.c13
-rw-r--r--wiretap/wtap.c29
4 files changed, 44 insertions, 19 deletions
diff --git a/file.c b/file.c
index 5d8d8e624b..b8692b6a2f 100644
--- a/file.c
+++ b/file.c
@@ -3658,10 +3658,9 @@ cf_unignore_frame(capture_file *cf, frame_data *frame)
const gchar*
cf_read_shb_comment(capture_file *cf)
{
- wtapng_section_t* shb_inf;
+ wtapng_section_t *shb_inf;
const gchar *temp_str;
-
/* Get info from SHB */
shb_inf = wtap_file_get_shb_info(cf->wth);
if(shb_inf == NULL)
@@ -3676,10 +3675,23 @@ cf_read_shb_comment(capture_file *cf)
void
cf_update_capture_comment(capture_file *cf, gchar *comment)
{
+ wtapng_section_t *shb_inf;
/* Get info from SHB */
- wtap_write_shb_comment(cf->wth, comment);
+ shb_inf = wtap_file_get_shb_info(cf->wth);
+ /* See if the comment has changed or not */
+ if (shb_inf && shb_inf->opt_comment) {
+ if (strcmp(shb_inf->opt_comment, comment) == 0) {
+ g_free(comment);
+ return;
+ }
+ }
+
+ /* The comment has changed, let's update it */
+ wtap_write_shb_comment(cf->wth, comment);
+ /* Mark the file as unsaved */
+ cf->user_saved = FALSE;
}
typedef struct {
diff --git a/ui/gtk/edit_packet_comment_dlg.c b/ui/gtk/edit_packet_comment_dlg.c
index 2fd7a1cc56..5b8cae1db3 100644
--- a/ui/gtk/edit_packet_comment_dlg.c
+++ b/ui/gtk/edit_packet_comment_dlg.c
@@ -105,8 +105,7 @@ capture_comment_text_buff_ok_cb(GtkWidget *w _U_, GtkWidget *view)
/*g_warning("The new comment is '%s'",new_capture_comment);*/
cf_update_capture_comment(&cfile, new_capture_comment);
- /* Mark the file as unsaved, caues a popup asking to save the file if we quit the file */
- cfile.user_saved = FALSE;
+ /* Update the menus in case the file might need to be saved */
set_menus_for_capture_file(&cfile);
window_destroy(edit_or_add_capture_comment_dlg);
diff --git a/ui/gtk/new_packet_list.c b/ui/gtk/new_packet_list.c
index f8eaf0c918..8a2bf50e92 100644
--- a/ui/gtk/new_packet_list.c
+++ b/ui/gtk/new_packet_list.c
@@ -1733,9 +1733,20 @@ new_packet_list_update_packet_comment(gchar *new_packet_comment)
return;
record = new_packet_list_get_record(model, &iter);
+
+ /* Check if the comment has changed */
+ if (record->fdata->opt_comment) {
+ if (strcmp(record->fdata->opt_comment, new_packet_comment) == 0) {
+ g_free(new_packet_comment);
+ return;
+ }
+ }
+
+ /* The comment has changed, let's update it */
g_free(record->fdata->opt_comment);
record->fdata->opt_comment = new_packet_comment;
- /* Mark the file as unsaved, caues a popup asking to save the file if we quit the file */
+
+ /* Mark the file as unsaved */
cfile.user_saved = FALSE;
set_menus_for_capture_file(&cfile);
diff --git a/wiretap/wtap.c b/wiretap/wtap.c
index 7bdd1bf919..5edfed5efd 100644
--- a/wiretap/wtap.c
+++ b/wiretap/wtap.c
@@ -96,7 +96,8 @@ wtap_file_tsprecision(wtap *wth)
return wth->tsprecision;
}
-wtapng_section_t* wtap_file_get_shb_info(wtap *wth)
+wtapng_section_t *
+wtap_file_get_shb_info(wtap *wth)
{
wtapng_section_t *shb_hdr;
@@ -114,21 +115,23 @@ wtapng_section_t* wtap_file_get_shb_info(wtap *wth)
return shb_hdr;
}
-void wtap_write_shb_comment(wtap *wth, gchar *comment)
+void
+wtap_write_shb_comment(wtap *wth, gchar *comment)
{
g_free(wth->shb_hdr.opt_comment);
wth->shb_hdr.opt_comment = comment;
}
-wtapng_iface_descriptions_t* wtap_file_get_idb_info(wtap *wth)
+wtapng_iface_descriptions_t *
+wtap_file_get_idb_info(wtap *wth)
{
wtapng_iface_descriptions_t *idb_info;
idb_info = g_new(wtapng_iface_descriptions_t,1);
idb_info->number_of_interfaces = wth->number_of_interfaces;
- idb_info->interface_data = wth->interface_data;
+ idb_info->interface_data = wth->interface_data;
return idb_info;
}
@@ -601,8 +604,8 @@ int wtap_register_encap_type(char* name, char* short_name) {
/* Name that should be somewhat descriptive. */
-const char
-*wtap_encap_string(int encap)
+const char *
+wtap_encap_string(int encap)
{
if (encap < WTAP_ENCAP_PER_PACKET || encap >= WTAP_NUM_ENCAP_TYPES)
return "Illegal";
@@ -613,8 +616,8 @@ const char
}
/* Name to use in, say, a command-line flag specifying the type. */
-const char
-*wtap_encap_short_string(int encap)
+const char *
+wtap_encap_short_string(int encap)
{
if (encap < WTAP_ENCAP_PER_PACKET || encap >= WTAP_NUM_ENCAP_TYPES)
return "illegal";
@@ -664,8 +667,8 @@ static const char *wtap_errlist[] = {
};
#define WTAP_ERRLIST_SIZE (sizeof wtap_errlist / sizeof wtap_errlist[0])
-const char
-*wtap_strerror(int err)
+const char *
+wtap_strerror(int err)
{
static char errbuf[128];
unsigned int wtap_errlist_index;
@@ -845,19 +848,19 @@ wtap_read_so_far(wtap *wth)
return file_tell_raw(wth->fh);
}
-struct wtap_pkthdr*
+struct wtap_pkthdr *
wtap_phdr(wtap *wth)
{
return &wth->phdr;
}
-union wtap_pseudo_header*
+union wtap_pseudo_header *
wtap_pseudoheader(wtap *wth)
{
return &wth->pseudo_header;
}
-guint8*
+guint8 *
wtap_buf_ptr(wtap *wth)
{
return buffer_start_ptr(wth->frame_buffer);