[Gnucash-changes] r14206 - gnucash/trunk - force-exit gnucash if a required library can't be loaded.

Derek Atkins warlord at cvs.gnucash.org
Fri May 26 15:45:27 EDT 2006


Author: warlord
Date: 2006-05-26 15:45:26 -0400 (Fri, 26 May 2006)
New Revision: 14206
Trac: http://svn.gnucash.org/trac/changeset/14206

Modified:
   gnucash/trunk/ChangeLog
   gnucash/trunk/src/engine/gnc-engine.c
Log:
force-exit gnucash if a required library can't be loaded.



Modified: gnucash/trunk/ChangeLog
===================================================================
--- gnucash/trunk/ChangeLog	2006-05-26 15:41:38 UTC (rev 14205)
+++ gnucash/trunk/ChangeLog	2006-05-26 19:45:26 UTC (rev 14206)
@@ -2,6 +2,9 @@
 
 	* src/engine/gnc-engine.c: load the qsf backend from the right place.
 
+	* src/engine/gnc-engine.c:
+	  force-exit gnucash if a required library can't be loaded.
+
 2006-05-26   Christian Stimming <stimming at tuhh.de>
 
 	* src/import-export/hbci/druid-hbci-initial.c: Simplify calling

Modified: gnucash/trunk/src/engine/gnc-engine.c
===================================================================
--- gnucash/trunk/src/engine/gnc-engine.c	2006-05-26 15:41:38 UTC (rev 14205)
+++ gnucash/trunk/src/engine/gnc-engine.c	2006-05-26 19:45:26 UTC (rev 14206)
@@ -78,12 +78,13 @@
   static struct {
     const gchar* dir;
     const gchar* lib;
+    gboolean required;
   } libs[] = {
-    { QOF_LIB_DIR, QSF_BACKEND_LIB },
-    { GNC_LIBDIR, GNC_LIB_NAME },
+    { QOF_LIB_DIR, QSF_BACKEND_LIB, FALSE },
+    { GNC_LIBDIR, GNC_LIB_NAME, TRUE },
     /* shouldn't the PG gnc-module do this instead of US doing it? */
-    { GNC_LIBDIR, "gnc-backend-postgres" },
-    { NULL, NULL } }, *lib;
+    { GNC_LIBDIR, "gnc-backend-postgres", FALSE },
+    { NULL, NULL, FALSE } }, *lib;
   gnc_engine_init_hook_t hook;
   GList * cur;
 
@@ -103,11 +104,23 @@
   /* Now register our core types */
   cashobjects_register();
 
-  for (lib = libs; lib->dir && lib->lib ; lib++) {
+  for (lib = libs; lib->dir && lib->lib ; lib++)
+  {
       if (qof_load_backend_library(lib->dir, lib->lib))
+      {
           engine_is_initialized = 1;
+      }
       else
-          g_message("failed to load %s from %s", lib->lib, lib->dir);
+      {
+          g_message("failed to load %s from %s\n", lib->lib, lib->dir);
+	  /* If this is a required library, stop now! */
+	  if (lib->required)
+	  {
+	      g_message("required library %s not found.  Exiting.\n",
+			lib->lib);  
+	      g_assert(FALSE);
+	  }
+      }
   }
 
   /* call any engine hooks */



More information about the gnucash-changes mailing list