From e24bd6148e82717bfa544c4b0eaa7641638e8c87 Mon Sep 17 00:00:00 2001
From: Chris Lord <chris@openedhand.com>
Date: Mon, 3 Oct 2005 15:35:48 +0000
Subject: Modify calendar file backend not to use gnome-vfs (Dates works now)

git-svn-id: https://svn.o-hand.com/repos/poky@103 311d38ba-8fff-0310-9ca6-ca027cbcb966
---
 .../packages/eds/eds-dbus/no_gnomevfs.patch        |  10 -
 .../packages/eds/eds-dbus/no_gnomevfs3.patch       | 392 +++++++++++++++++++++
 openembedded/packages/eds/eds-dbus_svn.bb          |   3 +-
 3 files changed, 394 insertions(+), 11 deletions(-)
 create mode 100644 openembedded/packages/eds/eds-dbus/no_gnomevfs3.patch

(limited to 'openembedded')

diff --git a/openembedded/packages/eds/eds-dbus/no_gnomevfs.patch b/openembedded/packages/eds/eds-dbus/no_gnomevfs.patch
index 3a0fb8e7e..ad4c2572c 100644
--- a/openembedded/packages/eds/eds-dbus/no_gnomevfs.patch
+++ b/openembedded/packages/eds/eds-dbus/no_gnomevfs.patch
@@ -47,16 +47,6 @@ Index: configure.in
  
  EVO_SET_COMPILE_FLAGS(EVOLUTION_CALENDAR, $EVOLUTION_CALENDAR_DEPS)
  AC_SUBST(EVOLUTION_CALENDAR_CFLAGS)
-Index: calendar/backends/Makefile.am
-===================================================================
---- trunk/calendar/backends/Makefile.am	(revision 212)
-+++ trunk/calendar/backends/Makefile.am	(working copy)
-@@ -4,4 +4,4 @@
- GROUPWISE_SUBDIR =
- endif
- 
--SUBDIRS = file $(GROUPWISE_SUBDIR) contacts
-+SUBDIRS = $(GROUPWISE_SUBDIR) contacts
 Index: calendar/libedata-cal-dbus/e-data-cal-factory.c
 ===================================================================
 --- trunk/calendar/libedata-cal-dbus/e-data-cal-factory.c	(revision 206)
