[Gnucash-changes] CashUtil Sync

Neil Williams codehelp at cvs.gnucash.org
Sun Sep 4 12:44:19 EDT 2005


Log Message:
-----------
CashUtil Sync

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash/src/backend/qsf:
        Makefile.am
        qsf-backend.c
        qsf-dir.h.in
        qsf-xml.c
        qsf-xml.h

Revision Data
-------------
Index: qsf-xml.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/qsf/Attic/qsf-xml.h,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -Lsrc/backend/qsf/qsf-xml.h -Lsrc/backend/qsf/qsf-xml.h -u -r1.1.2.6 -r1.1.2.7
--- src/backend/qsf/qsf-xml.h
+++ src/backend/qsf/qsf-xml.h
@@ -48,6 +48,40 @@
 #include "qofsession-p.h"
 #include "qofbook-p.h"
 
+#if defined(HAVE_GETTEXT)             /* HAVE_GETTEXT */
+
+#include <libintl.h>
+#include <locale.h>
+
+#undef _
+#undef Q_
+
+#ifdef DISABLE_GETTEXT_UNDERSCORE
+#define _(String) (String)
+#define Q_(String) gnc_qualifier_prefix_noop(String)
+#else                                 /* ENABLE_GETTEXT_UNDERSCORE */
+#define _(String) gettext(String)
+#define Q_(String) gnc_qualifier_prefix_gettext(String)
+#endif                                /* End ENABLE_GETTEXT_UNDERSCORE */
+
+#else                                 /* Not HAVE_GETTEXT */
+#if !defined(__USE_GNU_GETTEXT)
+
+#undef _
+#undef Q_
+#define _(String)       (String)
+#define Q_(String) gnc_qualifier_prefix_noop(String)
+#define gettext(String) (String)
+#define ngettext(msgid, msgid_plural, n) (((n)==1) ? \
+                                            (msgid) : (msgid_plural))
+
+#endif                                /* End not__USE_GNU_GETTEXT */
+#endif                                /* End Not HAVE_GETTEXT */
+
+#undef  N_
+#define N_(String) (String)
+
+
 typedef enum  {
 	QSF_UNDEF = 0, /**< Initial undefined value. */
 	IS_QSF_MAP,   /**< A QSF map */
@@ -95,13 +129,13 @@
 /** @} */
 /** @name Representing KVP as XML
 
-<kvp type="kvp" path="/from-sched-xaction" value="guid">c858b9a3235723b55bc1179f0e8c1322</kvp>
+&lt;kvp type="kvp" path="/from-sched-xaction" value="guid"&gt;c858b9a3235723b55bc1179f0e8c1322&lt;/kvp&gt;
 A kvp type KVP parameter located at $path containing a GUID $value.
 
 The relevance of type="kvp" won't be evident in GnuCash, they all use "kvp".
 
 A non-GnuCash example helps:
-<kvp type="pilot_addr_kvp" path="/user/name" value="guid">c858b9a3235723b55bc1179f0e8c1322</kvp>
+&lt;kvp type="pilot_addr_kvp" path="/user/name" value="guid"&gt;c858b9a3235723b55bc1179f0e8c1322&lt;/kvp&gt;
 A pilot_addr_kvp type KVP parameter located at /user/name containing a guid value.
 @{ */
 
@@ -446,9 +480,9 @@
 
 /** \brief Compares an xmlDoc in memory against the schema file.
 
- at params	schema_dir  set at compile time to $prefix/share/qsf/
- at params schema_filename Either the QSF Object Schema or the QSF Map Schema.
- at params doc 	The xmlDoc read from the file using libxml2.
+ at param	schema_dir  set at compile time to $prefix/share/qsf/
+ at param schema_filename Either the QSF Object Schema or the QSF Map Schema.
+ at param doc 	The xmlDoc read from the file using libxml2.
 
 Ensure that you call the right schema_filename for the doc in question!
 
Index: Makefile.am
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/qsf/Attic/Makefile.am,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -Lsrc/backend/qsf/Makefile.am -Lsrc/backend/qsf/Makefile.am -u -r1.1.2.2 -r1.1.2.3
--- src/backend/qsf/Makefile.am
+++ src/backend/qsf/Makefile.am
@@ -6,6 +6,7 @@
   -I.. -I../.. \
   -I${top_srcdir}/src/backend \
   -I${top_srcdir}/src/engine \
+  -DLOCALE_DIR=\""$(datadir)/locale"\" \
   -I${top_srcdir}/src/gnc-module \
   ${LIBXML2_CFLAGS} \
   ${GLIB_CFLAGS}
Index: qsf-dir.h.in
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/qsf/Attic/qsf-dir.h.in,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -Lsrc/backend/qsf/qsf-dir.h.in -Lsrc/backend/qsf/qsf-dir.h.in -u -r1.1.2.1 -r1.1.2.2
--- src/backend/qsf/qsf-dir.h.in
+++ src/backend/qsf/qsf-dir.h.in
@@ -15,7 +15,7 @@
  *  This program is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Library General Public License for more details.
+ *  GNU General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
  *  along with this program; if not, write to the Free Software
@@ -23,3 +23,4 @@
  */
 
 #define QSF_SCHEMA_DIR "@-QSF_SCHEMA_DIR-@"
+
Index: qsf-xml.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/qsf/Attic/qsf-xml.c,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -Lsrc/backend/qsf/qsf-xml.c -Lsrc/backend/qsf/qsf-xml.c -u -r1.1.2.6 -r1.1.2.7
--- src/backend/qsf/qsf-xml.c
+++ src/backend/qsf/qsf-xml.c
@@ -26,6 +26,7 @@
 #include <libxml/xmlversion.h>
 #include "qsf-dir.h"
 #include "qsf-xml.h"
+static int module = MOD_BACKEND;
 
 void qsf_free_params(qsf_param *params)
 {
@@ -78,7 +79,7 @@
 	gchar *schema_path;
 	gint result;
 
-	if(doc == NULL) return FALSE;
+	g_return_val_if_fail(doc || schema_filename, FALSE);
 	schema_path = g_strdup_printf("%s/%s", schema_dir, schema_filename);
 	qsf_schema_file = xmlSchemaNewParserCtxt(schema_path);
 	qsf_schema = xmlSchemaParse(qsf_schema_file);
@@ -135,13 +136,13 @@
 			if(g_hash_table_size(valid->validation_table) > count)
 			{
 				valid->valid_object_count++;
-			}
 			if(TRUE == qof_class_is_registered((QofIdTypeConst) object_declaration))
 			{
 				valid->qof_registered_count++;
 			}
 		}
 	}
