r16141 - gnucash/trunk/lib/libqof/qof - Check for QOF_LIB_DIR environment variable and try to load qof backends from there first.

Andreas Köhler andi5 at cvs.gnucash.org
Fri Jun 1 18:44:35 EDT 2007


Author: andi5
Date: 2007-06-01 18:44:33 -0400 (Fri, 01 Jun 2007)
New Revision: 16141
Trac: http://svn.gnucash.org/trac/changeset/16141

Modified:
   gnucash/trunk/lib/libqof/qof/qofsession.c
Log:
Check for QOF_LIB_DIR environment variable and try to load qof backends from there first.
    
This is a minimally invasive way to make qof backends relocatable and
needed for the Windows port.  Avoiding qofla-dir.h completely is
probably desirable anyway.


Modified: gnucash/trunk/lib/libqof/qof/qofsession.c
===================================================================
--- gnucash/trunk/lib/libqof/qof/qofsession.c	2007-05-30 20:02:41 UTC (rev 16140)
+++ gnucash/trunk/lib/libqof/qof/qofsession.c	2007-06-01 22:44:33 UTC (rev 16141)
@@ -871,20 +871,34 @@
 	gint num;
 	gboolean prov_type;
 	gboolean (*type_check) (const char*);
-	
+	gchar *libdir_from_env = NULL;
+
 	ENTER (" list=%d, initted=%s", g_slist_length(provider_list),
 	       qof_providers_initialized ? "true" : "false");
 	prov_type = FALSE;
 	if (!qof_providers_initialized)
 	{
+		libdir_from_env = g_strdup(g_getenv("QOF_LIB_DIR"));
 		for (num = 0; backend_list[num].filename != NULL; num++) {
-			if(!qof_load_backend_library(backend_list[num].libdir,
-				backend_list[num].filename))
-			{
-				PWARN (" failed to load %s from %s",
-				backend_list[num].filename, backend_list[num].libdir);
+			if (libdir_from_env) {
+				if (!(qof_load_backend_library(libdir_from_env,
+											   backend_list[num].filename)
+					  || qof_load_backend_library(backend_list[num].libdir,
+												  backend_list[num].filename)))
+				{
+					PWARN (" failed to load %s from %s or %s",
+						   backend_list[num].filename, libdir_from_env,
+						   backend_list[num].libdir);
+				}
+			} else {
+				if (!qof_load_backend_library(backend_list[num].libdir,
+											  backend_list[num].filename)) {
+					PWARN (" failed to load %s from %s",
+						   backend_list[num].filename, backend_list[num].libdir);
+				}
 			}
 		}
+		g_free(libdir_from_env);
 		qof_providers_initialized = TRUE;
 	}
 	p = provider_list;



More information about the gnucash-changes mailing list