diff --git a/openembedded/packages/eds/eds-dbus/no_gnomevfs3.patch b/openembedded/packages/eds/eds-dbus/no_gnomevfs3.patch
new file mode 100644
index 000000000..a9e911670
--- /dev/null
+++ b/openembedded/packages/eds/eds-dbus/no_gnomevfs3.patch
@@ -0,0 +1,392 @@
+--- trunk/calendar/backends/file/e-cal-backend-file.c.old	2005-10-03 13:19:26.000000000 +0100
++++ trunk/calendar/backends/file/e-cal-backend-file.c	2005-10-03 15:46:10.000000000 +0100
+@@ -29,7 +29,6 @@
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <glib/gi18n-lib.h>
+-#include <libgnomevfs/gnome-vfs.h>
+ #include <libedataserver/e-util.h>
+ #include <libedataserver/e-xml-hash-utils.h>
+ #include <libecal-dbus/e-cal-recur.h>
+@@ -106,17 +105,21 @@
+ 	g_free (obj_data);
+ }
+ 
+-/* Saves the calendar data */
++static const char *
++find_path_from_uri (const char *uri)
++{
++	g_assert (strncasecmp (uri, "file:", 5) == 0);
++
++	return uri + 5;
++}
++
++/* Saves the calendar data */
+ static gboolean
+ save_file_when_idle (gpointer user_data)
+ {
+ 	ECalBackendFilePrivate *priv;
+-	GnomeVFSURI *uri, *backup_uri;
+-	GnomeVFSHandle *handle = NULL;
+-	GnomeVFSResult result = GNOME_VFS_ERROR_BAD_FILE;
+-	GnomeVFSFileSize out;
+-	gchar *tmp, *backup_uristr;
+-	char *buf;
++	const char *path, *buf;
++	gboolean result;
+ 	ECalBackendFile *cbfile = user_data;
+ 	
+ 	priv = cbfile->priv;
+@@ -130,52 +133,14 @@
+ 		return FALSE;
+ 	}
+ 
+-	uri = gnome_vfs_uri_new (priv->uri);
+-	if (!uri)
++	path = find_path_from_uri (priv->uri);
++	if (!path)
+ 		goto error_malformed_uri;
+ 
+-	/* save calendar to backup file */
+-	tmp = gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_NONE);
+-	if (!tmp) {
+-		gnome_vfs_uri_unref (uri);
+-		goto error_malformed_uri;
+-	}
+-		
+-	backup_uristr = g_strconcat (tmp, "~", NULL);
+-	backup_uri = gnome_vfs_uri_new (backup_uristr);
+-
+-	g_free (tmp);
+-	g_free (backup_uristr);
+-
+-	if (!backup_uri) {
+-		gnome_vfs_uri_unref (uri);
+-		goto error_malformed_uri;
+-	}
+-	
+-	result = gnome_vfs_create_uri (&handle, backup_uri,
+-                                       GNOME_VFS_OPEN_WRITE,
+-                                       FALSE, 0666);
+-	if (result != GNOME_VFS_OK) {
+-		gnome_vfs_uri_unref (uri);
+-		gnome_vfs_uri_unref (backup_uri);
+-		goto error;
+-	}
+-
++	/* save calendar */
+ 	buf = icalcomponent_as_ical_string (priv->icalcomp);
+-	result = gnome_vfs_write (handle, buf, strlen (buf) * sizeof (char), &out);
+-	gnome_vfs_close (handle);
+-	if (result != GNOME_VFS_OK) {
+-		gnome_vfs_uri_unref (uri);
+-		gnome_vfs_uri_unref (backup_uri);
+-		goto error;
+-	}
+-
+-	/* now copy the temporary file to the real file */
+-	result = gnome_vfs_move_uri (backup_uri, uri, TRUE);
+-
+-	gnome_vfs_uri_unref (uri);
+-	gnome_vfs_uri_unref (backup_uri);
+-	if (result != GNOME_VFS_OK)
++	result = g_file_set_contents (path, buf, -1, NULL);
++	if (!result)
+ 		goto error;
+ 
+ 	priv->is_dirty = FALSE;
+@@ -193,7 +158,8 @@
+ 
+  error:
+ 	g_mutex_unlock (priv->idle_save_mutex);
+-	e_cal_backend_notify_error (E_CAL_BACKEND (cbfile), gnome_vfs_result_to_string (result));
++	e_cal_backend_notify_error (E_CAL_BACKEND (cbfile),
++				  _("Can't save calendar data: Error writing to file."));
+ 	return TRUE;
+ }
+ 
+@@ -310,7 +276,7 @@
+ 	return obj_data ? obj_data->full_object : NULL;
+ }
+ 
+-
++
+ 
+ /* Calendar backend methods */
+ 
+@@ -592,14 +558,12 @@
+ 	}
+ }
+ 
+-static char *
++G_GNUC_DEPRECATED static char *
+ get_uri_string_for_gnome_vfs (ECalBackend *backend)
+ {
+ 	ECalBackendFile *cbfile;
+ 	ECalBackendFilePrivate *priv;
+ 	const char *master_uri;
+-	char *full_uri, *str_uri;
+-	GnomeVFSURI *uri;
+ 
+ 	cbfile = E_CAL_BACKEND_FILE (backend);
+ 	priv = cbfile->priv;
+@@ -609,44 +573,41 @@
+ 	/* FIXME Check the error conditions a little more elegantly here */
+ 	if (g_strrstr ("tasks.ics", master_uri) || g_strrstr ("calendar.ics", master_uri)) {
+ 		g_warning (G_STRLOC ": Existing file name %s", master_uri);
+-
+ 		return NULL;
+ 	}
+ 	
+-	full_uri = g_strdup_printf ("%s%s%s", master_uri, G_DIR_SEPARATOR_S, priv->file_name);
+-	uri = gnome_vfs_uri_new (full_uri);
+-	g_free (full_uri);
+-	
+-	if (!uri)
+-		return NULL;
+-
+-	str_uri = gnome_vfs_uri_to_string (uri,
+-					   (GNOME_VFS_URI_HIDE_USER_NAME
+-					    | GNOME_VFS_URI_HIDE_PASSWORD
+-					    | GNOME_VFS_URI_HIDE_HOST_NAME
+-					    | GNOME_VFS_URI_HIDE_HOST_PORT
+-					    | GNOME_VFS_URI_HIDE_TOPLEVEL_METHOD));
+-	gnome_vfs_uri_unref (uri);
++	return g_strdup_printf ("%s%s%s", master_uri, G_DIR_SEPARATOR_S, priv->file_name);
++}
+ 
+-	if (!str_uri || !strlen (str_uri)) {
+-		g_free (str_uri);
++/**
++ * Get the full path to this calendar file.
++ */
++static char *
++get_path (ECalBackend *backend)
++{
++	ECalBackendFile *cbfile;
++	const char *topuri, *dirname;
++	char *filename;
+ 
+-		return NULL;
+-	}	
++	g_return_val_if_fail (E_IS_CAL_BACKEND_FILE (backend), NULL);
+ 
+-	return str_uri;
++	cbfile = E_CAL_BACKEND_FILE (backend);
++	topuri = e_cal_backend_get_uri (backend);
++	dirname = find_path_from_uri (topuri);
++	filename = g_build_filename (dirname, cbfile->priv->file_name, NULL);
++	return filename;
+ }
+ 
+ /* Parses an open iCalendar file and loads it into the backend */
+ static ECalBackendSyncStatus
+-open_cal (ECalBackendFile *cbfile, const char *uristr)
++open_cal (ECalBackendFile *cbfile, const char *path)
+ {
+ 	ECalBackendFilePrivate *priv;
+ 	icalcomponent *icalcomp;
+ 
+ 	priv = cbfile->priv;
+ 
+-	icalcomp = e_cal_util_parse_ics_file (uristr);
++	icalcomp = e_cal_util_parse_ics_file (path);
+ 	if (!icalcomp)
+ 		return GNOME_Evolution_Calendar_OtherError;
+ 
+@@ -759,7 +720,7 @@
+ }
+ 
+ static ECalBackendSyncStatus
+-reload_cal (ECalBackendFile *cbfile, const char *uristr)
++reload_cal (ECalBackendFile *cbfile, const char *path)
+ {
+ 	ECalBackendFilePrivate *priv;
+ 	icalcomponent *icalcomp, *icalcomp_old;
+@@ -767,7 +728,7 @@
+ 
+ 	priv = cbfile->priv;
+ 
+-	icalcomp = e_cal_util_parse_ics_file (uristr);
++	icalcomp = e_cal_util_parse_ics_file (path);
+ 	if (!icalcomp)
+ 		return GNOME_Evolution_Calendar_OtherError;
+ 
+@@ -811,7 +772,7 @@
+ }
+ 
+ static ECalBackendSyncStatus
+-create_cal (ECalBackendFile *cbfile, const char *uristr)
++create_cal (ECalBackendFile *cbfile, const char *path)
+ {
+ 	char *dirname;
+ 	ECalBackendFilePrivate *priv;
+@@ -819,7 +780,7 @@
+ 	priv = cbfile->priv;
+ 
+ 	/* Create the directory to contain the file */
+-	dirname = g_path_get_dirname (uristr);
++	dirname = g_path_get_dirname (path);
+ 	if (e_util_mkdir_hier (dirname, 0700) != 0) {
+ 		g_free (dirname);
+ 		return GNOME_Evolution_Calendar_NoSuchCal;
+@@ -840,18 +801,6 @@
+ 	return GNOME_Evolution_Calendar_Success;
+ }
+ 
+-static char *
+-get_uri_string (ECalBackend *backend)
+-{
+-	gchar *str_uri, *full_uri;
+-
+-	str_uri = get_uri_string_for_gnome_vfs (backend);
+-	full_uri = gnome_vfs_unescape_string (str_uri, "");
+-	g_free (str_uri);
+-
+-	return full_uri;
+-}
+-
+ /* Open handler for the file backend */
+ static ECalBackendSyncStatus
+ e_cal_backend_file_open (ECalBackendSync *backend, EDataCal *cal, gboolean only_if_exists,
+@@ -859,7 +808,7 @@
+ {
+ 	ECalBackendFile *cbfile;
+ 	ECalBackendFilePrivate *priv;
+-	char *str_uri;
++	char *filename;
+ 	ECalBackendSyncStatus status;
+ 	
+ 	cbfile = E_CAL_BACKEND_FILE (backend);
+@@ -869,22 +818,20 @@
+ 	if (priv->uri && priv->comp_uid_hash)
+ 		return GNOME_Evolution_Calendar_Success;
+ 	
+-	str_uri = get_uri_string (E_CAL_BACKEND (backend));
+-	if (!str_uri)
+-		return GNOME_Evolution_Calendar_OtherError;
+-	
+-	if (access (str_uri, R_OK) == 0) {
+-		status = open_cal (cbfile, str_uri);
+-		if (access (str_uri, W_OK) != 0)
++	filename = get_path (E_CAL_BACKEND (backend));
++
++	if (access (filename, R_OK) == 0) {
++		status = open_cal (cbfile, filename);
++		if (access (filename, W_OK) != 0)
+ 			priv->read_only = TRUE;
+ 	} else {
+ 		if (only_if_exists)
+ 			status = GNOME_Evolution_Calendar_NoSuchCal;
+ 		else
+-			status = create_cal (cbfile, str_uri);
++			status = create_cal (cbfile, filename); // TODO?
+ 	}
+ 
+-	g_free (str_uri);
++	g_free (filename);
+ 
+ 	return status;
+ }
+@@ -894,7 +841,7 @@
+ {
+ 	ECalBackendFile *cbfile;
+ 	ECalBackendFilePrivate *priv;
+-	char *str_uri, *dirname;
++	char *filename, *dirname;
+ 	const char *fname;
+ 	GDir *dir;
+ 	GError *error = NULL;
+@@ -903,21 +850,21 @@
+ 	cbfile = E_CAL_BACKEND_FILE (backend);
+ 	priv = cbfile->priv;
+ 
+-	str_uri = get_uri_string (E_CAL_BACKEND (backend));
+-	if (!str_uri)
++	filename = get_path (E_CAL_BACKEND (backend));
++	if (!filename)
+ 		return GNOME_Evolution_Calendar_OtherError;
+ 
+-	if (access (str_uri, W_OK) != 0) {
+-		g_free (str_uri);
++	if (access (filename, W_OK) != 0) {
++		g_free (filename);
+ 
+ 		return GNOME_Evolution_Calendar_PermissionDenied;
+ 	}
+ 
+ 	/* remove all files in the directory */
+-	dirname = g_path_get_dirname (str_uri);
++	dirname = g_path_get_dirname (filename);
+ 	dir = g_dir_open (dirname, 0, &error);
+ 	if (!dir) {
+-		g_free (str_uri);
++		g_free (filename);
+ 		g_free (dirname);
+ 
+ 		return GNOME_Evolution_Calendar_PermissionDenied;
+@@ -929,7 +876,7 @@
+ 		full_path = g_build_filename (dirname, fname, NULL);
+ 		if (unlink (full_path) != 0) {
+ 			g_free (full_path);
+-			g_free (str_uri);
++			g_free (filename);
+ 			g_free (dirname);
+ 			g_dir_close (dir);
+ 
+@@ -943,7 +890,7 @@
+ 	success = rmdir (dirname) == 0;
+ 		
+ 	g_dir_close (dir);
+-	g_free (str_uri);
++	g_free (filename);
+ 	g_free (dirname);
+ 
+ 	return success ? GNOME_Evolution_Calendar_Success : GNOME_Evolution_Calendar_OtherError;
+@@ -1506,14 +1453,11 @@
+ 	EXmlHash *ehash;
+ 	ECalBackendFileComputeChangesData be_data;
+ 	GList *i;
+-	gchar *unescaped_uri;
+ 
+ 	priv = cbfile->priv;
+ 
+ 	/* FIXME Will this always work? */
+-	unescaped_uri = gnome_vfs_unescape_string (priv->uri, "");
+-	filename = g_strdup_printf ("%s-%s.db", unescaped_uri, change_id);
+-	g_free (unescaped_uri);
++	filename = g_strdup_printf ("%s-%s.db", priv->uri, change_id);
+ 	if (!(ehash = e_xmlhash_new (filename))) {
+ 		g_free (filename);
+ 		return GNOME_Evolution_Calendar_OtherError;
+@@ -2577,23 +2521,23 @@
+ e_cal_backend_file_reload (ECalBackendFile *cbfile)
+ {
+ 	ECalBackendFilePrivate *priv;
+-	char *str_uri;
++	char *filename;
+ 	ECalBackendSyncStatus status;
+ 	
+ 	priv = cbfile->priv;
+ 
+-	str_uri = get_uri_string (E_CAL_BACKEND (cbfile));
+-	if (!str_uri)
++	filename = get_path (E_CAL_BACKEND (cbfile));
++	if (!filename)
+ 		return GNOME_Evolution_Calendar_OtherError;
+ 
+-	if (access (str_uri, R_OK) == 0) {
+-		status = reload_cal (cbfile, str_uri);
+-		if (access (str_uri, W_OK) != 0)
++	if (access (filename, R_OK) == 0) {
++		status = reload_cal (cbfile, filename);
++		if (access (filename, W_OK) != 0)
+ 			priv->read_only = TRUE;
+ 	} else {
+ 		status = GNOME_Evolution_Calendar_NoSuchCal;
+ 	}
+ 
+-	g_free (str_uri);
++	g_free (filename);
+ 	return status;
+ }
diff --git a/openembedded/packages/eds/eds-dbus_svn.bb b/openembedded/packages/eds/eds-dbus_svn.bb
index 77ea4141d..6ddb91498 100755
--- a/openembedded/packages/eds/eds-dbus_svn.bb
+++ b/openembedded/packages/eds/eds-dbus_svn.bb
@@ -4,12 +4,13 @@ RDEPENDS = "gtk+ gconf db libiconv"
 MAINTAINER = "Chris Lord <chris@openedhand.com>"
 DESCRIPTION = "Evolution database backend server"
 PV = "1.4.0cvs${CVSDATE}"
-PR = "r5"
+PR = "r6"
 
 SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http \
            file://external_libdb.patch;patch=1 \
 	   file://no_gnomevfs.patch;patch=1 \
 	   file://no_gnomevfs2.patch;patch=1 \
+	   file://no_gnomevfs3.patch;patch=1 \
 	   file://no_iconv_test.patch;patch=1 \
 	   file://iconv-detect.h"
 
-- 
cgit v1.2.3