-(defmacro liece-time-difference (t0 t1)
- "Difference in seconds between T0 and T1.
-Both T0 and T1 are in the encoded time format."
- `(+ (* (- (car ,t1) (car ,t0)) 65536)
- (- (cadr ,t1)) (cadr ,t0)))
-
-(defmacro liece-time-add (t0 t1)
- "Add T0 seconds to time T1.
-t0 is in `three integer lists'-format returned by `current-time' function."
- `(list (+ (car ,t0) (/ (+ (cadr ,t0) ,t1) 65536))
- (% (+ (cadr ,t0) ,t1) 65536)
- 0))
-
+;;; stolen (and renamed) from time-date.el.
+(defun liece-subtract-time (t1 t2)
+ "Subtract two internal times."
+ (let ((borrow (< (cadr t1) (cadr t2))))
+ (list (- (car t1) (car t2) (if borrow 1 0))
+ (- (+ (if borrow 65536 0) (cadr t1)) (cadr t2)))))
+
+(defun liece-time-difference (t1 t2)
+ "Return the differnce between two internal times in seconds."
+ (let ((sub (liece-subtract-time t1 t2)))
+ (+ (* (car sub) 65536) (cadr sub))))
+
+(defun liece-time-elapsed (time seconds)
+ "Add SECONDS to TIME."
+ (list (+ (car time) (/ (+ (cadr time) seconds) 65536))
+ (% (+ (cadr time) seconds) 65536)
+ (nth 2 time)))
+
+;;; stolen (and renamed) from time-date.el.