Import Oort Gnus v0.16.
[elisp/gnus.git-] / lisp / nndb.el
index 088b5c6..da53530 100644 (file)
@@ -1,5 +1,6 @@
 ;;; nndb.el --- nndb access for Gnus
-;; Copyright (C) 1997,98 Free Software Foundation, Inc.
+
+;; Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
 
 ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
 ;;         Kai Grossjohann <grossjohann@ls6.informatik.uni-dortmund.de>
@@ -70,7 +71,7 @@
   (autoload 'cancel-timer "timer")
   (autoload 'telnet "telnet" nil t)
   (autoload 'telnet-send-input "telnet" nil t)
-  (autoload 'timezone-parse-date "timezone"))
+  (autoload 'gnus-declare-backend "gnus-start"))
 
 ;; Declare nndb as derived from nntp
 
   "*The program used to put a message in an NNDB group.")
 
 (defvoo nndb-server-side-expiry nil
-  "If t, expiry calculation will occur on the server side")
+  "If t, expiry calculation will occur on the server side.")
 
 (defvoo nndb-set-expire-date-on-mark nil
   "If t, the expiry date for a given article will be set to the time
 it was marked as expireable; otherwise the date will be the time the
 article was posted to nndb")
-  
+
 ;; Variables copied from nntp
 
 (defvoo nndb-server-opened-hook '(nntp-send-authinfo-from-file)
@@ -139,7 +140,7 @@ article was posted to nndb")
        (push art rest)))
     rest))
 
-      
+
 ;;
 (deffoo nndb-request-type (group &optional article)
   nndb-article-type)
@@ -152,7 +153,7 @@ article was posted to nndb")
   (nntp-send-command nil "X-TOUCH" article))
 
 (deffoo nndb-request-update-mark
-  (group article mark)
+    (group article mark)
   "Sets the expiry date for ARTICLE in GROUP to now, if the mark is 'E'"
   (if (and nndb-set-expire-date-on-mark (string-equal mark "E"))
       (nndb-touch-article group article))
@@ -174,27 +175,26 @@ article was posted to nndb")
       (nntp-send-command "^\\([23]\\|^423\\).*\n" "X-DATE" art)
       (setq msg (nndb-status-message))
       (if (string-match "^423" msg)
-          ()
+         ()
        (or (string-match "'\\(.+\\)'" msg)
            (error "Not a valid response for X-DATE command: %s"
                   msg))
        (if (nnmail-expired-article-p
             group
-            (gnus-encode-date
-             (substring msg (match-beginning 1) (match-end 1)))
+            (date-to-time (substring msg (match-beginning 1) (match-end 1)))
             force)
            (progn
              (setq delete-list (concat delete-list " " (int-to-string art)))
              (setq num-delete  (1+ num-delete)))
          (push art rest))))
     (if (> (length delete-list) 0)
-       (progn 
+       (progn
          (nnheader-message 5 "Deleting %s article(s) from %s"
                            (int-to-string num-delete) group)
          (nntp-send-command "^[23].*\n" "X-DELETE" delete-list))
       )
-       
-    (message "")
+
+    (nnheader-message 5 "")
     (nconc rest articles)))
 
 (defun nndb-get-remote-expire-response ()
@@ -202,12 +202,12 @@ article was posted to nndb")
     (set-buffer nntp-server-buffer)
     (goto-char (point-min))
     (if (looking-at "^[34]")
-       ;; x-expire returned error--presume no articles were expirable)
+       ;; x-expire returned error--presume no articles were expirable)
        (setq list nil)
       ;; otherwise, pull all of the following numbers into the list
       (re-search-forward "follows\r?\n?" nil t)
       (while (re-search-forward "^[0-9]+$" nil t)
-       (push (string-to-int (match-string 0)) list)))
+      (push (string-to-int (match-string 0)) list)))
     list))
 
 (defun nndb-request-expire-articles-remote
@@ -215,25 +215,25 @@ article was posted to nndb")
   "Let the nndb backend expire articles"
   (let (days art-string delete-list (num-delete 0))
     (nntp-possibly-change-group group server)
-    
+
     ;; first calculate the wait period in days
     (setq days (or (and nnmail-expiry-wait-function
                        (funcall nnmail-expiry-wait-function group))
-                  nnmail-expiry-wait))
+    nnmail-expiry-wait))
     ;; now handle the special cases
     (cond (force
-          (setq days 0))
+    (setq days 0))
          ((eq days 'never)
           ;; This isn't an expirable group.
-          (setq days -1))
+         (setq days -1))
          ((eq days 'immediate)
-          (setq days 0)))
-    
+         (setq days 0)))
+
 
     ;; build article string
     (setq art-string (concat days " " (nndb-build-article-string articles)))
     (nntp-send-command "^\.\r?\n\\|^[345].*\n" "X-EXPIRE" art-string)
