[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>
+<kvp type="kvp" path="/from-sched-xaction" value="guid">c858b9a3235723b55bc1179f0e8c1322</kvp>
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>
+<kvp type="pilot_addr_kvp" path="/user/name" value="guid">c858b9a3235723b55bc1179f0e8c1322</kvp>
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