[Gnucash-changes] r14165 - gnucash/branches/misc-backend - Decrease coupling between backends and engine:

Chris Shoemaker chris at cvs.gnucash.org
Tue May 23 23:21:10 EDT 2006


Author: chris
Date: 2006-05-23 23:21:09 -0400 (Tue, 23 May 2006)
New Revision: 14165
Trac: http://svn.gnucash.org/trac/changeset/14165

Modified:
   gnucash/branches/misc-backend/lib/libqof/backend/file/qsf-backend.c
   gnucash/branches/misc-backend/lib/libqof/qof/qofbackend-p.h
   gnucash/branches/misc-backend/lib/libqof/qof/qofbackend.c
   gnucash/branches/misc-backend/lib/libqof/qof/qofbackend.h
   gnucash/branches/misc-backend/lib/libqof/qof/qofsession-p.h
   gnucash/branches/misc-backend/lib/libqof/qof/qofsession.c
   gnucash/branches/misc-backend/lib/libqof/qof/qofsession.h
   gnucash/branches/misc-backend/lib/libqof/qof/qofutil.c
   gnucash/branches/misc-backend/lib/libqof/qof/qofutil.h
   gnucash/branches/misc-backend/src/backend/file/gnc-backend-file.c
   gnucash/branches/misc-backend/src/backend/file/gnc-backend-file.h
   gnucash/branches/misc-backend/src/backend/file/test/test-load-backend.c
   gnucash/branches/misc-backend/src/backend/file/test/test-load-xml2.c
   gnucash/branches/misc-backend/src/backend/postgres/PostgresBackend.c
   gnucash/branches/misc-backend/src/backend/postgres/PostgresBackend.h
   gnucash/branches/misc-backend/src/backend/postgres/test/test-db.c
   gnucash/branches/misc-backend/src/backend/postgres/test/test-load-backend.c
   gnucash/branches/misc-backend/src/backend/postgres/test/test-period.c
   gnucash/branches/misc-backend/src/engine/Period.c
   gnucash/branches/misc-backend/src/engine/Transaction.c
   gnucash/branches/misc-backend/src/engine/gnc-engine.c
   gnucash/branches/misc-backend/src/engine/gnc-engine.h
   gnucash/branches/misc-backend/src/engine/gnc-pricedb.c
   gnucash/branches/misc-backend/src/engine/gnc-session-scm.c
   gnucash/branches/misc-backend/src/engine/gnc-session-scm.h
   gnucash/branches/misc-backend/src/engine/gw-engine-spec.scm
Log:
   Decrease coupling between backends and engine:
   - do not include the (supposedly) private qofbackend-p.h in qofutil.h,
       instead, include it explictly in only the places that need it.
   - since backends are GModules, use the GModule module init hook, instead 
       of rolling our own and using a different function for each backend
   - loop over a list of backends for the engine to try to load 
   - include the postgres backend in that list of backends
   - move qof_session_export() from gnc-engine.c to qofsession.c
   - publicize qof_backend_set_error() and qof_backend_get_error()
   - privatize QofBookFileType to gnc-backend-file.c

   Incidental:
   - Plug a string leak in qofsession.c
   - drop the unused gnc_session_scm_export code
   - Drop unimplemented prototype gncBackendInit_file()
   - Formatting cleanups.



Modified: gnucash/branches/misc-backend/lib/libqof/backend/file/qsf-backend.c
===================================================================
--- gnucash/branches/misc-backend/lib/libqof/backend/file/qsf-backend.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/lib/libqof/backend/file/qsf-backend.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -24,6 +24,7 @@
 #include "config.h"
 #include <glib.h>
 #include "qof.h"
+#include "qofbackend-p.h"
 #include "qof-backend-qsf.h"
 #include <libxml/xmlmemory.h>
 #include <libxml/tree.h>

Modified: gnucash/branches/misc-backend/lib/libqof/qof/qofbackend-p.h
===================================================================
--- gnucash/branches/misc-backend/lib/libqof/qof/qofbackend-p.h	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/lib/libqof/qof/qofbackend-p.h	2006-05-24 03:21:09 UTC (rev 14165)
@@ -182,7 +182,7 @@
  *    pointer to the second book, where the results of the query
  *    should go.
  *
- *    Cann the book commit() to complete the book partitioning.
+ *    Call the book commit() to complete the book partitioning.
  *
  *    After the begin(), there will be a call to run_query(), followed
  *    probably by a string of object calls, and completed by commit().  
