[Gnucash-changes] Print a better error when an invalid timestamp is
in a data file.
David Hampton
hampton at cvs.gnucash.org
Fri Oct 28 17:15:04 EDT 2005
Log Message:
-----------
Print a better error when an invalid timestamp is in a data file.
Tags:
----
gnucash-gnome2-dev
Modified Files:
--------------
gnucash:
ChangeLog
gnucash/src/backend/file:
gnc-pricedb-xml-v2.c
gnc-transaction-xml-v2.c
io-gncxml-v1.c
sixtp-dom-parsers.c
sixtp-dom-parsers.h
gnucash/src/backend/file/test:
test-dom-converters1.c
gnucash/src/business/business-core/file:
gnc-entry-xml-v2.c
gnc-invoice-xml-v2.c
gnc-order-xml-v2.c
Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1487.2.360
retrieving revision 1.1487.2.361
diff -LChangeLog -LChangeLog -u -r1.1487.2.360 -r1.1487.2.361
--- ChangeLog
+++ ChangeLog
@@ -1,3 +1,15 @@
+2005-10-28 David Hampton <hampton at employees.org>
+
+ * src/backend/file/gnc-pricedb-xml-v2.c:
+ * src/backend/file/gnc-transaction-xml-v2.c:
+ * src/backend/file/io-gncxml-v1.c:
+ * src/backend/file/sixtp-dom-parsers.[ch]:
+ * src/backend/file/test/test-dom-converters1.c:
+ * src/business/business-core/file/gnc-entry-xml-v2.c:
+ * src/business/business-core/file/gnc-invoice-xml-v2.c:
+ * src/business/business-core/file/gnc-order-xml-v2.c: Print a
+ better error when an invalid timestamp is in a data file.
+
2005-10-27 David Hampton <hampton at employees.org>
* src/engine/gnc-budget-book-p.h:
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.7
retrieving revision 1.4.4.8
diff -Lsrc/backend/file/test/test-dom-converters1.c -Lsrc/backend/file/test/test-dom-converters1.c -u -r1.4.4.7 -r1.4.4.8
--- src/backend/file/test/test-dom-converters1.c
+++ src/backend/file/test/test-dom-converters1.c
@@ -137,7 +137,7 @@
test_spec2 = dom_tree_to_timespec(test_node);
- if(!is_valid_timespec(test_spec2))
+ if (!dom_tree_valid_timespec(&test_spec2, "test-spec"))
{
failure_args("dom_tree_to_timespec",
__FILE__, __LINE__, "NULL return");
Index: io-gncxml-v1.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/io-gncxml-v1.c,v
retrieving revision 1.20.4.7
retrieving revision 1.20.4.8
diff -Lsrc/backend/file/io-gncxml-v1.c -Lsrc/backend/file/io-gncxml-v1.c -u -r1.20.4.7 -r1.20.4.8
--- src/backend/file/io-gncxml-v1.c
+++ src/backend/file/io-gncxml-v1.c
@@ -3580,7 +3580,7 @@
gnc_price_set_currency(p, c);
} 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;
+ if (!dom_tree_valid_timespec(&t, sub_node->name)) return FALSE;
gnc_price_set_time(p, t);
} else if(safe_strcmp("price:source", (char*)sub_node->name) == 0) {
char *text = dom_tree_to_text(sub_node);
Index: sixtp-dom-parsers.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/sixtp-dom-parsers.h,v
retrieving revision 1.9.4.4
retrieving revision 1.9.4.5
diff -Lsrc/backend/file/sixtp-dom-parsers.h -Lsrc/backend/file/sixtp-dom-parsers.h -u -r1.9.4.4 -r1.9.4.5
--- src/backend/file/sixtp-dom-parsers.h
+++ src/backend/file/sixtp-dom-parsers.h
@@ -47,7 +47,7 @@
Recurrence* dom_tree_to_recurrence(xmlNodePtr node);
Timespec dom_tree_to_timespec(xmlNodePtr node);
-#define is_valid_timespec(ts) (ts.tv_sec || ts.tv_nsec)
+gboolean dom_tree_valid_timespec(Timespec *ts, const gchar *name);
GDate* dom_tree_to_gdate(xmlNodePtr node);
gnc_numeric* dom_tree_to_gnc_numeric(xmlNodePtr node);
gchar * dom_tree_to_text(xmlNodePtr tree);
Index: sixtp-dom-parsers.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/backend/file/sixtp-dom-parsers.c,v
retrieving revision 1.12.4.10
retrieving revision 1.12.4.11
diff -Lsrc/backend/file/sixtp-dom-parsers.c -Lsrc/backend/file/sixtp-dom-parsers.c -u -r1.12.4.10 -r1.12.4.11
--- src/backend/file/sixtp-dom-parsers.c
+++ src/backend/file/sixtp-dom-parsers.c
@@ -850,3 +850,15 @@
return successful;
}
+
+gboolean
+dom_tree_valid_timespec (Timespec *ts, const gchar *name)
+{
+
+ if (ts->tv_sec || ts->tv_nsec)
+ return TRUE;
+
+ g_warning("Invalid timestamp in data file. Look for a '%s' entry "
+ "with a date of 1969-12-31 or 1970-01-01.", name);
+ return FALSE;
+}
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.5
retrieving revision 1.6.4.6
diff -Lsrc/backend/file/gnc-pricedb-xml-v2.c -Lsrc/backend/file/gnc-pricedb-xml-v2.c -u -r1.6.4.5 -r1.6.4.6
--- src/backend/file/gnc-pricedb-xml-v2.c
+++ src/backend/file/gnc-pricedb-xml-v2.c
@@ -105,7 +105,7 @@
gnc_price_set_currency(p, c);
} 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;
+ if (!dom_tree_valid_timespec(&t, sub_node->name)) return FALSE;
gnc_price_set_time(p, t);
} else if(safe_strcmp("price:source", (char*)sub_node->name) == 0) {
char *text = dom_tree_to_text(sub_node);
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.6
retrieving revision 1.9.4.7
diff -Lsrc/backend/file/gnc-transaction-xml-v2.c -Lsrc/backend/file/gnc-transaction-xml-v2.c -u -r1.9.4.6 -r1.9.4.7
--- src/backend/file/gnc-transaction-xml-v2.c
+++ src/backend/file/gnc-transaction-xml-v2.c
@@ -277,7 +277,7 @@
Timespec ts;
ts = dom_tree_to_timespec(node);
- g_return_val_if_fail(is_valid_timespec(ts), FALSE);
+ if (!dom_tree_valid_timespec(&ts, node->name)) return FALSE;
xaccSplitSetDateReconciledTS(pdata->split, &ts);
@@ -437,7 +437,7 @@
tm = dom_tree_to_timespec(node);
- g_return_val_if_fail(is_valid_timespec(tm), FALSE);
+ if (!dom_tree_valid_timespec(&tm, node->name)) return FALSE;
func(trn, &tm);
Index: gnc-entry-xml-v2.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/file/gnc-entry-xml-v2.c,v
retrieving revision 1.11.4.7
retrieving revision 1.11.4.8
diff -Lsrc/business/business-core/file/gnc-entry-xml-v2.c -Lsrc/business/business-core/file/gnc-entry-xml-v2.c -u -r1.11.4.7 -r1.11.4.8
--- src/business/business-core/file/gnc-entry-xml-v2.c
+++ src/business/business-core/file/gnc-entry-xml-v2.c
@@ -238,7 +238,7 @@
void (*func)(GncEntry *entry, Timespec ts))
{
Timespec ts = dom_tree_to_timespec (node);
- g_return_val_if_fail(is_valid_timespec(ts), FALSE);
+ if (!dom_tree_valid_timespec(&ts, node->name)) return FALSE;
func(entry, ts);
return TRUE;
Index: gnc-order-xml-v2.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/file/gnc-order-xml-v2.c,v
retrieving revision 1.4.4.8
retrieving revision 1.4.4.9
diff -Lsrc/business/business-core/file/gnc-order-xml-v2.c -Lsrc/business/business-core/file/gnc-order-xml-v2.c -u -r1.4.4.8 -r1.4.4.9
--- src/business/business-core/file/gnc-order-xml-v2.c
+++ src/business/business-core/file/gnc-order-xml-v2.c
@@ -131,7 +131,7 @@
void (*func)(GncOrder *order, Timespec ts))
{
Timespec ts = dom_tree_to_timespec(node);
- g_return_val_if_fail(is_valid_timespec(ts), FALSE);
+ if (!dom_tree_valid_timespec(&ts, node->name)) return FALSE;
func(order, ts);
return TRUE;
Index: gnc-invoice-xml-v2.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/business/business-core/file/gnc-invoice-xml-v2.c,v
retrieving revision 1.12.4.7
retrieving revision 1.12.4.8
diff -Lsrc/business/business-core/file/gnc-invoice-xml-v2.c -Lsrc/business/business-core/file/gnc-invoice-xml-v2.c -u -r1.12.4.7 -r1.12.4.8
--- src/business/business-core/file/gnc-invoice-xml-v2.c
+++ src/business/business-core/file/gnc-invoice-xml-v2.c
@@ -184,7 +184,7 @@
void (*func)(GncInvoice *invoice, Timespec ts))
{
Timespec ts = dom_tree_to_timespec(node);
- g_return_val_if_fail(is_valid_timespec(ts), FALSE);
+ if (!dom_tree_valid_timespec(&ts, node->name)) return FALSE;
func(invoice, ts);
return TRUE;
More information about the gnucash-changes
mailing list