+ (if (= amount 1)
+ ;; We cache it as bug "0" in `debbugs-cache-data'.
+ (list (cdr (assoc 'newest_bug
+ (let ((status (gethash 0 debbugs-cache-data)))
+ (if (and
+ status
+ (or
+ (null debbugs-cache-expiry)
+ (and
+ (natnump debbugs-cache-expiry)
+ (> (cdr (assoc 'cache_time status))
+ (- (float-time) debbugs-cache-expiry)))))
+ ;; Take the cached value.
+ status
+
+ (setq
+ status
+ ;; Put also a time stamp.
+ (list
+ (cons 'cache_time (float-time))
+ (cons 'newest_bug
+ (caar
+ (soap-invoke
+ debbugs-wsdl debbugs-port "newest_bugs" amount)))))
+ (if (and debbugs-cache-expiry (natnump debbugs-cache-expiry))
+ ;; Cache it.
+ (puthash 0 status debbugs-cache-data)
+ ;; Don't cache.
+ status))))))
+
+ (sort
+ (car (soap-invoke debbugs-wsdl debbugs-port "newest_bugs" amount)) '<)))