+	}
 }
 
 gboolean is_our_qsf_object(const char *path)
@@ -153,13 +154,17 @@
 	gint table_count;
 
 	g_return_val_if_fail((path != NULL),FALSE);
-	if(path == NULL) { return FALSE; }
 	doc = xmlParseFile(path);
 	if(doc == NULL)  { return FALSE; }
-	if(TRUE != qsf_is_valid(QSF_SCHEMA_DIR, QSF_OBJECT_SCHEMA, doc)) { return FALSE; }
+	if(TRUE != qsf_is_valid(QSF_SCHEMA_DIR, QSF_OBJECT_SCHEMA, doc)) { 
+		PINFO (" validation failed %s %s %s", QSF_SCHEMA_DIR, 
+			QSF_OBJECT_SCHEMA, path);
+		return FALSE; 
+	}
 	object_root = xmlDocGetRootElement(doc);
 	valid.validation_table = g_hash_table_new(g_str_hash, g_str_equal);
 	valid.qof_registered_count = 0;
+	valid.valid_object_count = 0;
 	iter.ns = object_root->ns;
 	qsf_valid_foreach(object_root, qsf_object_validation_handler, &iter, &valid);
 	table_count = g_hash_table_size(valid.validation_table);
Index: qsf-backend.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/qsf/Attic/qsf-backend.c,v
retrieving revision 1.1.2.16
retrieving revision 1.1.2.17
diff -Lsrc/backend/qsf/qsf-backend.c -Lsrc/backend/qsf/qsf-backend.c -u -r1.1.2.16 -r1.1.2.17
--- src/backend/qsf/qsf-backend.c
+++ src/backend/qsf/qsf-backend.c
@@ -28,11 +28,31 @@
 #include "qsf-dir.h"
 #include "qof-backend-qsf.h"
 #include <errno.h>
+#include <sys/stat.h>
 
 #define QSF_TYPE_BINARY "binary"
 #define QSF_TYPE_GLIST "glist"
 #define QSF_TYPE_FRAME "frame"
 
