From: Stephen Gildea Date: Sun, 30 May 2021 18:05:42 +0000 (-0700) Subject: time-stamp: fix minor bug when parsing option combos X-Git-Tag: emacs-28.0.90~2259 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a5b57fc6af7ec87c59d00a7631576f9f4bf99841;p=emacs.git time-stamp: fix minor bug when parsing option combos * lisp/time-stamp.el (time-stamp-string-preprocess): Handle digit options correctly to avoid overcounting colon options. * test/lisp/time-stamp-tests.el (time-stamp-format-time-zone-offset): Add a new test case that would have caught the option-parsing error. --- diff --git a/lisp/time-stamp.el b/lisp/time-stamp.el index 42455ddfe33..0cc566f0d8c 100644 --- a/lisp/time-stamp.el +++ b/lisp/time-stamp.el @@ -499,7 +499,8 @@ and all `time-stamp-format' compatibility." (< ind fmt-len))) (if (and (<= ?0 cur-char) (>= ?9 cur-char)) ;; get format width - (let ((field-index ind)) + (let ((field-index ind) + (first-digit cur-char)) (while (progn (setq ind (1+ ind)) (setq cur-char (if (< ind fmt-len) @@ -510,6 +511,7 @@ and all `time-stamp-format' compatibility." (setq field-width (substring format field-index ind)) (setq ind (1- ind)) + (setq cur-char first-digit) t)))) (setq prev-char cur-char) ;; some characters we actually use diff --git a/test/lisp/time-stamp-tests.el b/test/lisp/time-stamp-tests.el index c0213536303..b42271e4e51 100644 --- a/test/lisp/time-stamp-tests.el +++ b/test/lisp/time-stamp-tests.el @@ -525,7 +525,7 @@ (should (equal (time-stamp-string "%#Z" ref-time1) utc-abbr))))) (ert-deftest time-stamp-format-time-zone-offset () - "Test time-stamp format %z." + "Tests time-stamp legacy format %z and new offset format %5z." (with-time-stamp-test-env (let ((utc-abbr (format-time-string "%#Z" ref-time1 t))) ;; documented 1995-2019, warned since 2019, will change @@ -544,6 +544,7 @@ (should (equal (time-stamp-string "%_z" ref-time1) "+0000")) (should (equal (time-stamp-string "%:z" ref-time1) "+00:00")) (should (equal (time-stamp-string "%::z" ref-time1) "+00:00:00")) + (should (equal (time-stamp-string "%9::z" ref-time1) "+00:00:00")) (should (equal (time-stamp-string "%:::z" ref-time1) "+00")))) (ert-deftest time-stamp-format-non-date-conversions ()