gnucash maint: [qif/qif-parse] restore handle non-4-digit dates, and erratum
Christopher Lam
clam at code.gnucash.org
Mon Aug 5 06:19:12 EDT 2019
Updated via https://github.com/Gnucash/gnucash/commit/6252de21 (commit)
from https://github.com/Gnucash/gnucash/commit/08de1a0a (commit)
commit 6252de21fd2c02b2a45b72f0ca63259ef2365236
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Mon Aug 5 07:37:16 2019 +0800
[qif/qif-parse] restore handle non-4-digit dates, and erratum
db93aec58 contained logic error in date-handling, would invalidate
2-digit years.
Also parse-bang-field needs to trim trailing space.
diff --git a/gnucash/import-export/qif-imp/qif-parse.scm b/gnucash/import-export/qif-imp/qif-parse.scm
index 3c9194ee5..61fa160ec 100644
--- a/gnucash/import-export/qif-imp/qif-parse.scm
+++ b/gnucash/import-export/qif-imp/qif-parse.scm
@@ -149,7 +149,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (qif-parse:parse-bang-field read-value)
- (let ((bang-field (string-downcase! (string-trim read-value))))
+ (let ((bang-field (string-downcase! (string-trim-right read-value))))
;; The QIF files output by the WWW site of Credit Lyonnais
;; begin by: !type bank
;; instead of: !Type:bank
@@ -235,8 +235,8 @@
(define (date? d m y ys)
(and (number? d) (<= 1 d 31)
(number? m) (<= 1 m 12)
- (= 4 (string-length ys))
- (number? y) (> y 1930)))
+ (number? y) (or (not (= 4 (string-length ys)))
+ (> y 1930))))
(let* ((date-parts (list (match:substring match 1)
(match:substring match 2)
(match:substring match 3)))
diff --git a/gnucash/import-export/qif-imp/test/test-qif-parse.scm b/gnucash/import-export/qif-imp/test/test-qif-parse.scm
index ea47029d9..6e550a629 100644
--- a/gnucash/import-export/qif-imp/test/test-qif-parse.scm
+++ b/gnucash/import-export/qif-imp/test/test-qif-parse.scm
@@ -157,6 +157,12 @@
"1979/03/03"
'(d-m-y y-m-d m-d-y y-d-m)))
+ (test-equal "qif-parse:check-date-format 03/03/79"
+ '(d-m-y m-d-y)
+ (qif-parse:check-date-format
+ "03/03/79"
+ '(d-m-y y-m-d m-d-y y-d-m)))
+
(test-equal "qif-parse:check-date-format 19790303"
'(y-m-d y-d-m)
(qif-parse:check-date-format
Summary of changes:
gnucash/import-export/qif-imp/qif-parse.scm | 6 +++---
gnucash/import-export/qif-imp/test/test-qif-parse.scm | 6 ++++++
2 files changed, 9 insertions(+), 3 deletions(-)
More information about the gnucash-changes
mailing list