[evolution-data-server/openismus-work: 112/122] Added EDS_ADDRESS_BOOK_MODULES and EDS_CALENDAR_MODULES



commit 4c627d1a7bb486822f14dd4e21d6bbafe60b84de
Author: Tristan Van Berkom <tristanvb openismus com>
Date:   Thu Dec 13 15:46:45 2012 +0900

    Added EDS_ADDRESS_BOOK_MODULES and EDS_CALENDAR_MODULES
    
    Allows specification of alternative paths to search for modules
    for addressbook and calendar. Note that these *replace* the default
    system path, not augment it. This is intended to ensure that we
    dont load installed modules from the system when running test cases.

 addressbook/libedata-book/e-data-book-factory.c |    9 ++++++++-
 addressbook/libedata-book/e-data-book-factory.h |    9 +++++++++
 calendar/libedata-cal/e-data-cal-factory.c      |    9 ++++++++-
 calendar/libedata-cal/e-data-cal-factory.h      |    8 ++++++++
 4 files changed, 33 insertions(+), 2 deletions(-)
---
diff --git a/addressbook/libedata-book/e-data-book-factory.c b/addressbook/libedata-book/e-data-book-factory.c
index f286604..3f49279 100644
--- a/addressbook/libedata-book/e-data-book-factory.c
+++ b/addressbook/libedata-book/e-data-book-factory.c
@@ -570,6 +570,13 @@ e_data_book_factory_class_init (EDataBookFactoryClass *class)
 	GObjectClass *object_class;
 	EDBusServerClass *dbus_server_class;
 	EDataFactoryClass *data_factory_class;
+	const gchar *modules_directory = BACKENDDIR;
+	const gchar *modules_directory_env;
+
+	modules_directory_env = g_getenv (EDS_ADDRESS_BOOK_MODULES);
+	if (modules_directory_env &&
+	    g_file_test (modules_directory_env, G_FILE_TEST_IS_DIR))
+		modules_directory = g_strdup (modules_directory_env);
 
 	g_type_class_add_private (class, sizeof (EDataBookFactoryPrivate));
 
@@ -580,7 +587,7 @@ e_data_book_factory_class_init (EDataBookFactoryClass *class)
 
 	dbus_server_class = E_DBUS_SERVER_CLASS (class);
 	dbus_server_class->bus_name = ADDRESS_BOOK_DBUS_SERVICE_NAME;
-	dbus_server_class->module_directory = BACKENDDIR;
+	dbus_server_class->module_directory = modules_directory;
 	dbus_server_class->bus_acquired = data_book_factory_bus_acquired;
 	dbus_server_class->bus_name_lost = data_book_factory_bus_name_lost;
 	dbus_server_class->quit_server = data_book_factory_quit_server;
diff --git a/addressbook/libedata-book/e-data-book-factory.h b/addressbook/libedata-book/e-data-book-factory.h
index 00142bb..194d1ca 100644
--- a/addressbook/libedata-book/e-data-book-factory.h
+++ b/addressbook/libedata-book/e-data-book-factory.h
@@ -46,6 +46,15 @@
 	(G_TYPE_INSTANCE_GET_CLASS \
 	((obj), E_TYPE_DATA_BOOK_FACTORY, EDataBookFactoryClass))
 
+
+/**
+ * EDS_ADDRESS_BOOK_MODULES:
+ *
+ * This environment variable configures where the address book
+ * factory loads it's backend modules from.
+ */
+#define EDS_ADDRESS_BOOK_MODULES    "EDS_ADDRESS_BOOK_MODULES"
+
 G_BEGIN_DECLS
 
 typedef struct _EDataBookFactory EDataBookFactory;
diff --git a/calendar/libedata-cal/e-data-cal-factory.c b/calendar/libedata-cal/e-data-cal-factory.c
index 9899c31..d717b1a 100644
--- a/calendar/libedata-cal/e-data-cal-factory.c
+++ b/calendar/libedata-cal/e-data-cal-factory.c
@@ -468,6 +468,13 @@ e_data_cal_factory_class_init (EDataCalFactoryClass *class)
 	GObjectClass *object_class;
 	EDBusServerClass *dbus_server_class;
 	EDataFactoryClass *data_factory_class;
+	const gchar *modules_directory = BACKENDDIR;
+	const gchar *modules_directory_env;
+
+	modules_directory_env = g_getenv (EDS_CALENDAR_MODULES);
+	if (modules_directory_env &&
+	    g_file_test (modules_directory_env, G_FILE_TEST_IS_DIR))
+		modules_directory = g_strdup (modules_directory_env);
 
 	g_type_class_add_private (class, sizeof (EDataCalFactoryPrivate));
 
@@ -478,7 +485,7 @@ e_data_cal_factory_class_init (EDataCalFactoryClass *class)
 
 	dbus_server_class = E_DBUS_SERVER_CLASS (class);
 	dbus_server_class->bus_name = CALENDAR_DBUS_SERVICE_NAME;
-	dbus_server_class->module_directory = BACKENDDIR;
+	dbus_server_class->module_directory = modules_directory;
 	dbus_server_class->bus_acquired = data_cal_factory_bus_acquired;
 	dbus_server_class->bus_name_lost = data_cal_factory_bus_name_lost;
 	dbus_server_class->quit_server = data_cal_factory_quit_server;
diff --git a/calendar/libedata-cal/e-data-cal-factory.h b/calendar/libedata-cal/e-data-cal-factory.h
index 92ad3be..e48f4b9 100644
--- a/calendar/libedata-cal/e-data-cal-factory.h
+++ b/calendar/libedata-cal/e-data-cal-factory.h
@@ -47,6 +47,14 @@
 	(G_TYPE_INSTANCE_GET_CLASS \
 	((obj), E_TYPE_DATA_CAL_FACTORY, EDataCalFactoryClass))
 
+/**
+ * EDS_CALENDAR_MODULES:
+ *
+ * This environment variable configures where the calendar
+ * factory loads it's backend modules from.
+ */
+#define EDS_CALENDAR_MODULES    "EDS_CALENDAR_MODULES"
+
 G_BEGIN_DECLS
 
 typedef struct _EDataCalFactory EDataCalFactory;



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