[evolution-data-server] Bug #656051 - Preserve mbox file attributes	after rewrite
- From: Milan Crha <mcrha src gnome org>
 
- To: commits-list gnome org
 
- Cc: 
 
- Subject: [evolution-data-server] Bug #656051 - Preserve mbox file attributes	after rewrite
 
- Date: Wed, 17 Aug 2011 14:04:05 +0000 (UTC)
 
commit 92c9bc1a876e1b7635d18d5b067502901a1a5748
Author: Milan Crha <mcrha redhat com>
Date:   Wed Aug 17 16:03:41 2011 +0200
    Bug #656051 - Preserve mbox file attributes after rewrite
 camel/providers/local/camel-mbox-summary.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/camel/providers/local/camel-mbox-summary.c b/camel/providers/local/camel-mbox-summary.c
index 1c727cb..0816ed2 100644
--- a/camel/providers/local/camel-mbox-summary.c
+++ b/camel/providers/local/camel-mbox-summary.c
@@ -692,13 +692,18 @@ mbox_summary_sync_full (CamelMboxSummary *mbs,
 	CamelFolderSummary *s = CAMEL_FOLDER_SUMMARY (mbs);
 	gint fd = -1, fdout = -1;
 	gchar *tmpname = NULL;
-	guint32 flags = (expunge?1:0);
+	guint32 flags = (expunge?1:0), filemode = 0600;
+	struct stat st;
 
 	d(printf("performing full summary/sync\n"));
 
 	camel_operation_push_message (cancellable, _("Storing folder"));
 	camel_folder_summary_lock (s, CAMEL_FOLDER_SUMMARY_SUMMARY_LOCK);
 
+	/* preserve attributes as set on the file previously */
+	if (g_stat (cls->folder_path, &st) == 0)
+		filemode = 07777 & st.st_mode;
+
 	fd = g_open (cls->folder_path, O_LARGEFILE | O_RDONLY | O_BINARY, 0);
 	if (fd == -1) {
 		camel_folder_summary_unlock (s, CAMEL_FOLDER_SUMMARY_SUMMARY_LOCK);
@@ -714,7 +719,7 @@ mbox_summary_sync_full (CamelMboxSummary *mbs,
 	tmpname = g_alloca (strlen (cls->folder_path) + 5);
 	sprintf (tmpname, "%s.tmp", cls->folder_path);
 	d(printf("Writing temporary file to %s\n", tmpname));
-	fdout = g_open (tmpname, O_LARGEFILE|O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0600);
+	fdout = g_open (tmpname, O_LARGEFILE | O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, filemode);
 	if (fdout == -1) {
 		g_set_error (
 			error, G_IO_ERROR,
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]