mm-util.el (mm-ucs-to-char): Use eval-and-compile.
[gnus] / lisp / nnspool.el
index 3c79910..1916c1a 100644 (file)
@@ -1,8 +1,8 @@
 ;;; nnspool.el --- spool access for GNU Emacs
 
 ;; Copyright (C) 1988, 1989, 1990, 1993, 1994, 1995, 1996, 1997, 1998,
-;;               2000, 2002, 2003
-;;               Free Software Foundation, Inc.
+;;   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+;;   Free Software Foundation, Inc.
 
 ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
 ;;     Lars Magne Ingebrigtsen <larsi@gnus.org>
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -21,9 +21,7 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
@@ -44,7 +42,10 @@ This is most commonly `inews' or `injnews'.")
   "Switches for nnspool-request-post to pass to `inews' for posting news.
 If you are using Cnews, you probably should set this variable to nil.")
 
-(defvoo nnspool-spool-directory (file-name-as-directory news-path)
+(defvoo nnspool-spool-directory
+    (file-name-as-directory (if (boundp 'news-directory)
+                               (symbol-value 'news-directory)
+                             news-path))
   "Local news spool directory.")
 
 (defvoo nnspool-nov-directory (concat nnspool-spool-directory "over.view/")
@@ -108,8 +109,7 @@ there.")
 
 (deffoo nnspool-retrieve-headers (articles &optional group server fetch-old)
   "Retrieve the headers of ARTICLES."
-  (save-excursion
-    (set-buffer nntp-server-buffer)
+  (with-current-buffer nntp-server-buffer
     (erase-buffer)
     (when (nnspool-possibly-change-directory group)
       (let* ((number (length articles))
@@ -208,8 +208,7 @@ there.")
   (nnspool-possibly-change-directory group)
   (let ((res (nnspool-request-article id)))
     (when res
-      (save-excursion
-       (set-buffer nntp-server-buffer)
+      (with-current-buffer nntp-server-buffer
        (goto-char (point-min))
        (when (search-forward "\n\n" nil t)
          (delete-region (point-min) (point)))
@@ -220,15 +219,14 @@ there.")
   (nnspool-possibly-change-directory group)
   (let ((res (nnspool-request-article id)))
     (when res
-      (save-excursion
-       (set-buffer nntp-server-buffer)
+      (with-current-buffer nntp-server-buffer
        (goto-char (point-min))
        (when (search-forward "\n\n" nil t)
          (delete-region (1- (point)) (point-max)))
        (nnheader-fold-continuation-lines)))
     res))
 
-(deffoo nnspool-request-group (group &optional server dont-check)
+(deffoo nnspool-request-group (group &optional server dont-check info)
   "Select news GROUP."
   (let ((pathname (nnspool-article-pathname group))
        dir)
@@ -244,7 +242,7 @@ there.")
        ;; Yes, completely empty spool directories *are* possible.
        ;; Fix by Sudish Joseph <joseph@cis.ohio-state.edu>
        (when (setq dir (directory-files pathname nil "^[0-9]+$" t))
-         (setq dir (sort (mapcar 'string-to-int dir) '<)))
+         (setq dir (sort (mapcar 'string-to-number dir) '<)))
        (if dir
            (nnheader-insert
             "211 %d %d %d %s\n" (length dir) (car dir)
@@ -288,7 +286,8 @@ there.")
        (while (and (not (looking-at
                          "\\([^ ]+\\) +\\([0-9]+\\)[0-9][0-9][0-9] "))
                    (zerop (forward-line -1))))
-       (let ((seconds (time-to-seconds (date-to-time date)))
+       ;; We require nnheader which requires gnus-util.
+       (let ((seconds (gnus-float-time (date-to-time date)))
              groups)
          ;; Go through lines and add the latest groups to a list.
          (while (and (looking-at "\\([^ ]+\\) +[0-9]+ ")
@@ -341,8 +340,7 @@ there.")
 ;;; Internal functions.
 
 (defun nnspool-inews-sentinel (proc status)
-  (save-excursion
-    (set-buffer (process-buffer proc))
+  (with-current-buffer (process-buffer proc)
     (goto-char (point-min))
     (if (or (zerop (buffer-size))
            (search-forward "spooled" nil t))
@@ -365,8 +363,7 @@ there.")
          last)
       (if (not (file-exists-p nov))
          ()
-       (save-excursion
-         (set-buffer nntp-server-buffer)
+       (with-current-buffer nntp-server-buffer
          (erase-buffer)
          (if nnspool-sift-nov-with-sed
              (nnspool-sift-nov-with-sed articles nov)
@@ -402,15 +399,16 @@ there.")
   "Read the head of ARTICLE, convert to NOV headers, and insert."
   (save-excursion
     (let ((cur (current-buffer))
-         buf)
+          buf)
       (setq buf (nnheader-set-temp-buffer " *nnspool head*"))
       (when (nnheader-insert-head
-            (nnspool-article-pathname nnspool-current-group article))
-       (nnheader-insert-article-line article)
-       (let ((headers (nnheader-parse-head)))
-         (set-buffer cur)
-         (goto-char (point-max))
-         (nnheader-insert-nov headers)))
+             (nnspool-article-pathname nnspool-current-group article))
+        (nnheader-insert-article-line article)
+        (goto-char (point-min))
+        (let ((headers (nnheader-parse-head)))
+          (set-buffer cur)
+          (goto-char (point-max))
+          (nnheader-insert-nov headers)))
       (kill-buffer buf))))
 
 (defun nnspool-sift-nov-with-sed (articles file)
@@ -429,7 +427,7 @@ there.")
       (call-process "grep" nil t nil (regexp-quote id) nnspool-history-file))
     (goto-char (point-min))
     (when (looking-at "<[^>]+>[ \t]+[-0-9~]+[ \t]+\\([^ /\t\n]+\\)/\\([0-9]+\\)[ \t\n]")
-      (cons (match-string 1) (string-to-int (match-string 2))))))
+      (cons (match-string 1) (string-to-number (match-string 2))))))
 
 (defun nnspool-find-file (file)
   "Insert FILE in server buffer safely."
@@ -456,5 +454,4 @@ there.")
 
 (provide 'nnspool)
 
-;;; arch-tag: bdac8d27-2934-4eee-bad0-49e6b90c0d05
 ;;; nnspool.el ends here