@@ -367,15 +367,6 @@
  */
 void qof_backend_register_provider (QofBackendProvider *);
 
-/** The qof_backend_set_error() routine pushes an error code onto the error
- *  stack. (FIXME: the stack is 1 deep in current implementation).
- */
-void qof_backend_set_error (QofBackend *be, QofBackendError err);
-
-/** The qof_backend_get_error() routine pops an error code off the error stack.
- */
-QofBackendError qof_backend_get_error (QofBackend *be);
-
 /** The qof_backend_set_message() assigns a string to the backend error message.
  */
 void qof_backend_set_message(QofBackend *be, const char *format, ...);

Modified: gnucash/branches/misc-backend/lib/libqof/qof/qofbackend.c
===================================================================
--- gnucash/branches/misc-backend/lib/libqof/qof/qofbackend.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/lib/libqof/qof/qofbackend.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -128,7 +128,7 @@
     be->run_query = NULL;
 
     be->sync = NULL;
-	be->load_config = NULL;
+    be->load_config = NULL;
 
     be->events_pending = NULL;
     be->process_events = NULL;
@@ -137,11 +137,11 @@
     if (be->error_msg) g_free (be->error_msg);
     be->error_msg = NULL;
     be->percentage = NULL;
-	be->backend_configuration = kvp_frame_new();
-	
-	/* to be removed */
-	be->price_lookup = NULL;
-	be->export = NULL;
+    be->backend_configuration = kvp_frame_new();
+
+    /* to be removed */
+    be->price_lookup = NULL;
+    be->export = NULL;
 }
 
 void
@@ -384,30 +384,19 @@
 }
 
 gboolean
-qof_load_backend_library (const char *directory, 
-				const char* filename, const char* init_fcn)
+qof_load_backend_library (const char *directory, const char* module_name)
 {
 	gchar *fullpath;
-	typedef void (* backend_init) (void);
 	GModule *backend;
-	backend_init gmod_init;
-	gpointer g;
 
 	g_return_val_if_fail(g_module_supported(), FALSE);
-	fullpath = g_module_build_path(directory, filename);
+	fullpath = g_module_build_path(directory, module_name);
 	backend = g_module_open(fullpath, G_MODULE_BIND_LAZY);
-	if(!backend) { 
+	if (!backend) { 
 		g_message ("%s: %s\n", PACKAGE, g_module_error ());
 		return FALSE;
 	}
-	g = &gmod_init;
-	if (!g_module_symbol (backend, init_fcn, g))
-	{
-		g_message ("%s: %s\n", PACKAGE, g_module_error ());
-		return FALSE;
-	}
 	g_module_make_resident(backend);
-	gmod_init();
 	return TRUE;
 }
 

Modified: gnucash/branches/misc-backend/lib/libqof/qof/qofbackend.h
===================================================================
--- gnucash/branches/misc-backend/lib/libqof/qof/qofbackend.h	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/lib/libqof/qof/qofbackend.h	2006-05-24 03:21:09 UTC (rev 14165)
@@ -177,6 +177,15 @@
 gboolean qof_backend_commit_exists(QofBackend *be);
 //@}
 
+/** The qof_backend_set_error() routine pushes an error code onto the error
+ *  stack. (FIXME: the stack is 1 deep in current implementation).
+ */
+void qof_backend_set_error (QofBackend *be, QofBackendError err);
+
+/** The qof_backend_get_error() routine pops an error code off the error stack.
+ */
+QofBackendError qof_backend_get_error (QofBackend *be);
+
 /** @name Backend Configuration using KVP
 
 The backend uses qof_backend_get_config to pass back a KvpFrame of QofBackendOption
@@ -254,16 +263,14 @@
 /** \brief Load a QOF-compatible backend shared library.
 
 \param directory Can be NULL if filename is a complete path.
-\param filename  Name of the .la file that describes the
+\param module_name  Name of the .la file that describes the
 	shared library. This provides platform independence,
 	courtesy of libtool.
-\param init_fcn  The QofBackendProvider init function.
 
 \return FALSE in case or error, otherwise TRUE.
 */
 gboolean
-qof_load_backend_library (const gchar *directory, 
-			const gchar* filename, const gchar* init_fcn);
+qof_load_backend_library(const gchar *directory, const gchar* module_name);
 
 /** \brief Retrieve the backend used by this book */
 QofBackend* qof_book_get_backend (QofBook *book);

Modified: gnucash/branches/misc-backend/lib/libqof/qof/qofsession-p.h
===================================================================
--- gnucash/branches/misc-backend/lib/libqof/qof/qofsession-p.h	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/lib/libqof/qof/qofsession-p.h	2006-05-24 03:21:09 UTC (rev 14165)
@@ -70,7 +70,4 @@
 
 void qof_session_push_error (QofSession *session, QofBackendError err,
                              const char *message);
-
-QofBackend* gncBackendInit_file(const char *book_id, void *data);
-
 #endif

Modified: gnucash/branches/misc-backend/lib/libqof/qof/qofsession.c
===================================================================
--- gnucash/branches/misc-backend/lib/libqof/qof/qofsession.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/lib/libqof/qof/qofsession.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -876,11 +876,10 @@
 	{
 		for (num = 0; backend_list[num].filename != NULL; num++) {
 			if(!qof_load_backend_library(backend_list[num].libdir,
-				backend_list[num].filename, backend_list[num].init_fcn))
+				backend_list[num].filename))
 			{
-				PWARN (" failed to load %s from %s using %s",
-				backend_list[num].filename, backend_list[num].libdir,
-				backend_list[num].init_fcn);
+				PWARN (" failed to load %s from %s",
+				backend_list[num].filename, backend_list[num].libdir);
 			}
 		}
 	}
