* gnus-spec.el (gnus-correct-substring): Take optional END.
[gnus] / lisp / nneething.el
index 04b0229..0d9d760 100644 (file)
@@ -1,5 +1,7 @@
 ;;; nneething.el --- arbitrary file access for Gnus
-;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001
+;;     Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;;     Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
@@ -120,11 +122,11 @@ included.")
   (let ((file (unless (stringp id)
                (nneething-file-name id)))
        (nntp-server-buffer (or buffer nntp-server-buffer)))
-    (and (stringp file)                        ; We did not request by Message-ID.
+    (and (stringp file)                   ; We did not request by Message-ID.
         (file-exists-p file)           ; The file exists.
         (not (file-directory-p file))  ; It's not a dir.
         (save-excursion
-          (nnmail-find-file file)      ; Insert the file in the nntp buf.
+          (nnmail-find-file file)  ; Insert the file in the nntp buf.
           (unless (nnheader-article-p) ; Either it's a real article...
             (goto-char (point-min))
             (nneething-make-head
@@ -232,7 +234,7 @@ included.")
            prev)
        (while map
          (if (and (member (cadr (car map)) files)
-                  ;; We also remove files that have changed mod times.
+                 ;; We also remove files that have changed mod times.
                   (equal (nth 5 (file-attributes
                                  (nneething-file-name (cadr (car map)))))
                          (cadr (cdar map))))
@@ -270,11 +272,11 @@ included.")
     (insert-buffer-substring nneething-work-buffer)
     (goto-char (point-max))))
 
-(defun nneething-make-head (file &optional buffer)
+(defun nneething-make-head (file &optional buffer extra-msg)
   "Create a head by looking at the file attributes of FILE."
   (let ((atts (file-attributes file)))
     (insert
-     "Subject: " (file-name-nondirectory file) "\n"
+     "Subject: " (file-name-nondirectory file) (or extra-msg "") "\n"
      "Message-ID: <nneething-"
      (int-to-string (incf nneething-message-id-number))
      "@" (system-name) ">\n"
@@ -342,24 +344,28 @@ included.")
       (nneething-make-head file) t)
      (t
       ;; We examine the file.
-      (nnheader-insert-head file)
-      (if (nnheader-article-p)
-         (delete-region
-          (progn
-            (goto-char (point-min))
-            (or (and (search-forward "\n\n" nil t)
-                     (1- (point)))
-                (point-max)))
-          (point-max))
-       (goto-char (point-min))
-       (nneething-make-head file (current-buffer))
-       (delete-region (point) (point-max)))
+      (condition-case ()
+         (progn
+           (nnheader-insert-head file)
+           (if (nnheader-article-p)
+               (delete-region
+                (progn
+                  (goto-char (point-min))
+                  (or (and (search-forward "\n\n" nil t)
+                           (1- (point)))
+                      (point-max)))
+                (point-max))
+             (goto-char (point-min))
+             (nneething-make-head file (current-buffer))
+             (delete-region (point) (point-max))))
+       (file-error
+        (nneething-make-head file (current-buffer) " (unreadable)")))
       t))))
 
 (defun nneething-file-name (article)
   "Return the file name of ARTICLE."
   (let ((dir (file-name-as-directory nneething-address))
-        fname)
+       fname)
     (if (numberp article)
        (if (setq fname (cadr (assq article nneething-map)))
            (expand-file-name fname dir)