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