@@ -894,13 +893,14 @@
 			/* More than one backend could provide this
 			access method, check file type compatibility. */
 			type_check = (gboolean (*)(const char*)) prov->check_data_type;
-			prov_type = (type_check)(session->book_id);
-			if(!prov_type)
-			{
+			if (type_check) {
+                            prov_type = (type_check)(session->book_id);
+                            if (!prov_type) {
 				PINFO(" %s not usable", prov->provider_name);
 				p = p->next;
 				continue;
-			}
+                            }
+                        }
 			PINFO (" selected %s", prov->provider_name);
 			if (NULL == prov->backend_new) 
 			{
@@ -985,12 +985,12 @@
     return;
   }
 
+  /* destroy the old backend */
+  qof_session_destroy_backend(session);
+
   /* Store the session URL  */
   session->book_id = g_strdup (book_id);
 
-  /* destroy the old backend */
-  qof_session_destroy_backend(session);
-
   /* Look for something of the form of "file:/", "http://" or 
    * "postgres://". Everything before the colon is the access 
    * method.  Load the first backend found for that access method.
@@ -1000,7 +1000,7 @@
   {
     access_method = g_strdup (book_id);
     p = strchr (access_method, ':');
-    *p = 0;
+    *p = '\0';
     qof_session_load_backend(session, access_method);
     g_free (access_method);
   }
@@ -1013,6 +1013,8 @@
   /* No backend was found. That's bad. */
   if (NULL == session->backend)
   {
+    g_free(session->book_id);
+    session->book_id = NULL;
     qof_session_push_error (session, ERR_BACKEND_BAD_URL, NULL);
     LEAVE (" BAD: no backend: sess=%p book-id=%s", 
          session,  book_id ? book_id : "(null)");
@@ -1207,7 +1209,7 @@
 		{
 			for (num = 0; backend_list[num].filename != NULL; num++) {
 				qof_load_backend_library(backend_list[num].libdir,
-					backend_list[num].filename, backend_list[num].init_fcn);
+					backend_list[num].filename);
 			}
 		}
 		p = g_slist_copy(provider_list);
@@ -1418,4 +1420,45 @@
   return session->backend->process_events (session->backend);
 }
 
+/* XXX This exports the list of accounts to a file.  It does not
+ * export any transactions.  It's a place-holder until full
+ * book-closing is implemented.
+ */
+gboolean
+qof_session_export (QofSession *tmp_session,
+                    QofSession *real_session,
+                    QofPercentageFunc percentage_func)
+{
+  QofBook *book, *book2;
+  QofBackend *be;
+
+  if ((!tmp_session) || (!real_session)) return FALSE;
+
+  book = qof_session_get_book (real_session);
+  ENTER ("tmp_session=%p real_session=%p book=%p book_id=%s", 
+         tmp_session, real_session, book,
+         qof_session_get_url(tmp_session)
+         ? qof_session_get_url(tmp_session) : "(null)");
+
+  /* There must be a backend or else.  (It should always be the file
+   * backend too.)
+   */
+  book2 = qof_session_get_book(tmp_session);
+  be = qof_book_get_backend(book2);
+  if (!be)
+    return FALSE;
+
+  be->percentage = percentage_func;
+  if (be->export) {
+      int err;
+
+      (be->export)(be, book);
+      err = qof_backend_get_error(be);
+    
+      if (ERR_BACKEND_NO_ERR != err) { return FALSE; }
+  }
+
+  return TRUE;
+}
+
 /* =================== END OF FILE ====================================== */

