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