From: Paul Eggert Date: Fri, 1 Jul 2011 01:27:40 +0000 (-0700) Subject: * emacs-lisp/timer.el (timer-relative-time): Use time-add. X-Git-Tag: emacs-pretest-24.0.90~104^2~152^2~296 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fe955043aa2a44e2bed2bdec963edf0d3ec13fab;p=emacs.git * emacs-lisp/timer.el (timer-relative-time): Use time-add. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 336531516ec..3751cea4287 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2011-07-01 Paul Eggert + * emacs-lisp/timer.el (timer-relative-time): Use time-add. + * calendar/timeclock.el (timeclock-seconds-to-time): Defalias to seconds-to-time, since they're the same thing. diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el index 0a035175041..27fd79a6ad2 100644 --- a/lisp/emacs-lisp/timer.el +++ b/lisp/emacs-lisp/timer.el @@ -110,27 +110,12 @@ of SECS seconds since the epoch. SECS may be a fraction." (defun timer-relative-time (time secs &optional usecs) "Advance TIME by SECS seconds and optionally USECS microseconds. SECS may be either an integer or a floating point number." - ;; FIXME: we should just use (time-add time (list 0 secs usecs)) - (let ((high (car time)) - (low (if (consp (cdr time)) (nth 1 time) (cdr time))) - (micro (if (numberp (car-safe (cdr-safe (cdr time)))) - (nth 2 time) - 0))) - ;; Add - (if usecs (setq micro (+ micro usecs))) - (if (floatp secs) - (setq micro (+ micro (floor (* 1000000 (- secs (floor secs))))))) - (setq low (+ low (floor secs))) - - ;; Normalize - ;; `/' rounds towards zero while `mod' returns a positive number, - ;; so we can't rely on (= a (+ (* 100 (/ a 100)) (mod a 100))). - (setq low (+ low (/ micro 1000000) (if (< micro 0) -1 0))) - (setq micro (mod micro 1000000)) - (setq high (+ high (/ low 65536) (if (< low 0) -1 0))) - (setq low (logand low 65535)) - - (list high low (and (/= micro 0) micro)))) + (let ((delta (if (floatp secs) + (seconds-to-time secs) + (list (floor secs 65536) (mod secs 65536))))) + (if usecs + (setq delta (time-add delta (list 0 0 usecs)))) + (time-add time delta))) (defun timer--time-less-p (t1 t2) "Say whether time value T1 is less than time value T2."