Modified: gnucash/branches/misc-backend/lib/libqof/qof/qofsession.h
===================================================================
--- gnucash/branches/misc-backend/lib/libqof/qof/qofsession.h	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/lib/libqof/qof/qofsession.h	2006-05-24 03:21:09 UTC (rev 14165)
@@ -431,5 +431,9 @@
  *  @param session A pointer to the session being closed. */
 void qof_session_call_close_hooks (QofSession *session);
 
+gboolean qof_session_export (QofSession *tmp_session,
+                             QofSession *real_session,
+                             QofPercentageFunc percentage_func);
+
 #endif /* QOF_SESSION_H */
 /** @} */

Modified: gnucash/branches/misc-backend/lib/libqof/qof/qofutil.c
===================================================================
--- gnucash/branches/misc-backend/lib/libqof/qof/qofutil.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/lib/libqof/qof/qofutil.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -32,6 +32,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include "qof.h"
+#include "qofbackend-p.h"
 
 static QofLogModule log_module = QOF_MOD_UTIL;
 

Modified: gnucash/branches/misc-backend/lib/libqof/qof/qofutil.h
===================================================================
--- gnucash/branches/misc-backend/lib/libqof/qof/qofutil.h	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/lib/libqof/qof/qofutil.h	2006-05-24 03:21:09 UTC (rev 14165)
@@ -36,7 +36,8 @@
 #include "qof.h"
 #include "qoflog.h"
 #include "qofutil.h"
-#include "qofbackend-p.h"
+#include "qofbackend.h"
+#include "qofclass.h"
 #include "qofbook.h"
 #include "qofinstance.h"
 

Modified: gnucash/branches/misc-backend/src/backend/file/gnc-backend-file.c
===================================================================
--- gnucash/branches/misc-backend/src/backend/file/gnc-backend-file.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/backend/file/gnc-backend-file.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -66,6 +66,18 @@
 
 static QofLogModule log_module = GNC_MOD_BACKEND;
 
+typedef enum 
+{
+    GNC_BOOK_NOT_OURS,
+    GNC_BOOK_BIN_FILE,
+    GNC_BOOK_XML1_FILE,
+    GNC_BOOK_XML2_FILE,
+    GNC_BOOK_XML2_FILE_NO_ENCODING,
+    QSF_GNC_OBJECT,
+    QSF_OBJECT,
+    QSF_MAP,
+} QofBookFileType;
+
 /* ================================================================= */
 
 static gboolean
@@ -1024,8 +1036,8 @@
         g_free (prov);
 }
 
-void
-gnc_provider_init(void)
+G_MODULE_EXPORT const gchar *
+g_module_check_init(GModule *module)
 {
 	QofBackendProvider *prov;
 #ifdef ENABLE_NLS
@@ -1042,6 +1054,7 @@
         prov->provider_free = gnc_provider_free;
 	prov->check_data_type = gnc_determine_file_type;
         qof_backend_register_provider (prov);
+        return NULL;
 }
 
 /* ========================== END OF FILE ===================== */

Modified: gnucash/branches/misc-backend/src/backend/file/gnc-backend-file.h
===================================================================
--- gnucash/branches/misc-backend/src/backend/file/gnc-backend-file.h	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/backend/file/gnc-backend-file.h	2006-05-24 03:21:09 UTC (rev 14165)
@@ -32,7 +32,9 @@
 #define GNC_BACKEND_FILE_H_
 
 #include "qof.h"
+#include <gmodule.h>
 
