From 9ffbe127c13803e1a949a18f8e84ed3eeb440b74 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 19 Apr 2019 23:25:04 -0400 Subject: [PATCH] * lisp/calendar/parse-time.el (parse-time-string): Use functionp and setf --- lisp/calendar/parse-time.el | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lisp/calendar/parse-time.el b/lisp/calendar/parse-time.el index 93e7e53b6ab..68d6ce05d6c 100644 --- a/lisp/calendar/parse-time.el +++ b/lisp/calendar/parse-time.el @@ -168,8 +168,7 @@ unknown DST value is returned as -1." (when (and (not (nth (car slots) time)) ;not already set (setq parse-time-val (cond ((and (consp predicate) - (not (eq (car predicate) - 'lambda))) + (not (functionp predicate))) (and (numberp parse-time-elt) (<= (car predicate) parse-time-elt) (or (not (cdr predicate)) @@ -191,7 +190,7 @@ unknown DST value is returned as -1." :end (aref this 1)) (funcall this))) parse-time-val))) - (rplaca (nthcdr (pop slots) time) new-val)))))))) + (setf (nth (pop slots) time) new-val)))))))) time)) (defconst parse-time-iso8601-regexp @@ -244,16 +243,17 @@ If DATE-STRING cannot be parsed, it falls back to re-start (match-end 0)) (when (string-match tz-re date-string re-start) (setq dst nil) - (if (string= "Z" (match-string 1 date-string)) - (setq tz 0) ;; UTC timezone indicated by Z - (setq tz (+ - (* 3600 - (string-to-number (match-string 3 date-string))) - (* 60 - (string-to-number - (or (match-string 4 date-string) "0"))))) - (when (string= "-" (match-string 2 date-string)) - (setq tz (- tz))))) + (setq tz (if (string= "Z" (match-string 1 date-string)) + 0 ;; UTC timezone indicated by Z + (let ((tz (+ + (* 3600 + (string-to-number + (match-string 3 date-string))) + (* 60 + (string-to-number + (or (match-string 4 date-string) "0")))))) + (if (string= "-" (match-string 2 date-string)) + (- tz) tz))))) (setq time (list seconds minute hour day month year day-of-week dst tz)))) ;; Fall back to having `parse-time-string' do fancy things for us. -- 2.39.5