-    
+
     (setq delete-list (nndb-get-remote-expire-response))
     (setq num-delete (length delete-list))
     (if (> num-delete 0)
@@ -260,7 +260,7 @@ Optional LAST is ignored."
   ;; which it will be for nndb, which is all that matters anyway
   (let ((new-group (nth 1 accept-form)) result)
     (nntp-possibly-change-group group server)
-    
+
     ;; use the move command for nndb-to-nndb moves
     (if (string-match "^nndb" new-group)
        (let ((new-group-name (gnus-group-real-name new-group)))
@@ -268,21 +268,21 @@ Optional LAST is ignored."
          (cons new-group article))
       ;; else move normally
       (let ((artbuf (get-buffer-create " *nndb move*")))
-       (and
-        (nndb-request-article article group server artbuf)
-        (save-excursion
-          (set-buffer artbuf)
-          (insert-buffer-substring nntp-server-buffer)
-          (setq result (eval accept-form))
-          (kill-buffer (current-buffer))
-          result)
-        (nndb-request-expire-articles (list article)
-                                      group
-                                      server
-                                      t))
-       result)
+      (and
+       (nndb-request-article article group server artbuf)
+       (save-excursion
+        (set-buffer artbuf)
+        (insert-buffer-substring nntp-server-buffer)
+        (setq result (eval accept-form))
+        (kill-buffer (current-buffer))
+        result)
+       (nndb-request-expire-articles (list article)
+                                    group
+                                    server
+                                    t))
+      result)
       )))
-  
+
 (deffoo nndb-request-accept-article (group server &optional last)
   "The article in the current buffer is put into GROUP."
   (nntp-possibly-change-group group server)
@@ -290,36 +290,35 @@ Optional LAST is ignored."
     (when (nntp-send-command "^[23].*\r?\n" "ACCEPT" group)
       (nnheader-insert "")
       (nntp-send-buffer "^[23].*\n"))
-    
+
     (set-buffer nntp-server-buffer)
-    (setq msg (buffer-string (point-min) (point-max)))
+    (setq msg (buffer-string))
     (or (string-match "^\\([0-9]+\\)" msg)
        (error "nndb: %s" msg))
     (setq art (substring msg (match-beginning 1) (match-end 1)))
-    (message "nndb: accepted %s" art)
+    (nnheader-message 5 "nndb: accepted %s" art)
     (list art)))
 
 (deffoo nndb-request-replace-article (article group buffer)
-  "ARTICLE is the number of the article in GROUP to be replaced 
-with the contents of the BUFFER."
+  "ARTICLE is the number of the article in GROUP to be replaced with the contents of the BUFFER."
   (set-buffer buffer)
   (when (nntp-send-command "^[23].*\r?\n" "X-REPLACE" (int-to-string article))
     (nnheader-insert "")
     (nntp-send-buffer "^[23.*\n")
     (list (int-to-string article))))
 
-; nndb-request-delete-group does not exist
-; todo -- maybe later
+                           ; nndb-request-delete-group does not exist
+                                       ; todo -- maybe later
 
-; nndb-request-rename-group does not exist
-; todo -- maybe later
+                           ; nndb-request-rename-group does not exist
+                                       ; todo -- maybe later
 
 ;; -- standard compatability functions
 
 (deffoo nndb-status-message (&optional server)
   "Return server status as a string."
   (set-buffer nntp-server-buffer)
-  (buffer-string (point-min) (point-max)))
+  (buffer-string))
 
 ;; Import stuff from nntp
 
@@ -328,5 +327,4 @@ with the contents of the BUFFER."
 
 (provide 'nndb)
 
-
-
+;;; nndb.el ends here