[Gnucash-changes] prepare a duplicate backend loader suitable for QOF

Neil Williams codehelp at cvs.gnucash.org
Fri Aug 12 10:31:21 EDT 2005


Log Message:
-----------
prepare a duplicate backend loader suitable for QOF

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash:
        ChangeLog
    gnucash/src/backend/file:
        gnc-account-xml-v2.c
        gnc-backend-file.c
        gnc-backend-file.h
        gnc-book-xml-v2.c
        gnc-commodity-xml-v2.c
        gnc-pricedb-xml-v2.c
        gnc-schedxaction-xml-v2.c
        gnc-transaction-xml-v2.c
        gnc-xml.h
        io-gncbin-r.c
        io-gncxml-v1.c
        io-gncxml-v2.c
        sixtp-dom-generators.c
        sixtp-dom-parsers.c
        sixtp-to-dom-parser.c
        sixtp-utils.c
        sixtp.c
    gnucash/src/backend/file/test:
        test-dom-converters1.c
        test-file-stuff.c
        test-xml-account.c
        test-xml-commodity.c
        test-xml-transaction.c
    gnucash/src/engine:
        Makefile.am

Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1487.2.261
retrieving revision 1.1487.2.262
diff -LChangeLog -LChangeLog -u -r1.1487.2.261 -r1.1487.2.262
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,39 @@
+2005-08-12  Neil Williams <linux at codehelp.co.uk>
+
+	* src/backend/file/gnc-account-xml-v2.c: Cast fixes
+	* src/backend/file/gnc-backend-file.c: Remove unnecessary headers
+	and provide a duplicate backend loader suitable for QOF which will
+	replace the gnc-backend module to allow CashUtil to work with the
+	current XML backend and ease spin-out of QOF. The new loader is
+	not executed as yet.
+	* src/backend/file/gnc-backend-file.h: Put a copy of price_lookup
+	and export into FileBackend ready to replace the versions currently
+	retained in QOF on a conditional build.
+	* src/backend/file/gnc-book-xml-v2.c: To be reviewed.
+	* src/backend/file/gnc-commodity-xml-v2.c:
+	* src/backend/file/gnc-pricedb-xml-v2.c:
+	* src/backend/file/gnc-schedxaction-xml-v2.c:
+	* src/backend/file/gnc-transaction-xml-v2.c: Cast fixes
+	* src/backend/file/gnc-xml.h: Stop use of gncbook.h, GNCBook.
+	* src/backend/file/io-gncbin-r.c: Unnecessary header, not available in QOF.
+	* src/backend/file/io-gncxml-v1.c: Cast fixes
+	* src/backend/file/io-gncxml-v2.c: Stop use of gnc- prefix, remove
+	unnecessary header and cast fixes.
+	* src/backend/file/sixtp-dom-generators.c: 
+	* src/backend/file/sixtp-dom-parsers.c:
+	* src/backend/file/sixtp-to-dom-parser.c: Cast fixes
+	* src/backend/file/sixtp-utils.c: Other files in this backend already use <time.h>, 
+	no need to provide a duplicate here.
+	* src/backend/file/sixtp.c:
+	* src/backend/file/test/test-dom-converters1.c:
+	* src/backend/file/test/test-file-stuff.c:
+	* src/backend/file/test/test-xml-account.c:
+	* src/backend/file/test/test-xml-commodity.c:
+	* src/backend/file/test/test-xml-transaction.c: Cast fixes
+	* src/engine/Makefile.am: Add qofchoice files.
+	* src/engine/qofchoice.c: QOF_TYPE_CHOICE handlers.
+	* src/engine/qofchoice.h: 
+	
 2005-08-02  David Hampton  <hampton at employees.org>
 
 	* src/app-utils/prefs.scm:
Index: gnc-account-xml-v2.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/gnc-account-xml-v2.c,v
retrieving revision 1.13.4.3
retrieving revision 1.13.4.4
diff -Lsrc/backend/file/gnc-account-xml-v2.c -Lsrc/backend/file/gnc-account-xml-v2.c -u -r1.13.4.3 -r1.13.4.4
--- src/backend/file/gnc-account-xml-v2.c
+++ src/backend/file/gnc-account-xml-v2.c
@@ -141,14 +141,14 @@
 
 	    source = gnc_commodity_get_quote_source(com);
 	    val_node = xmlNewTextChild(slot_node, NULL, BAD_CAST "slot:value",
-				       gnc_quote_source_get_old_internal_name(source));
+				       BAD_CAST gnc_quote_source_get_old_internal_name(source));
 	    xmlSetProp(val_node, BAD_CAST "type", BAD_CAST "string");
 
 	    tz = gnc_commodity_get_quote_tz(com);
 	    if (tz) {
 	      slot_node = xmlNewChild(kvpnode, NULL, BAD_CAST "slot", NULL);
 	      xmlNewTextChild(slot_node, NULL, BAD_CAST "slot:key", BAD_CAST "old-quote-tz");
-	      val_node = xmlNewTextChild(slot_node, NULL, BAD_CAST "slot:value", tz);
+	      val_node = xmlNewTextChild(slot_node, NULL, BAD_CAST "slot:value", BAD_CAST tz);
 	      xmlSetProp(val_node, BAD_CAST "type", BAD_CAST "string");
 	    }
 	  }
@@ -234,7 +234,7 @@
     int type;
     char *string;
 
-    string = xmlNodeGetContent (node->xmlChildrenNode);
+    string = (char*) xmlNodeGetContent (node->xmlChildrenNode);
     xaccAccountStringToType(string, &type);
     xmlFree (string);
 