+#include "qofbackend-p.h"
 struct FileBackend_struct
 {
   QofBackend be;
@@ -51,20 +53,9 @@
 
 typedef struct FileBackend_struct FileBackend;
 
-typedef enum 
-{
-    GNC_BOOK_NOT_OURS,
-    GNC_BOOK_BIN_FILE,
-    GNC_BOOK_XML1_FILE,
-    GNC_BOOK_XML2_FILE,
-    GNC_BOOK_XML2_FILE_NO_ENCODING,
-    QSF_GNC_OBJECT,
-    QSF_OBJECT,
-    QSF_MAP,
-} QofBookFileType;
-
 QofBackend * libgncmod_backend_file_LTX_gnc_backend_new(void);
 
-void gnc_provider_init(void);
+G_MODULE_EXPORT const gchar *
+g_module_check_init(GModule *module);
 
 #endif /* GNC_BACKEND_FILE_H_ */

Modified: gnucash/branches/misc-backend/src/backend/file/test/test-load-backend.c
===================================================================
--- gnucash/branches/misc-backend/src/backend/file/test/test-load-backend.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/backend/file/test/test-load-backend.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -29,17 +29,16 @@
 #include "cashobjects.h"
 #include "test-stuff.h"
 
-#define GNC_LIB_NAME "libgnc-backend-file.la"
-#define GNC_LIB_INIT "gnc_provider_init"
+#define GNC_LIB_NAME "gnc-backend-file"
 
 int main (int argc, char ** argv)
 {
-	qof_init();
-	cashobjects_register();
-	do_test(
-		qof_load_backend_library ("../", GNC_LIB_NAME, GNC_LIB_INIT),
-		" loading gnc-backend-file GModule failed");
+    qof_init();
+    cashobjects_register();
+    do_test(
+        qof_load_backend_library ("../", GNC_LIB_NAME),
+        " loading gnc-backend-file GModule failed");
     print_test_results();
-	qof_close();
-	return 0;
+    qof_close();
+    return 0;
 }

Modified: gnucash/branches/misc-backend/src/backend/file/test/test-load-xml2.c
===================================================================
--- gnucash/branches/misc-backend/src/backend/file/test/test-load-xml2.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/backend/file/test/test-load-xml2.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -47,8 +47,7 @@
 #include "test-engine-stuff.h"
 #include "test-file-stuff.h"
 
-#define GNC_LIB_NAME "libgnc-backend-file.la"
-#define GNC_LIB_INIT "gnc_provider_init"
+#define GNC_LIB_NAME "gnc-backend-file"
 
 static void
 remove_files_pattern(const char *begining, const char *ending)
@@ -112,8 +111,7 @@
     g_type_init();
     qof_init();
     cashobjects_register();
-    do_test(
-            qof_load_backend_library ("../", GNC_LIB_NAME, GNC_LIB_INIT),
+    do_test(qof_load_backend_library ("../", GNC_LIB_NAME),
             " loading gnc-backend-file GModule failed");
 
     if (!location)

Modified: gnucash/branches/misc-backend/src/backend/postgres/PostgresBackend.c
===================================================================
--- gnucash/branches/misc-backend/src/backend/postgres/PostgresBackend.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/backend/postgres/PostgresBackend.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -2542,7 +2542,8 @@
         g_free (prov);
 }
 
-void pgend_provider_init(void)
+G_MODULE_EXPORT const gchar *
+g_module_check_init(GModule *module)
 {
 	QofBackendProvider *prov;
 
@@ -2554,6 +2555,7 @@
 	prov->provider_free = pg_provider_free;
 	prov->check_data_type = NULL;
 	qof_backend_register_provider (prov);
+	return NULL;
 }
 
 /* ======================== END OF FILE ======================== */

Modified: gnucash/branches/misc-backend/src/backend/postgres/PostgresBackend.h
===================================================================
--- gnucash/branches/misc-backend/src/backend/postgres/PostgresBackend.h	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/backend/postgres/PostgresBackend.h	2006-05-24 03:21:09 UTC (rev 14165)
@@ -34,6 +34,7 @@
 #ifndef POSTGRES_BACKEND_H
 #define POSTGRES_BACKEND_H
 
+#include <gmodule.h>
 #include <libpq-fe.h>
 
 #include "Group.h"
@@ -57,6 +58,7 @@
 
 #define MAX_VERSION_AGE 10
 
+#include "qofbackend-p.h"
 struct _pgend {
    QofBackend be;
 
@@ -132,6 +134,7 @@
 void pgendDisable (PGBackend *be);
 void pgendEnable (PGBackend *be);
 
-void pgend_provider_init(void);
+G_MODULE_EXPORT const gchar *
+g_module_check_init(GModule *module);
 
 #endif /* POSTGRES_BACKEND_H */

Modified: gnucash/branches/misc-backend/src/backend/postgres/test/test-db.c
===================================================================
--- gnucash/branches/misc-backend/src/backend/postgres/test/test-db.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/backend/postgres/test/test-db.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -32,8 +32,7 @@
 #include "test-stuff.h"
 #include "test-engine-stuff.h"
 
-#define PG_LIB_NAME "libgnc-backend-postgres.la"
-#define PG_LIB_INIT "pgend_provider_init"
+#define PG_LIB_NAME "gnc-backend-postgres"
 
 static QofLogModule log_module = GNC_MOD_TEST;
 
@@ -1095,9 +1094,8 @@
     DbInfo *dbinfo;
     
     qof_init();
-    do_test(
-	qof_load_backend_library (QOF_LIB_DIR, PG_LIB_NAME, PG_LIB_INIT),
-	" loading gnc-backend-postgres GModule failed");
+    do_test(qof_load_backend_library (QOF_LIB_DIR, PG_LIB_NAME),
+            " loading gnc-backend-postgres GModule failed");
 
     dbinfo = g_new0(DbInfo, 1);
     

Modified: gnucash/branches/misc-backend/src/backend/postgres/test/test-load-backend.c
===================================================================
--- gnucash/branches/misc-backend/src/backend/postgres/test/test-load-backend.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/backend/postgres/test/test-load-backend.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -29,8 +29,7 @@
 #include "cashobjects.h"
 #include "test-stuff.h"
 
-#define PG_LIB_NAME "libgnc-backend-postgres.la"
-#define PG_LIB_INIT "pgend_provider_init"
+#define PG_LIB_NAME "gnc-backend-postgres"
 
 int main (int argc, char ** argv)
 {
@@ -38,8 +37,7 @@
 	cashobjects_register();
 	/* the test needs to run locally in case make install
 	 * has not yet been run. Use GNC_LIBDIR usually. */
-	do_test(
-		qof_load_backend_library ("../", PG_LIB_NAME, PG_LIB_INIT),
+	do_test(qof_load_backend_library ("../", PG_LIB_NAME),
 		" loading gnc-backend-postgres GModule failed");
 	print_test_results();
 	qof_close();

Modified: gnucash/branches/misc-backend/src/backend/postgres/test/test-period.c
===================================================================
--- gnucash/branches/misc-backend/src/backend/postgres/test/test-period.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/backend/postgres/test/test-period.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -35,7 +35,6 @@
 #include "Transaction.h"
 
 #define PG_LIB_NAME "libgnc-backend-postgres.la"
-#define PG_LIB_INIT "pgend_provider_init"
 
 static void
 run_test (void)
@@ -52,9 +51,8 @@
   Timespec tsfirst, tslast, tsmiddle;
   char * test_url;
   
-  do_test( qof_load_backend_library (QOF_LIB_DIR, 
-			PG_LIB_NAME, PG_LIB_INIT),
-			" loading gnc-backend-postgres GModule failed");
+  do_test(qof_load_backend_library (QOF_LIB_DIR, PG_LIB_NAME),
+          " loading gnc-backend-postgres GModule failed");
 
   session = get_random_session ();
 

Modified: gnucash/branches/misc-backend/src/engine/Period.c
===================================================================
--- gnucash/branches/misc-backend/src/engine/Period.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/engine/Period.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -801,23 +801,27 @@
 static void 
 period_begin_edit (QofBook *src_book, QofBook *dest_book)
 {
+    /*
    QofBackend *be;
    be = qof_book_get_backend(src_book);
    if (be && be->begin)
    {
       // (*be->begin)(be, GNC_ID_PERIOD, dest_book);
    }
+    */
 }
    
 static void 
 period_commit_edit (QofBook *src_book, QofBook *dest_book)
 {
+    /*
    QofBackend *be;
    be = qof_book_get_backend(src_book);
    if (be && be->commit)
    {
       // (*be->commit)(be, GNC_ID_PERIOD, dest_book);
    }
+    */
 }
 
 /* ================================================================ */

Modified: gnucash/branches/misc-backend/src/engine/Transaction.c
===================================================================
--- gnucash/branches/misc-backend/src/engine/Transaction.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/engine/Transaction.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -48,6 +48,7 @@
 #include "gnc-lot.h"
 #include "gnc-event.h"
 
+#include "qofbackend-p.h"
 
 /* Notes about xaccTransBeginEdit(), xaccTransCommitEdit(), and
  *  xaccTransRollback():

Modified: gnucash/branches/misc-backend/src/engine/gnc-engine.c
===================================================================
--- gnucash/branches/misc-backend/src/engine/gnc-engine.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/engine/gnc-engine.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -1,5 +1,5 @@
 /********************************************************************
- * gnc-engine.c  -- top-level initialization for Gnucash Engine     *
+ * gnc-engine.c  -- top-level initialization for GnuCash Engine     *
  * Copyright 2000 Bill Gribble <grib at billgribble.com>               *
  *                                                                  *
  * This program is free software; you can redistribute it and/or    *
@@ -39,15 +39,14 @@
 #include "gnc-pricedb-p.h"
 
 /** gnc file backend library name */
-#define GNC_LIB_NAME "libgnc-backend-file"
-/** init_fcn for gnc file backend library. */
-#define GNC_LIB_INIT "gnc_provider_init"
+#define GNC_LIB_NAME "gnc-backend-file"
+
 /* gnc-backend-file location */
 #include "gncla-dir.h"
 
 static GList * engine_init_hooks = NULL;
 static int engine_is_initialized = 0;
-static QofLogModule log_module = GNC_MOD_ENGINE;
+//static QofLogModule log_module = GNC_MOD_ENGINE;
 
 /* GnuCash version functions */
 unsigned int
@@ -76,15 +75,18 @@
 void 
 gnc_engine_init(int argc, char ** argv)
 {
+  static gchar *names[] = {
+      GNC_LIB_NAME, QSF_BACKEND_LIB, "gnc-backend-postgres", 
+      NULL};
+  gchar **np;
   gnc_engine_init_hook_t hook;
-  GList                  * cur;
+  GList * cur;
 
   if (1 == engine_is_initialized) return;
 
   /* initialize logging to our file. */
   qof_log_init_filename("/tmp/gnucash.trace");
-  /* Only set the core log_modules here
-	the rest can be set locally.  */
+  /* Only set the core log_modules here the rest can be set locally.  */
   qof_log_set_level(GNC_MOD_ENGINE, QOF_LOG_WARNING);
   qof_log_set_level(GNC_MOD_IO, QOF_LOG_WARNING);
   qof_log_set_level(GNC_MOD_GUI, QOF_LOG_WARNING);
@@ -96,12 +98,11 @@
   /* Now register our core types */
   cashobjects_register();
 
-  g_return_if_fail((qof_load_backend_library 
-		(QOF_LIB_DIR, QSF_BACKEND_LIB, QSF_MODULE_INIT)));
-  g_return_if_fail((qof_load_backend_library
-		(GNC_LIBDIR, GNC_LIB_NAME, GNC_LIB_INIT)));
+  for (np = names; *np; np++) {
+      if (qof_load_backend_library(GNC_LIBDIR, *np))
+          engine_is_initialized = 1;
+  }
 
-  engine_is_initialized = 1;
   /* call any engine hooks */
   for (cur = engine_init_hooks; cur; cur = cur->next)
   {
@@ -138,10 +139,7 @@
 gboolean
 gnc_engine_is_initialized (void)
 {
-/*	if (engine_is_initialized == 1) return TRUE;
-	return FALSE;
-*/	
-	return (engine_is_initialized == 1) ? TRUE : FALSE;
+    return (engine_is_initialized == 1) ? TRUE : FALSE;
 }
 
 /* replicate old gnc-trace enum behaviour
@@ -176,46 +174,3 @@
 	qof_log_set_level(GNC_MOD_BUDGET, QOF_LOG_WARNING);
 }
 
-/* ====================================================================== */
-/* XXX This exports the list of accounts to a file.  It does not export
- * any transactions.  Its a place-holder until full book-closing is implemented.
- */
-
-gboolean
-qof_session_export (QofSession *tmp_session,
-                    QofSession *real_session,
-                    QofPercentageFunc percentage_func)
-{
-  QofBook *book, *book2;
-  QofBackend *be;
-  int err;
-
-  if ((!tmp_session) || (!real_session)) return FALSE;
-
-  book = qof_session_get_book (real_session);
-  ENTER ("tmp_session=%p real_session=%p book=%p book_id=%s", 
-         tmp_session, real_session, book,
-         qof_session_get_url(tmp_session)
-         ? qof_session_get_url(tmp_session) : "(null)");
-
-  /* There must be a backend or else.  (It should always be the file
-   * backend too.)
-   */
-  book2 = qof_session_get_book(tmp_session);
-  be = qof_book_get_backend(book2);
-  if (!be)
-    return FALSE;
-
-  be->percentage = percentage_func;
-  if (be->export)
-    {
-
-      (be->export)(be, book);
-      err = qof_backend_get_error(be);
-    
-      if (ERR_BACKEND_NO_ERR != err) { return FALSE; }
-    }
-
-  return TRUE;
-}
-

Modified: gnucash/branches/misc-backend/src/engine/gnc-engine.h
===================================================================
--- gnucash/branches/misc-backend/src/engine/gnc-engine.h	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/engine/gnc-engine.h	2006-05-24 03:21:09 UTC (rev 14165)
@@ -103,7 +103,7 @@
 #define GNC_ID_SXTG           "SXTGroup"
 #define GNC_ID_SXTT           "SXTTrans"
 #define GNC_ID_TRANS          "Trans"
-                                                                                
+
 /* TYPES **********************************************************/
 
 /* CAS: ISTM, it would make more sense to put the typedefs in their
@@ -250,11 +250,5 @@
  * it will be called during the evaluation of gnc_engine_init */
 void gnc_engine_add_init_hook(gnc_engine_init_hook_t hook);
 
-gboolean
-qof_session_export (QofSession *tmp_session,
-                    QofSession *real_session,
-                    QofPercentageFunc percentage_func);
-
-
 #endif
 /** @} */

Modified: gnucash/branches/misc-backend/src/engine/gnc-pricedb.c
===================================================================
--- gnucash/branches/misc-backend/src/engine/gnc-pricedb.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/engine/gnc-pricedb.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -27,6 +27,7 @@
 #include <glib.h>
 #include <string.h>
 #include "gnc-pricedb-p.h"
+#include "qofbackend-p.h"
 
 /* This static indicates the debugging module that this .o belongs to.  */
 static QofLogModule log_module = GNC_MOD_PRICE;

Modified: gnucash/branches/misc-backend/src/engine/gnc-session-scm.c
===================================================================
--- gnucash/branches/misc-backend/src/engine/gnc-session-scm.c	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/engine/gnc-session-scm.c	2006-05-24 03:21:09 UTC (rev 14165)
@@ -69,13 +69,6 @@
   qof_session_save (session, gnc_session_scm_gui_cb_helper);
 }
 
-gboolean
-gnc_session_scm_export (QofSession *tmp_session, QofSession *real_session)
-{
-  return qof_session_export(tmp_session, real_session,
-			    gnc_session_scm_gui_cb_helper);
-}
-
 /*
  * Set the callback that will be used for any calls to the session
  * load/save functions from the scheme side of the code.

Modified: gnucash/branches/misc-backend/src/engine/gnc-session-scm.h
===================================================================
--- gnucash/branches/misc-backend/src/engine/gnc-session-scm.h	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/engine/gnc-session-scm.h	2006-05-24 03:21:09 UTC (rev 14165)
@@ -43,8 +43,6 @@
 #include "gnc-engine.h"
 
 void gnc_session_scm_load (QofSession *session);
-gboolean gnc_session_scm_export (QofSession *tmp_session,
-                                 QofSession *real_session);
 void     gnc_session_scm_save (QofSession *session);
 void     gnc_session_scm_set_callback (SCM percentage_cb);
 

Modified: gnucash/branches/misc-backend/src/engine/gw-engine-spec.scm
===================================================================
--- gnucash/branches/misc-backend/src/engine/gw-engine-spec.scm	2006-05-24 03:18:14 UTC (rev 14164)
+++ gnucash/branches/misc-backend/src/engine/gw-engine-spec.scm	2006-05-24 03:21:09 UTC (rev 14165)
@@ -1443,14 +1443,6 @@
 
 (gw:wrap-function
  ws
- 'gnc:session-export
- '<gw:bool>
- "gnc_session_scm_export"
- '((<gnc:Session*> tmp_session) (<gnc:Session*> real_session))
- "Export the accounts in the session.")
-
-(gw:wrap-function
- ws
  'gnc:session-set-callback
  '<gw:void>
  "gnc_session_scm_set_callback"



More information about the gnucash-changes mailing list