;;; gnus-demon.el --- daemonic Gnus behaviour
-;; Copyright (C) 1995,96,97,98 Free Software Foundation, Inc.
+;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
-;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news
;; This file is part of GNU Emacs.
(require 'gnus-int)
(require 'nnheader)
(require 'nntp)
+(require 'nnmail)
+(require 'gnus-util)
(eval-and-compile
(if (string-match "XEmacs" (emacs-version))
(require 'itimer)
:group 'gnus)
(defcustom gnus-demon-handlers nil
- "*Alist of daemonic handlers to be run at intervals.
+ "Alist of daemonic handlers to be run at intervals.
Each handler is a list on the form
\(FUNCTION TIME IDLE)
(defvar gnus-inhibit-demon nil
"*If non-nil, no daemonic function will be run.")
-(eval-and-compile
- (autoload 'timezone-parse-date "timezone")
- (autoload 'timezone-make-arpa-date "timezone"))
-
;;; Functions.
(defun gnus-demon-add-handler (function time idle)
(defun gnus-demon-remove-handler (function &optional no-init)
"Remove the handler FUNCTION from the list of handlers."
- (setq gnus-demon-handlers
- (delq (assq function gnus-demon-handlers)
- gnus-demon-handlers))
+ (gnus-pull function gnus-demon-handlers)
(unless no-init
(gnus-demon-init)))
(nth 2 handler)))
gnus-demon-handlers))
(setq gnus-demon-idle-time 0)
- (setq gnus-demon-idle-has-been-called nil)
- (setq gnus-use-demon t)))
+ (setq gnus-demon-idle-has-been-called nil)))
(gnus-add-shutdown 'gnus-demon-cancel 'gnus)
(when gnus-demon-timer
(nnheader-cancel-timer gnus-demon-timer))
(setq gnus-demon-timer nil
- gnus-use-demon nil
gnus-demon-idle-has-been-called nil)
(condition-case ()
(nnheader-cancel-function-timers 'gnus-demon)
time
(let* ((now (current-time))
;; obtain NOW as discrete components -- make a vector for speed
- (nowParts (apply 'vector (decode-time now)))
+ (nowParts (decode-time now))
;; obtain THEN as discrete components
- (thenParts (timezone-parse-time time))
- (thenHour (string-to-int (elt thenParts 0)))
- (thenMin (string-to-int (elt thenParts 1)))
+ (thenParts (parse-time-string time))
+ (thenHour (elt thenParts 0))
+ (thenMin (elt thenParts 1))
;; convert time as elements into number of seconds since EPOCH.
(then (encode-time 0
thenMin
thenHour
;; If THEN is earlier than NOW, make it
- ;; same time tomorrow. Doc for encode-time
+ ;; same time tomorrow. Doc for encode-time
;; says that this is OK.
(+ (elt nowParts 3)
(if (or (< thenHour (elt nowParts 2))
"Add daemonic nntp server disconnection to Gnus.
If no commands have gone out via nntp during the last five
minutes, the connection is closed."
- (gnus-demon-add-handler 'gnus-demon-close-connections 5 nil))
+ (gnus-demon-add-handler 'gnus-demon-nntp-close-connections 5 nil))
(defun gnus-demon-nntp-close-connection ()
(save-window-excursion
- (when (nnmail-time-less '(0 300)
- (nnmail-time-since nntp-last-command-time))
+ (when (time-less-p '(0 300) (time-since nntp-last-command-time))
(nntp-close-server))))
(defun gnus-demon-add-scanmail ()
(defun gnus-demon-scan-mail ()
(save-window-excursion
(let ((servers gnus-opened-servers)
- server)
- (gnus-clear-inboxes-moved)
+ server
+ (nnmail-fetched-sources (list t)))
(while (setq server (car (pop servers)))
(and (gnus-check-backend-function 'request-scan (car server))
(or (gnus-server-opened server)