+static int module = MOD_BACKEND;
+
+static void
+qsf_load_config(QofBackend *be, KvpFrame *config)
+{
+
+}
+
+static KvpFrame*
+qsf_get_config(QofBackend *be)
+{
+	if(!be) { return NULL; }
+	if(!kvp_frame_is_empty(be->backend_configuration)) {
+		kvp_frame_delete(be->backend_configuration);
+		be->backend_configuration = kvp_frame_new();
+	}
+	return be->backend_configuration;
+}
+
 struct QSFBackend_s 
 {
 	QofBackend be;
@@ -94,8 +114,15 @@
 }
 
 static gboolean 
-qsf_determine_file_type(QofBackend *be, const char *path)
+qsf_determine_file_type(const char *path)
 {
+	struct stat sbuf;
+
+	PINFO (" %s", path);
+	if (!path) { return TRUE; }
+	if (0 == safe_strcmp(path, QOF_STDOUT)) { return TRUE; }
+	if (stat(path, &sbuf) <0)    { return FALSE; }
+	if (sbuf.st_size == 0)       { return TRUE; }
 	if(is_our_qsf_object(path))  { return TRUE; }
 	else if(is_qsf_object(path)) { return TRUE; }
     else if(is_qsf_map(path))    { return TRUE; }
@@ -113,6 +140,7 @@
 	QSFBackend *qsf_be;
 	char *p, *path;
 
+	PINFO (" ignore_lock=%d create_if_nonexistent=%d", ignore_lock, create_if_nonexistent);
 	g_return_if_fail(be != NULL);
 	qsf_be = (QSFBackend*)be;
 	g_return_if_fail(qsf_be->params != NULL);
@@ -172,7 +200,7 @@
 QofBackendError 
 qof_session_load_qsf_object(QofSession *first_session, const char *path)
 {
-	g_message ("%s = ERR_QSF_NO_MAP", path);
+	PINFO ("%s = ERR_QSF_NO_MAP", path);
 	return ERR_QSF_NO_MAP;
 }
 
@@ -663,7 +691,7 @@
 	params = (qsf_param*) data;
 	/* Skip unsupported objects */
 	if((qsf_obj->create == NULL)||(qsf_obj->foreach == NULL)){
-//		g_message (" qsf_obj QOF support failed %s", qsf_obj->e_type);
+		PINFO (" qsf_obj QOF support failed %s", qsf_obj->e_type);
 		return;
 	}
 	params->qof_obj_type = qsf_obj->e_type;
@@ -952,7 +980,7 @@
 		if(TRUE != string_to_guid((char*)xmlNodeGetContent(node), cm_guid))
 		{
 			qof_backend_set_error(params->be, ERR_QSF_BAD_OBJ_GUID);
-			g_message (" string to guid failed for %s:%s:%s",
+			PINFO (" string to guid conversion failed for %s:%s:%s",
 				xmlNodeGetContent(node), obj_type, qof_type);
 			return;
 		}
@@ -1023,7 +1051,7 @@
 		if(TRUE != string_to_guid((char*)xmlNodeGetContent(node), cm_guid))
 		{
 			qof_backend_set_error(params->be, ERR_QSF_BAD_OBJ_GUID);
-			g_message (" string to guid collect failed for %s", xmlNodeGetContent(node));
+			PINFO (" string to guid collect failed for %s", xmlNodeGetContent(node));
 			return;
 		}
 		// create a QofEntityReference with this type and GUID.
@@ -1081,9 +1109,8 @@
 	
 	be->sync = qsf_write_file;
 	/* use for maps, later. */
-	be->load_config = NULL;
-	be->get_config = NULL;
-	be->check_data_type = qsf_determine_file_type;
+	be->load_config = qsf_load_config;
+	be->get_config = qsf_get_config;
 
 	qsf_be->fullpath = NULL;
 	return be;
@@ -1102,15 +1129,24 @@
 	g_free (prov);
 }
 
+/* although we call gettext here, none of the
+QofBackendProvider strings are translatable. */
 void
 qsf_provider_init(void)
 {
+	#ifdef ENABLE_NLS
+	setlocale (LC_ALL, "");
+	bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+	#endif
 	QofBackendProvider *prov;
 	prov = g_new0 (QofBackendProvider, 1);
 	prov->provider_name = "QSF Backend Version 0.1";
 	prov->access_method = "file";
 	prov->partial_book_supported = TRUE;
 	prov->backend_new = qsf_backend_new;
+	prov->check_data_type = qsf_determine_file_type;
 	prov->provider_config = "qsf-backend-v0.1.xml";
 	prov->provider_free = qsf_provider_free;
 	qof_backend_register_provider (prov);


More information about the gnucash-changes mailing list