[evolution-data-server] Bug #625482 - Personal addressbook is vanished



commit 61d05d21874193072998d9ff4e22fb391001da6c
Author: Milan Crha <mcrha redhat com>
Date:   Wed Jul 28 20:16:50 2010 +0200

    Bug #625482 - Personal addressbook is vanished

 addressbook/backends/file/e-book-backend-file.c |   15 +++++++++------
 calendar/backends/file/e-cal-backend-file.c     |   16 +++++++++-------
 2 files changed, 18 insertions(+), 13 deletions(-)
---
diff --git a/addressbook/backends/file/e-book-backend-file.c b/addressbook/backends/file/e-book-backend-file.c
index 989573e..dc6a703 100644
--- a/addressbook/backends/file/e-book-backend-file.c
+++ b/addressbook/backends/file/e-book-backend-file.c
@@ -877,20 +877,23 @@ static gchar *
 e_book_backend_file_extract_path_from_source (ESource *source)
 {
 	const gchar *user_data_dir;
-	const gchar *relative_uri;
-	gchar *mangled_uri;
+	const gchar *source_dir;
+	gchar *mangled_source_dir;
 	gchar *filename;
 
 	user_data_dir = e_get_user_data_dir ();
-	relative_uri = e_source_peek_relative_uri (source);
+	source_dir = e_source_peek_relative_uri (source);
+
+	if (!source_dir || !g_str_equal (source_dir, "system"))
+		source_dir = e_source_peek_uid (source);
 
 	/* Mangle the URI to not contain invalid characters. */
-	mangled_uri = g_strdelimit (g_strdup (relative_uri), ":/", '_');
+	mangled_source_dir = g_strdelimit (g_strdup (source_dir), ":/", '_');
 
 	filename = g_build_filename (
-		user_data_dir, "addressbook", "local", mangled_uri, NULL);
+		user_data_dir, "addressbook", mangled_source_dir, NULL);
 
-	g_free (mangled_uri);
+	g_free (mangled_source_dir);
 
 	return filename;
 }
diff --git a/calendar/backends/file/e-cal-backend-file.c b/calendar/backends/file/e-cal-backend-file.c
index e558eec..7d7c511 100644
--- a/calendar/backends/file/e-cal-backend-file.c
+++ b/calendar/backends/file/e-cal-backend-file.c
@@ -3067,10 +3067,10 @@ cal_backend_file_constructed (GObject *object)
 	ECalBackend *backend;
 	ESource *source;
 	icalcomponent_kind kind;
-	const gchar *relative_uri;
+	const gchar *source_dir;
 	const gchar *user_data_dir;
 	const gchar *component_type;
-	gchar *mangled_uri;
+	gchar *mangled_source_dir;
 	gchar *filename;
 
 	user_data_dir = e_get_user_data_dir ();
@@ -3084,8 +3084,6 @@ cal_backend_file_constructed (GObject *object)
 	kind = e_cal_backend_get_kind (backend);
 	source = e_cal_backend_get_source (backend);
 
-	relative_uri = e_source_peek_relative_uri (source);
-
 	switch (kind) {
 		case ICAL_VEVENT_COMPONENT:
 			component_type = "calendar";
@@ -3102,16 +3100,20 @@ cal_backend_file_constructed (GObject *object)
 			break;
 	}
 
+	source_dir = e_source_peek_relative_uri (source);
+	if (!source_dir || !g_str_equal (source_dir, "system"))
+		source_dir = e_source_peek_uid (source);
+
 	/* Mangle the URI to not contain invalid characters. */
-	mangled_uri = g_strdelimit (g_strdup (relative_uri), ":/", '_');
+	mangled_source_dir = g_strdelimit (g_strdup (source_dir), ":/", '_');
 
 	filename = g_build_filename (
-		user_data_dir, component_type, "local", mangled_uri, NULL);
+		user_data_dir, component_type, mangled_source_dir, NULL);
 
 	e_cal_backend_set_cache_dir (backend, filename);
 
 	g_free (filename);
-	g_free (mangled_uri);
+	g_free (mangled_source_dir);
 }
 
 /* Class initialization function for the file backend */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]