r18863 - gnucash/trunk/src - Add variant of gnc_engine_init which is suitable for statically the linked-in library.
Christian Stimming
cstim at code.gnucash.org
Sun Mar 7 07:54:34 EST 2010
Author: cstim
Date: 2010-03-07 07:54:33 -0500 (Sun, 07 Mar 2010)
New Revision: 18863
Trac: http://svn.gnucash.org/trac/changeset/18863
Modified:
gnucash/trunk/src/engine/gnc-engine.c
gnucash/trunk/src/engine/gnc-engine.h
gnucash/trunk/src/gnc/main.cpp
Log:
Add variant of gnc_engine_init which is suitable for statically the linked-in library.
Modified: gnucash/trunk/src/engine/gnc-engine.c
===================================================================
--- gnucash/trunk/src/engine/gnc-engine.c 2010-03-07 11:21:26 UTC (rev 18862)
+++ gnucash/trunk/src/engine/gnc-engine.c 2010-03-07 12:54:33 UTC (rev 18863)
@@ -72,9 +72,23 @@
* initialize backend, load any necessary databases, etc.
********************************************************************/
-void
-gnc_engine_init(int argc, char ** argv)
+static void
+gnc_engine_init_part1()
{
+ if (1 == engine_is_initialized) return;
+
+ /* initialize QOF */
+ qof_init();
+ qof_set_alt_dirty_mode(TRUE);
+
+ /* Now register our core types */
+ cashobjects_register();
+}
+
+static void
+gnc_engine_init_part2()
+{
+ gchar *pkglibdir = gnc_path_get_pkglibdir ();
static struct
{
const gchar* lib;
@@ -87,20 +101,7 @@
{ "gncmod-backend-xml", TRUE },
{ NULL, FALSE }
}, *lib;
- gnc_engine_init_hook_t hook;
- GList * cur;
- gchar *pkglibdir;
- if (1 == engine_is_initialized) return;
-
- /* initialize QOF */
- qof_init();
- qof_set_alt_dirty_mode(TRUE);
-
- /* Now register our core types */
- cashobjects_register();
-
- pkglibdir = gnc_path_get_pkglibdir ();
for (lib = libs; lib->lib ; lib++)
{
if (qof_load_backend_library(pkglibdir, lib->lib))
@@ -118,17 +119,38 @@
}
}
g_free (pkglibdir);
+}
+static void
+gnc_engine_init_part3(int argc, char ** argv)
+{
+ GList * cur;
/* call any engine hooks */
for (cur = engine_init_hooks; cur; cur = cur->next)
{
- hook = (gnc_engine_init_hook_t)cur->data;
+ gnc_engine_init_hook_t hook = (gnc_engine_init_hook_t)cur->data;
if (hook)
(*hook)(argc, argv);
}
}
+void
+gnc_engine_init(int argc, char ** argv)
+{
+ gnc_engine_init_part1();
+ gnc_engine_init_part2();
+ gnc_engine_init_part3(argc, argv);
+}
+
+void
+gnc_engine_init_static(int argc, char ** argv)
+{
+ gnc_engine_init_part1();
+ gnc_engine_init_part3(argc, argv);
+}
+
+
/********************************************************************
* gnc_engine_shutdown
* shutdown backend, destroy any global data, etc.
Modified: gnucash/trunk/src/engine/gnc-engine.h
===================================================================
--- gnucash/trunk/src/engine/gnc-engine.h 2010-03-07 11:21:26 UTC (rev 18862)
+++ gnucash/trunk/src/engine/gnc-engine.h 2010-03-07 12:54:33 UTC (rev 18863)
@@ -231,6 +231,13 @@
* method that does not require Guile. */
void gnc_engine_init(int argc, char ** argv);
+/** This is the statically linked-in version of gnc_engine_init. It is
+ * identically to that function except that it doesn't load the
+ * loadable shared module, which means this function will not load the
+ * "(gnucash engine)" scheme module.
+ */
+void gnc_engine_init_static(int argc, char ** argv);
+
/** Called to shutdown the engine, see also ::qof_close
* for use without Guile. */
void gnc_engine_shutdown (void);
Modified: gnucash/trunk/src/gnc/main.cpp
===================================================================
--- gnucash/trunk/src/gnc/main.cpp 2010-03-07 11:21:26 UTC (rev 18862)
+++ gnucash/trunk/src/gnc/main.cpp 2010-03-07 12:54:33 UTC (rev 18863)
@@ -175,7 +175,7 @@
qof_init();
gnc_module_system_init();
- gnc_engine_init(argc, argv);
+ gnc_engine_init_static(argc, argv);
// Call the statically-linked versions of the backend init
// functions
More information about the gnucash-changes
mailing list