@@ -392,7 +392,7 @@
     {
         GNCLot *lot;
         
-        if(safe_strcmp("text", mark->name) == 0)
+        if(safe_strcmp("text", (char*) mark->name) == 0)
           continue;
 
         lot = dom_tree_to_lot(mark, pdata->book);
Index: io-gncxml-v1.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/io-gncxml-v1.c,v
retrieving revision 1.20.4.5
retrieving revision 1.20.4.6
diff -Lsrc/backend/file/io-gncxml-v1.c -Lsrc/backend/file/io-gncxml-v1.c -u -r1.20.4.5 -r1.20.4.6
--- src/backend/file/io-gncxml-v1.c
+++ src/backend/file/io-gncxml-v1.c
@@ -3568,34 +3568,34 @@
 
   gnc_price_begin_edit (p);
 
-  if(safe_strcmp("price:id", sub_node->name) == 0) {
+  if(safe_strcmp("price:id", (char*)sub_node->name) == 0) {
     GUID *c = dom_tree_to_guid(sub_node);
     if(!c) return FALSE; 
     gnc_price_set_guid(p, c);
     g_free(c);
-  } else if(safe_strcmp("price:commodity", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:commodity", (char*)sub_node->name) == 0) {
     gnc_commodity *c = dom_tree_to_commodity_ref(sub_node, book);
     if(!c) return FALSE;
     gnc_price_set_commodity(p, c);
-  } else if(safe_strcmp("price:currency", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:currency", (char*)sub_node->name) == 0) {
     gnc_commodity *c = dom_tree_to_commodity_ref(sub_node, book);
     if(!c) return FALSE;
     gnc_price_set_currency(p, c);
-  } else if(safe_strcmp("price:time", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:time", (char*)sub_node->name) == 0) {
     Timespec t = dom_tree_to_timespec(sub_node);
     if(!is_valid_timespec(t)) return FALSE;
     gnc_price_set_time(p, t);
-  } else if(safe_strcmp("price:source", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:source", (char*)sub_node->name) == 0) {
     char *text = dom_tree_to_text(sub_node);
     if(!text) return FALSE;
     gnc_price_set_source(p, text);
     g_free(text);
-  } else if(safe_strcmp("price:type", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:type", (char*)sub_node->name) == 0) {
     char *text = dom_tree_to_text(sub_node);
     if(!text) return FALSE;
     gnc_price_set_type(p, text);
     g_free(text);
-  } else if(safe_strcmp("price:value", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:value", (char*)sub_node->name) == 0) {
     gnc_numeric *value = dom_tree_to_gnc_numeric(sub_node);
     if(!value) return FALSE;
     gnc_price_set_value(p, *value);
Index: io-gncxml-v2.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/io-gncxml-v2.c,v
retrieving revision 1.24.4.7
retrieving revision 1.24.4.8
diff -Lsrc/backend/file/io-gncxml-v2.c -Lsrc/backend/file/io-gncxml-v2.c -u -r1.24.4.7 -r1.24.4.8
--- src/backend/file/io-gncxml-v2.c
+++ src/backend/file/io-gncxml-v2.c
@@ -30,7 +30,6 @@
 #include "gnc-engine.h"
 #include "gnc-engine-util.h"
 #include "gnc-pricedb-p.h"
-#include "gncObject.h"
 #include "Group.h"
 #include "GroupP.h"
 #include "Scrub.h"
@@ -41,7 +40,6 @@
 #include "TransLog.h"
 #include "qofbackend-p.h"
 #include "qofbook.h"
-#include "qofbook-p.h"
 
 #include "sixtp-dom-parsers.h"
 #include "io-gncxml-v2.h"
@@ -354,7 +352,7 @@
     
     g_return_val_if_fail(tree, FALSE);
 
-    type = xmlGetProp(tree, BAD_CAST "cd:type");
+    type = (char*)xmlGetProp(tree, BAD_CAST "cd:type");
     strval = dom_tree_to_text(tree);
     if(!string_to_gint64(strval, &val))
     {
@@ -393,7 +391,7 @@
       be_data.ok = FALSE;
       be_data.tag = type;
 
-      gncObjectForeachBackend (GNC_FILE_BACKEND, do_counter_cb, &be_data);
+      qof_object_foreach_backend (GNC_FILE_BACKEND, do_counter_cb, &be_data);
 
       if (be_data.ok == FALSE)
       {
@@ -534,7 +532,7 @@
       be_data.gd = gd;
       be_data.data = data;
 
-      gncObjectForeachBackend (GNC_FILE_BACKEND, add_item_cb, &be_data);
+      qof_object_foreach_backend (GNC_FILE_BACKEND, add_item_cb, &be_data);
 
       if (be_data.ok == FALSE)
       {
@@ -687,7 +685,7 @@
 
     be_data.ok = TRUE;
     be_data.parser = book_parser;
-    gncObjectForeachBackend (GNC_FILE_BACKEND, add_parser_cb, &be_data);
+    qof_object_foreach_backend (GNC_FILE_BACKEND, add_parser_cb, &be_data);
     if (be_data.ok == FALSE)
       goto bail;
 
@@ -717,7 +715,7 @@
     /* Call individual scrub functions */
     memset(&be_data, 0, sizeof(be_data));
     be_data.book = book;
-    gncObjectForeachBackend (GNC_FILE_BACKEND, scrub_cb, &be_data);
+    qof_object_foreach_backend (GNC_FILE_BACKEND, scrub_cb, &be_data);
 
     /* fix price quote sources */
     grp = gnc_book_get_group(book);
@@ -766,8 +764,8 @@
             val = g_strdup_printf("%d", amount);
 
             node = xmlNewNode(NULL, BAD_CAST COUNT_DATA_TAG);
-            xmlSetProp(node, BAD_CAST "cd:type", type);
-            xmlNodeAddContent(node, val);
+            xmlSetProp(node, BAD_CAST "cd:type", BAD_CAST type);
+            xmlNodeAddContent(node, BAD_CAST val);
 
             xmlElemDump(out, NULL, node);
             fprintf(out, "\n");
@@ -883,7 +881,7 @@
                  g_list_length( gnc_book_get_schedxactions(book) ),
                  NULL);
 
-    gncObjectForeachBackend (GNC_FILE_BACKEND, write_counts_cb, &be_data);
+	qof_object_foreach_backend (GNC_FILE_BACKEND, write_counts_cb, &be_data);
 
     write_commodities(out, book, gd);
     write_pricedb(out, book, gd);
@@ -892,7 +890,7 @@
     write_template_transaction_data(out, book, gd);
     write_schedXactions(out, book, gd);
 
-    gncObjectForeachBackend (GNC_FILE_BACKEND, write_data_cb, &be_data);
+    qof_object_foreach_backend (GNC_FILE_BACKEND, write_data_cb, &be_data);
 
     if(fprintf( out, "</%s>\n", BOOK_TAG ) < 0) {
 		qof_backend_set_error(qof_book_get_backend(book), ERR_FILEIO_WRITE_ERROR);
Index: sixtp-utils.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/sixtp-utils.c,v
retrieving revision 1.7.4.3
retrieving revision 1.7.4.4
diff -Lsrc/backend/file/sixtp-utils.c -Lsrc/backend/file/sixtp-utils.c -u -r1.7.4.3 -r1.7.4.4
--- src/backend/file/sixtp-utils.c
+++ src/backend/file/sixtp-utils.c
@@ -35,20 +35,20 @@
 
 #include "sixtp.h"
 #include "sixtp-utils.h"
-#include "core-utils.h"
-
+#include <time.h>
+#include <errno.h>
 #include "gnc-date.h"
 #include "gnc-engine-util.h"
 #include "gnc-numeric.h"
 #include "guid.h"
-
+/*
 #ifndef HAVE_STRPTIME
 #include "strptime.h"
 #endif
 #ifndef HAVE_LOCALTIME_R
 #include "localtime_r.h"
 #endif
-
+*/
 static short module = MOD_IO;
 
 gboolean
Index: gnc-backend-file.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/gnc-backend-file.c,v
retrieving revision 1.23.4.8
retrieving revision 1.23.4.9
diff -Lsrc/backend/file/gnc-backend-file.c -Lsrc/backend/file/gnc-backend-file.c -u -r1.23.4.8 -r1.23.4.9
--- src/backend/file/gnc-backend-file.c
+++ src/backend/file/gnc-backend-file.c
@@ -57,7 +57,7 @@
 #include "gnc-backend-file.h"
 
 #include "qofbackend-p.h"
-#include "qofbook-p.h"
+#include "qofbook.h"
 #include "qofsession.h"
 #include "qsf-xml.h"
 
@@ -936,4 +936,78 @@
     return be;
 }
 
+QofBackend*
+gnc_backend_new(void)
+{
+	FileBackend *gnc_be;
+	QofBackend *be;
+
+	gnc_be = g_new0(FileBackend, 1);
+	be = (QofBackend*) gnc_be;
+	qof_backend_init(be);
+
+	be->session_begin = file_session_begin;
+	be->session_end = file_session_end;
+	be->destroy_backend = file_destroy_backend;
+
+	be->load = gnc_file_be_load_from_file;
+	be->save_may_clobber_data = gnc_file_be_save_may_clobber_data;
+
+	/* The file backend treats accounting periods transactionally. */
+	be->begin = file_begin_edit;
+	be->commit = file_commit_edit;
+	be->rollback = file_rollback_edit;
+
+	/* The file backend always loads all data ... */
+	be->compile_query = NULL;
+	be->free_query = NULL;
+	be->run_query = NULL;
+
+	be->counter = NULL;
+
+	/* The file backend will never be multi-user... */
+	be->events_pending = NULL;
+	be->process_events = NULL;
+
+	be->sync = file_sync_all;
+/* export and price_lookup have been moved but this
+	section is not used yet - it is in preparation for
+	CashUtil and an external QOF library. */
+	gnc_be->export = gnc_file_be_write_accounts_to_file;
+	gnc_be->price_lookup = NULL;
+	gnc_be->dirname = NULL;
+	gnc_be->fullpath = NULL;
+	gnc_be->lockfile = NULL;
+	gnc_be->linkfile = NULL;
+	gnc_be->lockfd = -1;
+
+	gnc_be->primary_book = NULL;
+	return be;
+}
+
+
+static void
+gnc_provider_free (QofBackendProvider *prov)
+{
+        prov->provider_name = NULL;
+        prov->access_method = NULL;
+        g_free (prov);
+}
+
+/* temporary definition*/
+void gnc_provider_init(void);
+
+void
+gnc_provider_init(void)
+{
+        QofBackendProvider *prov;
+        prov = g_new0 (QofBackendProvider, 1);
+        prov->provider_name = "GnuCash File Backend Version 2";
+        prov->access_method = "file";
+        prov->partial_book_supported = FALSE;
+        prov->backend_new = gnc_backend_new;
+        prov->provider_free = gnc_provider_free;
+        qof_backend_register_provider (prov);
+}
+
 /* ========================== END OF FILE ===================== */
Index: gnc-pricedb-xml-v2.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/gnc-pricedb-xml-v2.c,v
retrieving revision 1.6.4.3
retrieving revision 1.6.4.4
diff -Lsrc/backend/file/gnc-pricedb-xml-v2.c -Lsrc/backend/file/gnc-pricedb-xml-v2.c -u -r1.6.4.3 -r1.6.4.4
--- src/backend/file/gnc-pricedb-xml-v2.c
+++ src/backend/file/gnc-pricedb-xml-v2.c
@@ -1,5 +1,5 @@
 /********************************************************************
- * gnc-pricedb-xml-v1.c -- xml routines for price db                *
+ * gnc-pricedb-xml-v2.c -- xml routines for price db                *
  * Copyright (C) 2001 Gnumatic, Inc.                                *
  *                                                                  *
  * This program is free software; you can redistribute it and/or    *
@@ -92,34 +92,34 @@
   if(!p || !sub_node) return FALSE;
 
   gnc_price_begin_edit (p);
-  if(safe_strcmp("price:id", sub_node->name) == 0) {
+  if(safe_strcmp("price:id", (char*)sub_node->name) == 0) {
     GUID *c = dom_tree_to_guid(sub_node);
     if(!c) return FALSE; 
     gnc_price_set_guid(p, c);
     g_free(c);
-  } else if(safe_strcmp("price:commodity", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:commodity", (char*)sub_node->name) == 0) {
     gnc_commodity *c = dom_tree_to_commodity_ref(sub_node, book);
     if(!c) return FALSE;
     gnc_price_set_commodity(p, c);
-  } else if(safe_strcmp("price:currency", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:currency", (char*)sub_node->name) == 0) {
     gnc_commodity *c = dom_tree_to_commodity_ref(sub_node, book);
     if(!c) return FALSE;
     gnc_price_set_currency(p, c);
-  } else if(safe_strcmp("price:time", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:time", (char*)sub_node->name) == 0) {
     Timespec t = dom_tree_to_timespec(sub_node);
     if(!is_valid_timespec(t)) return FALSE;
     gnc_price_set_time(p, t);
-  } else if(safe_strcmp("price:source", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:source", (char*)sub_node->name) == 0) {
     char *text = dom_tree_to_text(sub_node);
     if(!text) return FALSE;
     gnc_price_set_source(p, text);
     g_free(text);
-  } else if(safe_strcmp("price:type", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:type", (char*)sub_node->name) == 0) {
     char *text = dom_tree_to_text(sub_node);
     if(!text) return FALSE;
     gnc_price_set_type(p, text);
     g_free(text);
-  } else if(safe_strcmp("price:value", sub_node->name) == 0) {
+  } else if(safe_strcmp("price:value", (char*)sub_node->name) == 0) {
     gnc_numeric *value = dom_tree_to_gnc_numeric(sub_node);
     if(!value) return FALSE;
     gnc_price_set_value(p, *value);
Index: sixtp-to-dom-parser.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/sixtp-to-dom-parser.c,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -Lsrc/backend/file/sixtp-to-dom-parser.c -Lsrc/backend/file/sixtp-to-dom-parser.c -u -r1.4 -r1.4.4.1
--- src/backend/file/sixtp-to-dom-parser.c
+++ src/backend/file/sixtp-to-dom-parser.c
@@ -45,7 +45,7 @@
 
     if(parent_data == NULL)
     {
-        thing = xmlNewNode(global_namespace, tag);
+        thing = xmlNewNode(global_namespace, BAD_CAST tag);
         /* only publish the result if we're the parent */
         *result = thing;
     }
@@ -53,7 +53,7 @@
     {
         thing = xmlNewChild((xmlNodePtr) parent_data,
                             global_namespace,
-                            tag,
+                            BAD_CAST tag,
                             NULL);
         *result = NULL;
     }
@@ -63,7 +63,7 @@
     {
         while(*atptr != 0)
         {
-            xmlSetProp(thing, atptr[0], atptr[1]);
+            xmlSetProp(thing, BAD_CAST atptr[0], BAD_CAST atptr[1]);
             atptr += 2;
         }
     }
@@ -88,7 +88,7 @@
 {
     if(length > 0)
     {
-        xmlNodeAddContentLen((xmlNodePtr)parent_data, text, length);
+        xmlNodeAddContentLen((xmlNodePtr)parent_data, BAD_CAST text, length);
     }
     return TRUE;
 }
Index: sixtp.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/sixtp.c,v
retrieving revision 1.7.4.3
retrieving revision 1.7.4.4
diff -Lsrc/backend/file/sixtp.c -Lsrc/backend/file/sixtp.c -u -r1.7.4.3 -r1.7.4.4
--- src/backend/file/sixtp.c
+++ src/backend/file/sixtp.c
@@ -431,11 +431,11 @@
                                           pdata->global_data,
                                           &(current_frame->frame_data),
                                           current_frame->tag,
-                                          name);
+                                          (gchar*) name);
   }
 
   /* now allocate the new stack frame and shift to it */
-  new_frame = sixtp_stack_frame_new(next_parser, g_strdup(name));
+  new_frame = sixtp_stack_frame_new( next_parser, g_strdup((char*) name));
 
   new_frame->line = getLineNumber( pdata->saxParserCtxt );
   new_frame->col  = getColumnNumber( pdata->saxParserCtxt );
@@ -450,7 +450,7 @@
                                  pdata->global_data,
                                  &new_frame->data_for_children,
                                  &new_frame->frame_data,
-                                 name,
+                                 (gchar*) name,
                                  (gchar**)attrs);
   }
 }
@@ -471,7 +471,7 @@
                                         frame->data_for_children,
                                         pdata->global_data,
                                         &result,
-                                        text,
+                                        (gchar*) text,
                                         len);
     if(pdata->parsing_ok && result)
     {
@@ -504,13 +504,13 @@
 
   /* time to make sure we got the right closing tag.  Is this really
      necessary? */
-  if(safe_strcmp(current_frame->tag, name) != 0) 
+  if(safe_strcmp(current_frame->tag, (gchar*) name) != 0) 
   {
     PWARN ("bad closing tag (start <%s>, end <%s>)", current_frame->tag, name);
     pdata->parsing_ok = FALSE;
 
     /* See if we're just off by one and try to recover */
-    if(safe_strcmp(parent_frame->tag, name) == 0) {
+    if(safe_strcmp(parent_frame->tag, (gchar*) name) == 0) {
       pdata->stack = sixtp_pop_and_destroy_frame(pdata->stack);
       current_frame = (sixtp_stack_frame *) pdata->stack->data;
       parent_frame = (sixtp_stack_frame *) pdata->stack->next->data;
Index: gnc-backend-file.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/gnc-backend-file.h,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -Lsrc/backend/file/gnc-backend-file.h -Lsrc/backend/file/gnc-backend-file.h -u -r1.1.2.2 -r1.1.2.3
--- src/backend/file/gnc-backend-file.h
+++ src/backend/file/gnc-backend-file.h
@@ -43,6 +43,21 @@
     char *lockfile;
     char *linkfile;
     int lockfd;
+   /** XXX price_lookup should be removed during the redesign
+   * of the SQL backend... prices can now be queried using
+   * the generic query mechanism.
+   *
+   * Note the correct signature for this call is
+   * void (*price_lookup) (QofBackend *, GNCPriceLookup *);
+   * we use gpointer to avoid an unwanted include file dependency.
+   */  
+    void (*price_lookup) (QofBackend *, gpointer);
+  /** XXX Export should really _NOT_ be here, but is left here for now.
+   * I'm not sure where this should be going to. It should be
+   * removed ASAP.   This is a temporary hack-around until period-closing
+   * is fully implemented.
+   */
+    void (*export) (QofBackend *, QofBook *);
 
     QofBook *primary_book;  /* The primary, main open book */
 };
Index: gnc-xml.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/gnc-xml.h,v
retrieving revision 1.8.4.2
retrieving revision 1.8.4.3
diff -Lsrc/backend/file/gnc-xml.h -Lsrc/backend/file/gnc-xml.h -u -r1.8.4.2 -r1.8.4.3
--- src/backend/file/gnc-xml.h
+++ src/backend/file/gnc-xml.h
@@ -29,7 +29,7 @@
 
 #include "FreqSpec.h"
 #include "SchedXaction.h"
-#include "gnc-book.h"
+#include "qofbook.h"
 #include "gnc-engine.h"
 #include "gnc-pricedb.h"
 #include "gnc-xml-helper.h"
Index: sixtp-dom-generators.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/sixtp-dom-generators.c,v
retrieving revision 1.5.4.4
retrieving revision 1.5.4.5
diff -Lsrc/backend/file/sixtp-dom-generators.c -Lsrc/backend/file/sixtp-dom-generators.c -u -r1.5.4.4 -r1.5.4.5
--- src/backend/file/sixtp-dom-generators.c
+++ src/backend/file/sixtp-dom-generators.c
@@ -46,9 +46,9 @@
 
   g_return_val_if_fail(tag, NULL);
   g_return_val_if_fail(str, NULL);
-  result = xmlNewNode(NULL, tag);
+  result = xmlNewNode(NULL, BAD_CAST tag);
   g_return_val_if_fail(result, NULL);
-  xmlNodeAddContent(result, str);
+  xmlNodeAddContent(result, BAD_CAST str);
   return result;
 }
 
@@ -70,7 +70,7 @@
     char guid_str[GUID_ENCODING_LENGTH + 1];
     xmlNodePtr ret;
 
-    ret = xmlNewNode(NULL, tag);
+    ret = xmlNewNode(NULL, BAD_CAST tag);
 
     xmlSetProp(ret, BAD_CAST "type", BAD_CAST "guid");
 
@@ -80,7 +80,7 @@
         return NULL;
     }
 
-    xmlNodeAddContent(ret, guid_str);
+    xmlNodeAddContent(ret, BAD_CAST guid_str);
 
     return ret;
 }
@@ -92,15 +92,15 @@
 
     g_return_val_if_fail(c, NULL);
     
-    ret = xmlNewNode(NULL, tag);
+    ret = xmlNewNode(NULL, BAD_CAST tag);
 
     if(!gnc_commodity_get_namespace(c) || !gnc_commodity_get_mnemonic(c))
     {
         return NULL;
     }
     
-    xmlNewTextChild(ret, NULL, BAD_CAST "cmdty:space", gnc_commodity_get_namespace(c));
-    xmlNewTextChild(ret, NULL, BAD_CAST "cmdty:id", gnc_commodity_get_mnemonic(c));
+    xmlNewTextChild(ret, NULL, BAD_CAST "cmdty:space", BAD_CAST gnc_commodity_get_namespace(c));
+    xmlNewTextChild(ret, NULL, BAD_CAST "cmdty:id", BAD_CAST gnc_commodity_get_mnemonic(c));
 
     return ret;
 }
@@ -142,14 +142,14 @@
 		return NULL;
 	}
     
-	ret = xmlNewNode(NULL, tag);
+	ret = xmlNewNode(NULL, BAD_CAST tag);
     
-	xmlNewTextChild(ret, NULL, BAD_CAST "ts:date", date_str);
+	xmlNewTextChild(ret, NULL, BAD_CAST "ts:date", BAD_CAST date_str);
 
 	if(spec->tv_nsec > 0){
 		ns_str = timespec_nsec_to_string(spec);
 		if(ns_str){
-			xmlNewTextChild(ret, NULL, BAD_CAST "ts:ns", ns_str);
+			xmlNewTextChild(ret, NULL, BAD_CAST "ts:ns", BAD_CAST ns_str);
 		}
 	}
 
@@ -172,9 +172,9 @@
 
 	g_date_strftime( date_str, 512, "%Y-%m-%d", date );
 
-	ret = xmlNewNode(NULL, tag);
+	ret = xmlNewNode(NULL, BAD_CAST tag);
 
-	xmlNewTextChild(ret, NULL, BAD_CAST "gdate", date_str);
+	xmlNewTextChild(ret, NULL, BAD_CAST "gdate", BAD_CAST date_str);
 
 	g_free(date_str);
 
@@ -192,9 +192,9 @@
     numstr = gnc_numeric_to_string(*num);
     g_return_val_if_fail(numstr, NULL);
 
-    ret = xmlNewNode(NULL, tag);
+    ret = xmlNewNode(NULL, BAD_CAST tag);
 
-    xmlNodeAddContent(ret, numstr);
+    xmlNodeAddContent(ret, BAD_CAST numstr);
 
     g_free(numstr);
 
@@ -206,10 +206,9 @@
 {
     gchar *numstr;
 #ifdef USE_GUILE_FOR_DOUBLE_CONVERSION 
-    SCM value;
-    value = scm_call_1(scm_c_eval_string("number->string"),
-		       scm_make_real(value));
-    numstr = g_strdup(SCM_STRING_CHARS(value));
+    numstr = gh_scm2newstr(scm_call_1(scm_c_eval_string("number->string"),
+				      scm_make_real(value)),
+                           NULL);
 
 #else /* don't USE_GUILE_FOR_DOUBLE_CONVERSION */
     /*
@@ -235,8 +234,8 @@
 static void
 add_text_to_node(xmlNodePtr node, gchar *type, gchar *val)
 {
-    xmlSetProp(node, BAD_CAST "type", type);
-    xmlNodeSetContent(node, val);
+    xmlSetProp(node, BAD_CAST "type", BAD_CAST type);
+    xmlNodeSetContent(node, BAD_CAST val);
     g_free(val);
 }
 
@@ -246,7 +245,7 @@
 add_kvp_slot(gpointer key, gpointer value, gpointer data);
 
 static void
-add_kvp_value_node(xmlNodePtr node, const xmlChar *tag, kvp_value* val)
+add_kvp_value_node(xmlNodePtr node, gchar *tag, kvp_value* val)
 {
     xmlNodePtr val_node;
     gchar *tmp_str1;
@@ -255,11 +254,11 @@
     kvp_type = kvp_value_get_type(val);
 
     if (kvp_type == KVP_TYPE_STRING)
-      val_node = xmlNewTextChild(node, NULL, tag, kvp_value_get_string(val));
+      val_node = xmlNewTextChild(node, NULL, BAD_CAST tag, BAD_CAST kvp_value_get_string(val));
     else if (kvp_type == KVP_TYPE_TIMESPEC)
       val_node = NULL;
     else
-      val_node = xmlNewTextChild(node, NULL, tag, NULL);
+      val_node = xmlNewTextChild(node, NULL, BAD_CAST tag, NULL);
 
     switch(kvp_value_get_type(val))
     {
@@ -300,7 +299,7 @@
         xmlSetProp(val_node, BAD_CAST "type", BAD_CAST "binary");
         g_return_if_fail(binary_data);
         tmp_str1 = binary_to_string(binary_data, size);
-        xmlNodeSetContent(val_node, tmp_str1);
+        xmlNodeSetContent(val_node, BAD_CAST tmp_str1);
         g_free(tmp_str1);
     }
     break;
@@ -312,7 +311,7 @@
         for(cursor = kvp_value_get_glist(val); cursor; cursor = cursor->next)
         {
             kvp_value *val = (kvp_value*)cursor->data;
-            add_kvp_value_node(val_node, BAD_CAST "slot:value", val);
+            add_kvp_value_node(val_node, "slot:value", val);
         }
     }
     
@@ -345,9 +344,9 @@
 
     slot_node = xmlNewChild(node, NULL, BAD_CAST "slot", NULL);
 
-    xmlNewTextChild(slot_node, NULL, BAD_CAST "slot:key", (gchar*)key);
+    xmlNewTextChild(slot_node, NULL, BAD_CAST "slot:key", (xmlChar*)key);
 
-    add_kvp_value_node(slot_node, BAD_CAST "slot:value", (kvp_value*)value);
+    add_kvp_value_node(slot_node, "slot:value", (kvp_value*)value);
 }
     
 xmlNodePtr
@@ -370,7 +369,7 @@
         return NULL;
     }
     
-    ret = xmlNewNode(NULL, tag);
+    ret = xmlNewNode(NULL, BAD_CAST tag);
     
     g_hash_table_foreach(kvp_frame_get_hash(frame), add_kvp_slot, ret);
     
@@ -385,9 +384,9 @@
     numstr = g_strdup_printf( "%u", an_int );
     g_return_val_if_fail(numstr, NULL);
 
-    ret = xmlNewNode(NULL, tag);
+    ret = xmlNewNode(NULL, BAD_CAST tag);
 
-    xmlNodeAddContent(ret, numstr);
+    xmlNodeAddContent(ret, BAD_CAST numstr);
 
     g_free(numstr);
 
Index: gnc-commodity-xml-v2.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/gnc-commodity-xml-v2.c,v
retrieving revision 1.5.4.3
retrieving revision 1.5.4.4
diff -Lsrc/backend/file/gnc-commodity-xml-v2.c -Lsrc/backend/file/gnc-commodity-xml-v2.c -u -r1.5.4.3 -r1.5.4.4
--- src/backend/file/gnc-commodity-xml-v2.c
+++ src/backend/file/gnc-commodity-xml-v2.c
@@ -126,28 +126,28 @@
 static void
 set_commodity_value(xmlNodePtr node, gnc_commodity* com)
 {
-    if(safe_strcmp(node->name, cmdty_fraction) == 0)
+    if(safe_strcmp((char*) node->name, cmdty_fraction) == 0)
     {
         gint64 val;
         char *string;
 
-        string = xmlNodeGetContent (node->xmlChildrenNode);
+        string = (char*) xmlNodeGetContent (node->xmlChildrenNode);
         if(string_to_gint64(string, &val))
         {
             gnc_commodity_set_fraction(com, val);
         }
         xmlFree (string);
     }
-    else if(safe_strcmp(node->name, cmdty_get_quotes) == 0)
+    else if(safe_strcmp((char*)node->name, cmdty_get_quotes) == 0)
     {
 	gnc_commodity_set_quote_flag(com, TRUE);
     }
-    else if(safe_strcmp(node->name, cmdty_quote_source) == 0)
+    else if(safe_strcmp((char*)node->name, cmdty_quote_source) == 0)
     {
         gnc_quote_source *source;
         char *string;
 
-        string = xmlNodeGetContent (node->xmlChildrenNode);
+        string = (char*) xmlNodeGetContent (node->xmlChildrenNode);
 	source = gnc_quote_source_lookup_by_internal(string);
 	if (!source)
 	  source = gnc_quote_source_add_new(string, FALSE);
@@ -160,7 +160,7 @@
 
         for(mark = com_handlers; mark->tag; mark++)
         {
-            if(safe_strcmp(mark->tag, node->name) == 0)
+            if(safe_strcmp(mark->tag, (char*)node->name) == 0)
             {
                 gchar* val = dom_tree_to_text(node);
                 g_strstrip(val);
Index: gnc-book-xml-v2.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/gnc-book-xml-v2.c,v
retrieving revision 1.6.4.5
retrieving revision 1.6.4.6
diff -Lsrc/backend/file/gnc-book-xml-v2.c -Lsrc/backend/file/gnc-book-xml-v2.c -u -r1.6.4.5 -r1.6.4.6
--- src/backend/file/gnc-book-xml-v2.c
+++ src/backend/file/gnc-book-xml-v2.c
@@ -46,7 +46,7 @@
 #include "sixtp-dom-parsers.h"
 #include "gnc-engine-util.h"
 #include "Group.h"
-#include "qofbook.h"
+// used to set the GUID of the book
 #include "qofbook-p.h"
 
 /* non-static because it's used in io-gncxml-v2.c */
Index: sixtp-dom-parsers.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/sixtp-dom-parsers.c,v
retrieving revision 1.12.4.7
retrieving revision 1.12.4.8
diff -Lsrc/backend/file/sixtp-dom-parsers.c -Lsrc/backend/file/sixtp-dom-parsers.c -u -r1.12.4.7 -r1.12.4.8
--- src/backend/file/sixtp-dom-parsers.c
+++ src/backend/file/sixtp-dom-parsers.c
@@ -1,5 +1,5 @@
 /********************************************************************
- * sixtp-dom-parsers.h                                              *
+ * sixtp-dom-parsers.c                                              *
  * Copyright 2001 Gnumatic, Inc.                                    *
  *                                                                  *
  * This program is free software; you can redistribute it and/or    *
@@ -45,7 +45,7 @@
         return NULL;
     }
 
-    if(strcmp(node->properties->name, "type") != 0)
+    if(strcmp((char*) node->properties->name, "type") != 0)
     {
         PERR("Unknown attribute for id tag: %s",
              node->properties->name ?
@@ -56,7 +56,7 @@
     {
         char *type;
 
-        type = xmlNodeGetContent (node->properties->xmlAttrPropertyValue);
+        type = (char*)xmlNodeGetContent (node->properties->xmlAttrPropertyValue);
 
         /* handle new and guid the same for the moment */
         if((safe_strcmp("guid", type) == 0) || (safe_strcmp("new", type) == 0))
@@ -64,7 +64,7 @@
             GUID *gid = g_new(GUID, 1);
             char *guid_str;
 
-            guid_str = xmlNodeGetContent (node->xmlChildrenNode);
+            guid_str = (char*)xmlNodeGetContent (node->xmlChildrenNode);
             string_to_guid(guid_str, gid);
             xmlFree (guid_str);
             xmlFree (type);
@@ -274,7 +274,7 @@
     {
         kvp_value *new_val;
 
-        if (safe_strcmp (mark->name, "text") == 0)
+        if (safe_strcmp ((char*)mark->name, "text") == 0)
           continue;
 
         new_val = dom_tree_to_kvp_value(mark);
@@ -338,7 +338,7 @@
     xml_type = xmlGetProp(node, BAD_CAST "type");
     if(xml_type)
     {
-        type = g_strdup (xml_type);
+        type = g_strdup ((char*) xml_type);
         xmlFree (xml_type);
     }
     else
@@ -372,7 +372,7 @@
 
     for(mark = node->xmlChildrenNode; mark; mark = mark->next)
     {
-        if(safe_strcmp(mark->name, "slot") == 0)
+        if(safe_strcmp((char*)mark->name, "slot") == 0)
         {
             xmlNodePtr mark2;
             gchar *key = NULL;
@@ -380,11 +380,11 @@
 
             for(mark2 = mark->xmlChildrenNode; mark2; mark2 = mark2->next)
             {
-                if(safe_strcmp(mark2->name, "slot:key") == 0)
+                if(safe_strcmp((char*)mark2->name, "slot:key") == 0)
                 {
                     key = dom_tree_to_text(mark2);
                 }
-                else if(safe_strcmp(mark2->name, "slot:value") == 0)
+                else if(safe_strcmp((char*)mark2->name, "slot:value") == 0)
                 {
                     val = dom_tree_to_kvp_value(mark2);
                 }
@@ -456,7 +456,7 @@
       return g_strdup("");
   }
 
-  temp = xmlNodeListGetString (NULL, tree->xmlChildrenNode, TRUE);
+  temp = (char*)xmlNodeListGetString (NULL, tree->xmlChildrenNode, TRUE);
   if (!temp) 
   {
     PINFO ("Null string");
@@ -529,7 +529,7 @@
     case XML_TEXT_NODE:
       break;
     case XML_ELEMENT_NODE:
-      if(safe_strcmp("ts:date", n->name) == 0) {
+      if(safe_strcmp("ts:date", (char*)n->name) == 0) {
         if(seen_s)
         {
             return timespec_failure(ret);
@@ -550,7 +550,7 @@
           seen_s = TRUE;
         }
       }
-      else if(safe_strcmp("ts:ns", n->name) == 0) {
+      else if(safe_strcmp("ts:ns", (char*)n->name) == 0) {
         if(seen_ns)
         {
             return timespec_failure(ret);
@@ -612,7 +612,7 @@
     case XML_TEXT_NODE:
       break;
     case XML_ELEMENT_NODE:
-      if(safe_strcmp("gdate", n->name) == 0) {
+      if(safe_strcmp("gdate", (char*)n->name) == 0) {
         if(seen_date) {
             goto failure;
         } else {
@@ -681,7 +681,7 @@
     case XML_TEXT_NODE:
       break;
     case XML_ELEMENT_NODE:
-      if(safe_strcmp("cmdty:space", n->name) == 0) {
+      if(safe_strcmp("cmdty:space", (char*)n->name) == 0) {
         if(space_str) {
           return NULL;
         } else {
@@ -689,7 +689,7 @@
           if(!content) return NULL;
           space_str = content;
         }
-      } else if(safe_strcmp("cmdty:id", n->name) == 0) {
+      } else if(safe_strcmp("cmdty:id", (char*)n->name) == 0) {
         if(id_str) {
           return NULL;
         } else {
@@ -808,10 +808,10 @@
     for(achild = node->xmlChildrenNode; achild; achild = achild->next)
     {
         /* ignore stray text nodes */
-        if (safe_strcmp (achild->name, "text") == 0)
+        if (safe_strcmp ((char*)achild->name, "text") == 0)
           continue;
 
-        if(!gnc_xml_set_data(achild->name, achild, data, handlers))
+        if(!gnc_xml_set_data((char*)achild->name, achild, data, handlers))
         {
             PERR("gnc_xml_set_data failed");
             successful = FALSE;
Index: io-gncbin-r.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/io-gncbin-r.c,v
retrieving revision 1.15.2.6
retrieving revision 1.15.2.7
diff -Lsrc/backend/file/io-gncbin-r.c -Lsrc/backend/file/io-gncbin-r.c -u -r1.15.2.6 -r1.15.2.7
--- src/backend/file/io-gncbin-r.c
+++ src/backend/file/io-gncbin-r.c
@@ -105,7 +105,6 @@
 #include "TransLog.h"
 #include "qofbackend.h"
 #include "qofbook.h"
-#include "qofbook-p.h"
 #include "gnc-commodity.h"
 #include "gnc-date.h"
 #include "gnc-engine.h"
Index: gnc-schedxaction-xml-v2.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/gnc-schedxaction-xml-v2.c,v
retrieving revision 1.18.4.4
retrieving revision 1.18.4.5
diff -Lsrc/backend/file/gnc-schedxaction-xml-v2.c -Lsrc/backend/file/gnc-schedxaction-xml-v2.c -u -r1.18.4.4 -r1.18.4.5
--- src/backend/file/gnc-schedxaction-xml-v2.c
+++ src/backend/file/gnc-schedxaction-xml-v2.c
@@ -163,7 +163,7 @@
                  guid_to_dom_tree(SX_ID,
                                   xaccSchedXactionGetGUID(sx)) );
 
-    xmlNewTextChild( ret, NULL, BAD_CAST SX_NAME, xaccSchedXactionGetName(sx) );
+    xmlNewTextChild( ret, NULL, BAD_CAST SX_NAME, BAD_CAST xaccSchedXactionGetName(sx) );
 
     xmlNewTextChild( ret, NULL, BAD_CAST SX_AUTOCREATE,
                      BAD_CAST ( sx->autoCreateOption ? "y" : "n" ) );
Index: gnc-transaction-xml-v2.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/gnc-transaction-xml-v2.c,v
retrieving revision 1.9.4.4
retrieving revision 1.9.4.5
diff -Lsrc/backend/file/gnc-transaction-xml-v2.c -Lsrc/backend/file/gnc-transaction-xml-v2.c -u -r1.9.4.4 -r1.9.4.5
--- src/backend/file/gnc-transaction-xml-v2.c
+++ src/backend/file/gnc-transaction-xml-v2.c
@@ -66,11 +66,11 @@
 }
 
 static xmlNodePtr
-split_to_dom_tree(const xmlChar *tag, Split *spl)
+split_to_dom_tree(const gchar *tag, Split *spl)
 {
     xmlNodePtr ret;
 
-    ret = xmlNewNode(NULL, tag);
+    ret = xmlNewNode(NULL, BAD_CAST tag);
 
     xmlAddChild(ret, guid_to_dom_tree("split:id", xaccSplitGetGUID(spl)));
     
@@ -79,7 +79,7 @@
 
         if(memo && safe_strcmp(memo, "") != 0)
         {
-            xmlNewTextChild(ret, NULL, BAD_CAST "split:memo", memo);
+            xmlNewTextChild(ret, NULL, BAD_CAST "split:memo", (xmlChar*)memo);
         }
     }
 
@@ -88,7 +88,7 @@
 
         if(action && safe_strcmp(action, "") != 0)
         {
-            xmlNewTextChild(ret, NULL, BAD_CAST "split:action", action);
+            xmlNewTextChild(ret, NULL, BAD_CAST "split:action", (xmlChar*)action);
         }
     }
 
@@ -98,7 +98,7 @@
         tmp[0] = xaccSplitGetReconcile(spl);
         tmp[1] = '\0';
 
-        xmlNewTextChild(ret, NULL, BAD_CAST "split:reconciled-state", tmp);
+        xmlNewTextChild(ret, NULL, BAD_CAST "split:reconciled-state", (xmlChar*)tmp);
     }
 
     add_timespec(ret, "split:reconcile-date",
@@ -146,7 +146,7 @@
     for (n=xaccTransGetSplitList(trn); n; n=n->next)
     {
         Split *s = n->data;
-        xmlAddChild(toaddto, split_to_dom_tree(BAD_CAST "trn:split", s));
+        xmlAddChild(toaddto, split_to_dom_tree("trn:split", s));
     }
 }
 
@@ -166,7 +166,7 @@
 
     if(xaccTransGetNum(trn) && (safe_strcmp(xaccTransGetNum(trn), "") != 0))
     {
-        xmlNewTextChild(ret, NULL, BAD_CAST "trn:num", xaccTransGetNum(trn));
+        xmlNewTextChild(ret, NULL, BAD_CAST "trn:num", (xmlChar*)xaccTransGetNum(trn));
     }
 
     add_timespec(ret, "trn:date-posted", xaccTransRetDatePostedTS(trn), TRUE);
@@ -177,7 +177,7 @@
     if(xaccTransGetDescription(trn))
     {
         xmlNewTextChild(ret, NULL, BAD_CAST "trn:description",
-                        xaccTransGetDescription(trn));
+                        (xmlChar*)xaccTransGetDescription(trn));
     }
     
     {
@@ -538,10 +538,10 @@
     {
         Split *spl;
         
-        if(safe_strcmp("text", mark->name) == 0)
+        if(safe_strcmp("text", (char*)mark->name) == 0)
           continue;
 
-        if(safe_strcmp("trn:split", mark->name))
+        if(safe_strcmp("trn:split", (char*)mark->name))
         {
             return FALSE;
         }
Index: test-xml-account.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/test/test-xml-account.c,v
retrieving revision 1.10.4.2
retrieving revision 1.10.4.3
diff -Lsrc/backend/file/test/test-xml-account.c -Lsrc/backend/file/test/test-xml-account.c -u -r1.10.4.2 -r1.10.4.3
--- src/backend/file/test/test-xml-account.c
+++ src/backend/file/test/test-xml-account.c
@@ -31,7 +31,7 @@
 {
     xmlNodePtr mark;
 
-    while (safe_strcmp (node->name, "text") == 0)
+    while (safe_strcmp ((char*)node->name, "text") == 0)
       node = node->next;
 
     if(!check_dom_tree_version(node, "2.0.0"))
@@ -39,31 +39,31 @@
         return g_strdup("version wrong.  Not 2.0.0 or not there");
     }
 
-    if(!node->name || safe_strcmp(node->name, "gnc:account"))
+    if(!node->name || safe_strcmp((char*)node->name, "gnc:account"))
     {
         return g_strdup("Name of toplevel node is bad");
     }
 
     for(mark = node->xmlChildrenNode; mark; mark = mark->next)
     {
-        if(safe_strcmp(mark->name, "text") == 0)
+        if(safe_strcmp((char*)mark->name, "text") == 0)
         {
         }
-        else if(safe_strcmp(mark->name, "act:name") == 0)
+        else if(safe_strcmp((char*)mark->name, "act:name") == 0)
         {
             if(!equals_node_val_vs_string(mark, xaccAccountGetName(act)))
             {
                 return g_strdup("names differ");
             }
         }
-        else if(safe_strcmp(mark->name, "act:id") == 0)
+        else if(safe_strcmp((char*)mark->name, "act:id") == 0)
         {
             if(!equals_node_val_vs_guid(mark, xaccAccountGetGUID(act)))
             {
                 return g_strdup("ids differ");
             }
         }
-        else if(safe_strcmp(mark->name, "act:type") == 0)
+        else if(safe_strcmp((char*)mark->name, "act:type") == 0)
         {
             gchar *txt;
             int type;
@@ -89,7 +89,7 @@
                 g_free(txt);
             }
         }
-        else if(safe_strcmp(mark->name, "act:commodity") == 0)
+        else if(safe_strcmp((char*)mark->name, "act:commodity") == 0)
         {
             if(!equals_node_val_vs_commodity(
                    mark, xaccAccountGetCommodity(act), xaccAccountGetBook(act)))
@@ -97,14 +97,14 @@
                 return g_strdup("commodities differ");
             }
         }
-        else if(safe_strcmp(mark->name, "act:code") == 0)
+        else if(safe_strcmp((char*)mark->name, "act:code") == 0)
         {
             if(!equals_node_val_vs_string(mark, xaccAccountGetCode(act)))
             {
                 return g_strdup("codes differ");
             }
         }
-        else if(safe_strcmp(mark->name, "act:description") == 0)
+        else if(safe_strcmp((char*)mark->name, "act:description") == 0)
         {
             if(!equals_node_val_vs_string(
                    mark, xaccAccountGetDescription(act)))
@@ -112,7 +112,7 @@
                 return g_strdup("descriptions differ");
             }
         }
-        else if(safe_strcmp(mark->name, "act:slots") == 0)
+        else if(safe_strcmp((char*)mark->name, "act:slots") == 0)
         {
             /* xaccAccountDeleteOldData (act); */
 
@@ -121,7 +121,7 @@
                 return g_strdup("slots differ");
             }
         }
-        else if(safe_strcmp(mark->name, "act:parent") == 0)
+        else if(safe_strcmp((char*)mark->name, "act:parent") == 0)
         {
             if(!equals_node_val_vs_guid(
                    mark, xaccAccountGetGUID(xaccGroupGetParentAccount(
@@ -130,7 +130,7 @@
                 return g_strdup("parent ids differ");
             }
         }
-        else if(safe_strcmp(mark->name, "act:commodity-scu") == 0)
+        else if(safe_strcmp((char*)mark->name, "act:commodity-scu") == 0)
         {
             if(!equals_node_val_vs_int(mark, xaccAccountGetCommoditySCU(act)))
             {
Index: test-xml-commodity.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/test/test-xml-commodity.c,v
retrieving revision 1.8.4.2
retrieving revision 1.8.4.3
diff -Lsrc/backend/file/test/test-xml-commodity.c -Lsrc/backend/file/test/test-xml-commodity.c -u -r1.8.4.2 -r1.8.4.3
--- src/backend/file/test/test-xml-commodity.c
+++ src/backend/file/test/test-xml-commodity.c
@@ -24,14 +24,14 @@
 
 #include "Account.h"
 
-static GNCBook *book;
+static QofBook *book;
 
 static gchar*
 node_and_commodity_equal(xmlNodePtr node, const gnc_commodity *com)
 {
     xmlNodePtr mark;
 
-    while (safe_strcmp (node->name, "text") == 0)
+    while (safe_strcmp ((char*)node->name, "text") == 0)
       node = node->next;
 
     if(!check_dom_tree_version(node, "2.0.0"))
@@ -39,17 +39,17 @@
         return "version wrong.  Not 2.0.0 or not there";
     }
 
-    if(!node->name || safe_strcmp(node->name, "gnc:commodity"))
+    if(!node->name || safe_strcmp((char*)node->name, "gnc:commodity"))
     {
         return "Name of toplevel node is bad";
     }
 
     for(mark = node->xmlChildrenNode; mark; mark = mark->next)
     {
-        if(safe_strcmp(mark->name, "text") == 0)
+        if(safe_strcmp((char*)mark->name, "text") == 0)
         {
         }
-        else if(safe_strcmp(mark->name, "cmdty:space") == 0)
+        else if(safe_strcmp((char*)mark->name, "cmdty:space") == 0)
         {
             if(!equals_node_val_vs_string(
                    mark, gnc_commodity_get_namespace(com)))
@@ -57,7 +57,7 @@
                 return "namespaces differ";
             }
         }
-        else if(safe_strcmp(mark->name, "cmdty:id") == 0)
+        else if(safe_strcmp((char*)mark->name, "cmdty:id") == 0)
         {
             if(!equals_node_val_vs_string(
                    mark, gnc_commodity_get_mnemonic(com)))
@@ -65,7 +65,7 @@
                 return "mnemonic differ";
             }
         }
-        else if(safe_strcmp(mark->name, "cmdty:name") == 0)
+        else if(safe_strcmp((char*)mark->name, "cmdty:name") == 0)
         {
             if(!equals_node_val_vs_string(
                    mark, gnc_commodity_get_fullname(com)))
@@ -73,7 +73,7 @@
                 return "names differ";
             }
         }
-        else if(safe_strcmp(mark->name, "cmdty:xcode") == 0)
+        else if(safe_strcmp((char*)mark->name, "cmdty:xcode") == 0)
         {
             if(!equals_node_val_vs_string(
                    mark, gnc_commodity_get_exchange_code(com)))
@@ -81,7 +81,7 @@
                 return "exchange codes differ";
             }
         }
-        else if(safe_strcmp(mark->name, "cmdty:fraction") == 0)
+        else if(safe_strcmp((char*)mark->name, "cmdty:fraction") == 0)
         {
             gchar *txt;
             gint64 type;
@@ -228,7 +228,7 @@
     gnc_module_system_init();
     gnc_module_load("gnucash/engine", 0);
 
-    book = gnc_book_new ();
+    book = qof_book_new ();
 
     if(argc > 1)
     {
Index: test-dom-converters1.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/test/test-dom-converters1.c,v
retrieving revision 1.4.4.4
retrieving revision 1.4.4.5
diff -Lsrc/backend/file/test/test-dom-converters1.c -Lsrc/backend/file/test/test-dom-converters1.c -u -r1.4.4.4 -r1.4.4.5
--- src/backend/file/test/test-dom-converters1.c
+++ src/backend/file/test/test-dom-converters1.c
@@ -70,7 +70,7 @@
         test_node = xmlNewNode(NULL, BAD_CAST "test-node");
         test_string1 = get_random_string();
 
-        xmlNodeAddContent(test_node, test_string1);
+        xmlNodeAddContent(test_node, BAD_CAST test_string1);
 
         test_string2 = dom_tree_to_text(test_node);
 
Index: test-file-stuff.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/test/test-file-stuff.c,v
retrieving revision 1.7.4.3
retrieving revision 1.7.4.4
diff -Lsrc/backend/file/test/test-file-stuff.c -Lsrc/backend/file/test/test-file-stuff.c -u -r1.7.4.3 -r1.7.4.4
--- src/backend/file/test/test-file-stuff.c
+++ src/backend/file/test/test-file-stuff.c
@@ -97,7 +97,7 @@
     g_return_val_if_fail(node->properties->xmlAttrPropertyValue->content,
                          FALSE);
 
-    verteststr = node->properties->xmlAttrPropertyValue->content;
+    verteststr = (char*) node->properties->xmlAttrPropertyValue->content;
     if(safe_strcmp(verstr, verteststr) == 0)
     {
         return TRUE;
Index: test-xml-transaction.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/test/test-xml-transaction.c,v
retrieving revision 1.17.4.3
retrieving revision 1.17.4.4
diff -Lsrc/backend/file/test/test-xml-transaction.c -Lsrc/backend/file/test/test-xml-transaction.c -u -r1.17.4.3 -r1.17.4.4
--- src/backend/file/test/test-xml-transaction.c
+++ src/backend/file/test/test-xml-transaction.c
@@ -30,7 +30,7 @@
 #include "Transaction.h"
 #include "TransactionP.h"
 
-static GNCBook *book;
+static QofBook *book;
 
 extern gboolean gnc_transaction_xml_v2_testing;
 
@@ -47,7 +47,7 @@
 
         for(mark2 = mark->xmlChildrenNode; mark2; mark2 = mark2->next)
         {
-            if(safe_strcmp(mark2->name, "split:value") == 0)
+            if(safe_strcmp((char*)mark2->name, "split:value") == 0)
             {
                 gnc_numeric *num = dom_tree_to_gnc_numeric(mark2);
 
@@ -58,7 +58,7 @@
 
                 g_free(num);
             }
-            else if(safe_strcmp(mark2->name, "split:account") == 0)
+            else if(safe_strcmp((char*)mark2->name, "split:account") == 0)
             {
                 GUID *accid = dom_tree_to_guid(mark2);
                 Account *account = xaccSplitGetAccount (spl);
@@ -87,7 +87,7 @@
     
     for(mark = node->children; mark != NULL; mark = mark->next)
     {
-        if(safe_strcmp(mark->name, "split:id") == 0)
+        if(safe_strcmp((char*)mark->name, "split:id") == 0)
         {
             GUID *id = dom_tree_to_guid(mark);
 
@@ -98,7 +98,7 @@
             }
             g_free(id);
         }
-        else if(safe_strcmp(mark->name, "split:memo") == 0)
+        else if(safe_strcmp((char*)mark->name, "split:memo") == 0)
         {
             char *memo = dom_tree_to_text(mark);
 
@@ -109,7 +109,7 @@
             }
             g_free(memo);
         }
-        else if(safe_strcmp(mark->name, "split:reconciled-state") == 0)
+        else if(safe_strcmp((char*)mark->name, "split:reconciled-state") == 0)
         {
             char *rs = dom_tree_to_text(mark);
 
@@ -120,7 +120,7 @@
             }
             g_free(rs);
         }
-        else if(safe_strcmp(mark->name, "split:value") == 0)
+        else if(safe_strcmp((char*)mark->name, "split:value") == 0)
         {
             gnc_numeric *num = dom_tree_to_gnc_numeric(mark);
             gnc_numeric val = xaccSplitGetValue(spl);
@@ -134,7 +134,7 @@
             }
             g_free(num);
         }
-        else if(safe_strcmp(mark->name, "split:quantity") == 0)
+        else if(safe_strcmp((char*)mark->name, "split:quantity") == 0)
         {
             gnc_numeric *num = dom_tree_to_gnc_numeric(mark);
             gnc_numeric val = xaccSplitGetAmount(spl);
@@ -153,7 +153,7 @@
             }
             g_free(num);
         }
-        else if(safe_strcmp(mark->name, "split:account") == 0)
+        else if(safe_strcmp((char*)mark->name, "split:account") == 0)
         {
             GUID *id = dom_tree_to_guid(mark);
             Account *account = xaccSplitGetAccount (spl);
@@ -206,7 +206,7 @@
 {
     xmlNodePtr mark;
     
-    while (safe_strcmp (node->name, "text") == 0)
+    while (safe_strcmp ((char*)node->name, "text") == 0)
       node = node->next;
 
     if(!check_dom_tree_version(node, "2.0.0"))
@@ -214,24 +214,24 @@
         return "version wrong.  Not 2.0.0 or not there";
     }
 
-    if(!node->name || safe_strcmp(node->name, "gnc:transaction"))
+    if(!node->name || safe_strcmp((char*)node->name, "gnc:transaction"))
     {
         return "Name of toplevel node is bad";
     }
 
     for(mark = node->xmlChildrenNode; mark; mark = mark->next)
     {
-        if(safe_strcmp(mark->name, "text") == 0)
+        if(safe_strcmp((char*)mark->name, "text") == 0)
         {
         }
-        else if(safe_strcmp(mark->name, "trn:id") == 0)
+        else if(safe_strcmp((char*)mark->name, "trn:id") == 0)
         {
             if(!equals_node_val_vs_guid(mark, xaccTransGetGUID(trn)))
             {
                 return "ids differ";
             }
         }
-        else if(safe_strcmp(mark->name, "trn:currency") == 0)
+        else if(safe_strcmp((char*)mark->name, "trn:currency") == 0)
         {
             if(!equals_node_val_vs_commodity(
                    mark, xaccTransGetCurrency(trn), xaccTransGetBook(trn)))
@@ -239,42 +239,42 @@
                 return g_strdup("currencies differ");
             }
         }
-        else if(safe_strcmp(mark->name, "trn:num") == 0)
+        else if(safe_strcmp((char*)mark->name, "trn:num") == 0)
         {
             if(!equals_node_val_vs_string(mark, xaccTransGetNum(trn)))
             {
                 return "nums differ";
             }
         }
-        else if(safe_strcmp(mark->name, "trn:date-posted") == 0)
+        else if(safe_strcmp((char*)mark->name, "trn:date-posted") == 0)
         {
             if(!equals_node_val_vs_date(mark, xaccTransRetDatePostedTS(trn)))
             {
                 return "posted dates differ";
             }
         }
-        else if(safe_strcmp(mark->name, "trn:date-entered") == 0)
+        else if(safe_strcmp((char*)mark->name, "trn:date-entered") == 0)
         {
             if(!equals_node_val_vs_date(mark, xaccTransRetDateEnteredTS(trn)))
             {
                 return "entered dates differ";
             }
         }
-        else if(safe_strcmp(mark->name, "trn:description") == 0)
+        else if(safe_strcmp((char*)mark->name, "trn:description") == 0)
         {
             if(!equals_node_val_vs_string(mark, xaccTransGetDescription(trn)))
             {
                 return "descriptions differ";
             }
         }
-        else if(safe_strcmp(mark->name, "trn:slots") == 0)
+        else if(safe_strcmp((char*)mark->name, "trn:slots") == 0)
         {
             if(!equals_node_val_vs_kvp_frame(mark, xaccTransGetSlots(trn)))
             {
                 return "slots differ";
             }
         }
-        else if(safe_strcmp(mark->name, "trn:splits") == 0)
+        else if(safe_strcmp((char*)mark->name, "trn:splits") == 0)
         {
             char *msg = equals_node_val_vs_splits (mark, trn);
             if(msg != NULL)
@@ -467,7 +467,7 @@
 
     gnc_transaction_xml_v2_testing = TRUE;
 
-    book = gnc_book_new ();
+    book = qof_book_new ();
 
     if(argc > 1)
     {
Index: Makefile.am
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Makefile.am,v
retrieving revision 1.94.2.11
retrieving revision 1.94.2.12
diff -Lsrc/engine/Makefile.am -Lsrc/engine/Makefile.am -u -r1.94.2.11 -r1.94.2.12
--- src/engine/Makefile.am
+++ src/engine/Makefile.am
@@ -1,5 +1,3 @@
-qof_book_merge_lo_INCLUDES = -DG_LOG_DOMAIN=\"qof-book-merge\"
-
 SUBDIRS = . test-core test 
 PWD := $(shell pwd)
 
@@ -54,6 +52,7 @@
   qofbackend.c \
   qof_book_merge.c \
   qofbook.c \
+  qofchoice.c \
   qofclass.c \
   qofid.c \
   qofinstance.c \
@@ -118,6 +117,7 @@
   qofbook.h \
   qof_book_merge.h \
   qofclass.h \
+  qofchoice.h \
   qofid.h \
   qofinstance.h \
   qofmath128.c \


More information about the gnucash-changes mailing list