Import No Gnus v0.4.
[elisp/gnus.git-] / lisp / gnus-uu.el
index c9b9f0e..7c381ce 100644 (file)
@@ -1,6 +1,7 @@
 ;;; gnus-uu.el --- extract (uu)encoded files in Gnus
-;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
-;;        2001 Free Software Foundation, Inc.
+
+;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998,
+;;   2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Created: 2 Oct 1993
@@ -20,8 +21,8 @@
 
 ;; 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.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
@@ -299,7 +300,8 @@ so I simply dropped them."
     "^MIME-Version:" "^Content-Disposition:" "^Content-Description:"
     "^Content-ID:")
   "*List of regexps to match headers included in digested messages.
-The headers will be included in the sequence they are matched."
+The headers will be included in the sequence they are matched.  If nil
+include all headers."
   :group 'gnus-extract
   :type '(repeat regexp))
 
@@ -321,7 +323,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
 
 (defvar gnus-uu-saved-article-name nil)
 
-(defvar gnus-uu-begin-string "^begin[ \t]+[0-7][0-7][0-7][ \t]+\\(.*\\)$")
+(defvar gnus-uu-begin-string "^begin[ \t]+0?[0-7][0-7][0-7][ \t]+\\(.*\\)$")
 (defvar gnus-uu-end-string "^end[ \t]*$")
 
 (defvar gnus-uu-body-line "^M")
@@ -336,7 +338,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
 
 (defvar gnus-uu-shar-file-name nil)
 (defvar gnus-uu-shar-name-marker
-  "begin [0-7][0-7][0-7][ \t]+\\(\\(\\w\\|\\.\\)*\\b\\)")
+  "begin 0?[0-7][0-7][0-7][ \t]+\\(\\(\\w\\|[.\\:]\\)*\\b\\)")
 
 (defvar gnus-uu-postscript-begin-string "^%!PS-")
 (defvar gnus-uu-postscript-end-string "^%%EOF$")
@@ -353,56 +355,6 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
 (defvar gnus-uu-digest-from-subject nil)
 (defvar gnus-uu-digest-buffer nil)
 
-;; Keymaps
-
-(gnus-define-keys (gnus-uu-mark-map "P" gnus-summary-mark-map)
-  "p" gnus-summary-mark-as-processable
-  "u" gnus-summary-unmark-as-processable
-  "U" gnus-summary-unmark-all-processable
-  "v" gnus-uu-mark-over
-  "s" gnus-uu-mark-series
-  "r" gnus-uu-mark-region
-  "g" gnus-uu-unmark-region
-  "R" gnus-uu-mark-by-regexp
-  "G" gnus-uu-unmark-by-regexp
-  "t" gnus-uu-mark-thread
-  "T" gnus-uu-unmark-thread
-  "a" gnus-uu-mark-all
-  "b" gnus-uu-mark-buffer
-  "S" gnus-uu-mark-sparse
-  "k" gnus-summary-kill-process-mark
-  "y" gnus-summary-yank-process-mark
-  "w" gnus-summary-save-process-mark
-  "i" gnus-uu-invert-processable)
-
-(gnus-define-keys (gnus-uu-extract-map "X" gnus-summary-mode-map)
-  ;;"x" gnus-uu-extract-any
-  "m" gnus-summary-save-parts
-  "u" gnus-uu-decode-uu
-  "U" gnus-uu-decode-uu-and-save
-  "s" gnus-uu-decode-unshar
-  "S" gnus-uu-decode-unshar-and-save
-  "o" gnus-uu-decode-save
-  "O" gnus-uu-decode-save
-  "b" gnus-uu-decode-binhex
-  "B" gnus-uu-decode-binhex
-  "p" gnus-uu-decode-postscript
-  "P" gnus-uu-decode-postscript-and-save)
-
-(gnus-define-keys
-    (gnus-uu-extract-view-map "v" gnus-uu-extract-map)
-  "u" gnus-uu-decode-uu-view
-  "U" gnus-uu-decode-uu-and-save-view
-  "s" gnus-uu-decode-unshar-view
-  "S" gnus-uu-decode-unshar-and-save-view
-  "o" gnus-uu-decode-save-view
-  "O" gnus-uu-decode-save-view
-  "b" gnus-uu-decode-binhex-view
-  "B" gnus-uu-decode-binhex-view
-  "p" gnus-uu-decode-postscript-view
-  "P" gnus-uu-decode-postscript-and-save-view)
-
-
 ;; Commands.
 
 (defun gnus-uu-decode-uu (&optional n)
@@ -457,7 +409,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
                          gnus-uu-default-dir
                          gnus-uu-default-dir))))
   (setq gnus-uu-binhex-article-name
-       (make-temp-name (concat gnus-uu-work-dir "binhex")))
+       (mm-make-temp-file (expand-file-name "binhex" gnus-uu-work-dir)))
   (gnus-uu-decode-with-method 'gnus-uu-binhex-article n dir))
 
 (defun gnus-uu-decode-uu-view (&optional n)
@@ -510,7 +462,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
         (read-file-name "Unbinhex, view and save in dir: "
                         gnus-uu-default-dir gnus-uu-default-dir)))
   (setq gnus-uu-binhex-article-name
-       (make-temp-name (concat gnus-uu-work-dir "binhex")))
+       (mm-make-temp-file (expand-file-name "binhex" gnus-uu-work-dir)))
   (let ((gnus-view-pseudos (or gnus-view-pseudos 'automatic)))
     (gnus-uu-decode-binhex n file)))
 
@@ -521,7 +473,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
   "Digests and forwards all articles in this series."
   (interactive "P")
   (let ((gnus-uu-save-in-digest t)
-       (file (make-temp-name (nnheader-concat gnus-uu-tmp-dir "forward")))
+       (file (mm-make-temp-file (nnheader-concat gnus-uu-tmp-dir "forward")))
        (message-forward-as-mime message-forward-as-mime)
        (mail-parse-charset gnus-newsgroup-charset)
        (mail-parse-ignored-charsets gnus-newsgroup-ignored-charsets)
@@ -529,7 +481,17 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
     (if (and n (not (numberp n)))
        (setq message-forward-as-mime (not message-forward-as-mime)
              n nil))
-    (let ((gnus-article-reply (gnus-summary-work-articles n)))
+    (let ((gnus-article-reply (gnus-summary-work-articles n))
+         gnus-newsgroup-processable)
+      (when (and (not n)
+                (= (length gnus-article-reply) 1))
+       ;; The case where neither a number of articles nor a region is
+       ;; specified.
+       (gnus-summary-top-thread)
+       (setq gnus-article-reply (nreverse (gnus-uu-find-articles-matching))))
+      ;; Specify articles to be forwarded.  Note that they should be
+      ;; reversed; see `gnus-uu-get-list-of-articles'.
+      (setq gnus-newsgroup-processable (reverse gnus-article-reply))
       (gnus-setup-message 'forward
        (setq gnus-uu-digest-from-subject nil)
        (setq gnus-uu-digest-buffer
@@ -559,11 +521,11 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
                    "Various"))))
        (goto-char (point-min))
        (when (re-search-forward "^Subject: ")
-         (delete-region (point) (gnus-point-at-eol))
+         (delete-region (point) (point-at-eol))
          (insert subject))
        (goto-char (point-min))
        (when (re-search-forward "^From:")
-         (delete-region (point) (gnus-point-at-eol))
+         (delete-region (point) (point-at-eol))
          (insert " " from))
        (let ((message-forward-decoded-p t))
          (message-forward post t))))
@@ -578,19 +540,19 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
 
 (defun gnus-message-process-mark (unmarkp new-marked)
   (let ((old (- (length gnus-newsgroup-processable) (length new-marked))))
-    (message "%d mark%s %s%s"
-            (length new-marked)
-            (if (= (length new-marked) 1) "" "s")
-            (if unmarkp "removed" "added")
-            (cond
-             ((and (zerop old)
-                   (not unmarkp))
-              "")
-             (unmarkp
-              (format ", %d remain marked"
-                      (length gnus-newsgroup-processable)))
-             (t
-              (format ", %d already marked" old))))))
+    (gnus-message 6 "%d mark%s %s%s"
+                 (length new-marked)
+                 (if (= (length new-marked) 1) "" "s")
+                 (if unmarkp "removed" "added")
+                 (cond
+                  ((and (zerop old)
+                        (not unmarkp))
+                   "")
+                  (unmarkp
+                   (format ", %d remain marked"
+                           (length gnus-newsgroup-processable)))
+                  (t
+                   (format ", %d already marked" old))))))
 
 (defun gnus-new-processable (unmarkp articles)
   (if unmarkp
@@ -618,15 +580,18 @@ When called interactively, prompt for REGEXP."
   (interactive "sUnmark (regexp): ")
   (gnus-uu-mark-by-regexp regexp t))
 
-(defun gnus-uu-mark-series ()
+(defun gnus-uu-mark-series (&optional silent)
   "Mark the current series with the process mark."
   (interactive)
-  (let ((articles (gnus-uu-find-articles-matching)))
+  (let* ((articles (gnus-uu-find-articles-matching))
+        (l (length articles)))
     (while articles
       (gnus-summary-set-process-mark (car articles))
       (setq articles (cdr articles)))
-    (message ""))
-  (gnus-summary-position-point))
+    (unless silent
+      (gnus-message 6 "Marked %d articles" l))
+    (gnus-summary-position-point)
+    l))
 
 (defun gnus-uu-mark-region (beg end &optional unmark)
   "Set the process mark on all articles between point and mark."
@@ -734,14 +699,16 @@ When called interactively, prompt for REGEXP."
   (setq gnus-newsgroup-processable nil)
   (save-excursion
     (let ((data gnus-newsgroup-data)
+         (count 0)
          number)
       (while data
        (when (and (not (memq (setq number (gnus-data-number (car data)))
                              gnus-newsgroup-processable))
                   (vectorp (gnus-data-header (car data))))
          (gnus-summary-goto-subject number)
-         (gnus-uu-mark-series))
-       (setq data (cdr data)))))
+         (setq count (+ count (gnus-uu-mark-series t))))
+       (setq data (cdr data)))
+      (gnus-message 6 "Marked %d articles" count)))
   (gnus-summary-position-point))
 
 ;; All PostScript functions written by Erik Selberg <speed@cs.washington.edu>.
@@ -884,10 +851,8 @@ When called interactively, prompt for REGEXP."
              (erase-buffer)
              (insert (format
                       "Date: %s\nFrom: %s\nSubject: %s Digest\n\n"
-                      (current-time-string) name name))
+                      (message-make-date) name name))
              (when (and message-forward-as-mime gnus-uu-digest-buffer)
-               ;; The default part in multipart/digest is message/rfc822.
-               ;; Subject is a fake head.
                (insert "<#part type=message/rfc822>\nSubject: Topics\n\n"))
              (insert "Topics:\n")))
        (when (not (eq in-state 'end))
@@ -899,7 +864,7 @@ When called interactively, prompt for REGEXP."
          (save-restriction
            (set-buffer buffer)
            (let (buffer-read-only)
-             (gnus-set-text-properties (point-min) (point-max) nil)
+             (set-text-properties (point-min) (point-max) nil)
              ;; These two are necessary for XEmacs 19.12 fascism.
              (put-text-property (point-min) (point-max) 'invisible nil)
              (put-text-property (point-min) (point-max) 'intangible nil))
@@ -909,7 +874,7 @@ When called interactively, prompt for REGEXP."
              (mm-enable-multibyte)
              (mime-to-mml))
            (goto-char (point-min))
-           (re-search-forward "\n\n")
+           (search-forward "\n\n")
            (unless (and message-forward-as-mime gnus-uu-digest-buffer)
              ;; Quote all 30-dash lines.
              (save-excursion
@@ -920,7 +885,7 @@ When called interactively, prompt for REGEXP."
            (setq body (buffer-substring (1- (point)) (point-max)))
            (narrow-to-region (point-min) (point))
            (if (not (setq headers gnus-uu-digest-headers))
-               (setq sorthead (buffer-substring (point-min) (point-max)))
+               (setq sorthead (buffer-string))
              (while headers
                (setq headline (car headers))
                (setq headers (cdr headers))
@@ -967,16 +932,16 @@ When called interactively, prompt for REGEXP."
        (if (and message-forward-as-mime gnus-uu-digest-buffer)
            (with-current-buffer gnus-uu-digest-buffer
              (erase-buffer)
-             (insert-buffer "*gnus-uu-pre*")
+             (insert-buffer-substring "*gnus-uu-pre*")
              (goto-char (point-max))
-             (insert-buffer "*gnus-uu-body*"))
+             (insert-buffer-substring "*gnus-uu-body*"))
          (save-excursion
            (set-buffer "*gnus-uu-pre*")
            (insert (format "\n\n%s\n\n" (make-string 70 ?-)))
            (if gnus-uu-digest-buffer
                (with-current-buffer gnus-uu-digest-buffer
                  (erase-buffer)
-                 (insert-buffer "*gnus-uu-pre*"))
+                 (insert-buffer-substring "*gnus-uu-pre*"))
              (let ((coding-system-for-write mm-text-coding-system))
                (gnus-write-buffer gnus-uu-saved-article-name))))
          (save-excursion
@@ -989,7 +954,7 @@ When called interactively, prompt for REGEXP."
            (if gnus-uu-digest-buffer
                (with-current-buffer gnus-uu-digest-buffer
                  (goto-char (point-max))
-                 (insert-buffer "*gnus-uu-body*"))
+                 (insert-buffer-substring "*gnus-uu-body*"))
              (let ((coding-system-for-write mm-text-coding-system)
                    (file-name-coding-system nnmail-pathname-coding-system))
                (write-region
@@ -1027,7 +992,8 @@ When called interactively, prompt for REGEXP."
        (if (looking-at gnus-uu-binhex-begin-line)
            (progn
              (setq state (list 'begin))
-             (write-region 1 1 gnus-uu-binhex-article-name))
+             (write-region (point-min) (point-min)
+                           gnus-uu-binhex-article-name))
          (setq state (list 'middle)))
        (goto-char (point-max))
        (re-search-backward (concat gnus-uu-binhex-body-line "\\|"
@@ -1139,7 +1105,7 @@ When called interactively, prompt for REGEXP."
     (while (re-search-forward "[ \t]+" nil t)
       (replace-match "[ \t]+" t t))
 
-    (buffer-substring 1 (point-max))))
+    (buffer-string)))
 
 (defun gnus-uu-get-list-of-articles (n)
   ;; If N is non-nil, the article numbers of the N next articles
@@ -1199,7 +1165,7 @@ When called interactively, prompt for REGEXP."
 
        ;; Expand numbers, sort, and return the list of article
        ;; numbers.
-       (mapcar (lambda (sub) (cdr sub))
+       (mapcar 'cdr
                (sort (gnus-uu-expand-numbers
                       list-of-subjects
                       (not do-not-translate))
@@ -1231,10 +1197,11 @@ When called interactively, prompt for REGEXP."
        ;; Expand numbers.
        (goto-char (point-min))
        (while (re-search-forward "[0-9]+" nil t)
-         (replace-match
-          (format "%06d"
-                  (string-to-int (buffer-substring
-                                  (match-beginning 0) (match-end 0))))))
+         (ignore-errors
+           (replace-match
+            (format "%06d"
+                    (string-to-number (buffer-substring
+                                    (match-beginning 0) (match-end 0)))))))
        (setq string (buffer-substring 1 (point-max)))
        (setcar (car string-list) string)
        (setq string-list (cdr string-list))))
@@ -1341,7 +1308,7 @@ When called interactively, prompt for REGEXP."
                       (not gnus-uu-be-dangerous)
                       (or (eq gnus-uu-be-dangerous t)
                           (gnus-y-or-n-p
-                           (format "Delete unsuccessfully decoded file %s"
+                           (format "Delete unsuccessfully decoded file %s? "
                                    result-file))))
              (delete-file result-file)))
          (when (memq 'begin process-state)
@@ -1400,27 +1367,27 @@ When called interactively, prompt for REGEXP."
              (setq process-state (list 'error))
              (gnus-message 2 "No begin part at the beginning")
              (sleep-for 2))
-         (setq state 'middle)))
+         (setq state 'middle))))
 
       ;; When there are no result-files, then something must be wrong.
-      (if result-files
-         (message "")
-       (cond
-        ((not has-been-begin)
-         (gnus-message 2 "Wrong type file"))
-        ((memq 'error process-state)
-         (gnus-message 2 "An error occurred during decoding"))
-        ((not (or (memq 'ok process-state)
-                  (memq 'end process-state)))
-         (gnus-message 2 "End of articles reached before end of file")))
-       ;; Make unsuccessfully decoded articles unread.
-       (when gnus-uu-unmark-articles-not-decoded
-         (while article-series
-           (gnus-summary-tick-article (pop article-series) t)))))
+    (if result-files
+       (message "")
+      (cond
+       ((not has-been-begin)
+       (gnus-message 2 "Wrong type file"))
+       ((memq 'error process-state)
+       (gnus-message 2 "An error occurred during decoding"))
+       ((not (or (memq 'ok process-state)
+                (memq 'end process-state)))
+       (gnus-message 2 "End of articles reached before end of file")))
+      ;; Make unsuccessfully decoded articles unread.
+      (when gnus-uu-unmark-articles-not-decoded
+       (while article-series
+         (gnus-summary-tick-article (pop article-series) t))))
 
     ;; The original article buffer is hosed, shoot it down.
     (gnus-kill-buffer gnus-original-article-buffer)
-
+    (setq gnus-current-article nil)
     result-files))
 
 (defun gnus-uu-grab-view (file)
@@ -1451,7 +1418,7 @@ When called interactively, prompt for REGEXP."
          (setq part (match-string 0 subject))
          (setq subject (substring subject (match-end 0)))))
     (or part
-       (while (string-match "\\([0-9]+\\)[^0-9]+\\([0-9]+\\)" subject)
+       (while (string-match "[0-9]+[^0-9]+[0-9]+" subject)
          (setq part (match-string 0 subject))
          (setq subject (substring subject (match-end 0)))))
     (or part "")))
@@ -1486,10 +1453,10 @@ When called interactively, prompt for REGEXP."
          ;; This is the beginning of a uuencoded article.
          ;; We replace certain characters that could make things messy.
          (setq gnus-uu-file-name
-               (let ((nnheader-file-name-translation-alist
-                      '((?/ . ?,) (?  . ?_) (?* . ?_) (?$ . ?_))))
-                 (nnheader-translate-file-chars (match-string 1))))
-          (replace-match (concat "begin 644 " gnus-uu-file-name) t t)
+               (gnus-map-function
+                mm-file-name-rewrite-functions
+                (file-name-nondirectory (match-string 1))))
+         (replace-match (concat "begin 644 " gnus-uu-file-name) t t)
 
          ;; Remove any non gnus-uu-body-line right after start.
          (forward-line 1)
@@ -1678,7 +1645,7 @@ Gnus might fail to display all of it.")
 
     (gnus-message 5 "Unpacking: %s..." (gnus-uu-command action file-path))
 
-    (if (= 0 (call-process shell-file-name nil
+    (if (eq 0 (call-process shell-file-name nil
                           (gnus-get-buffer-create gnus-uu-output-buffer-name)
                           nil shell-command-switch command))
        (message "")
@@ -1753,8 +1720,7 @@ Gnus might fail to display all of it.")
 (defun gnus-uu-check-correct-stripped-uucode (start end)
   (save-excursion
     (let (found beg length)
-      (if (not gnus-uu-correct-stripped-uucode)
-         ()
+      (unless gnus-uu-correct-stripped-uucode
        (goto-char start)
 
        (if (re-search-forward " \\|`" end t)
@@ -1767,19 +1733,15 @@ Gnus might fail to display all of it.")
                  (forward-line 1))))
 
          (while (not (eobp))
-           (if (looking-at (concat gnus-uu-begin-string "\\|"
-                                   gnus-uu-end-string))
-               ()
+           (unless (looking-at (concat gnus-uu-begin-string "\\|"
+                                       gnus-uu-end-string))
              (when (not found)
-               (beginning-of-line)
-               (setq beg (point))
-               (end-of-line)
-               (setq length (- (point) beg)))
+               (setq length (- (point-at-eol) (point-at-bol))))
              (setq found t)
              (beginning-of-line)
              (setq beg (point))
              (end-of-line)
-             (when (not (= length (- (point) beg)))
+             (unless (= length (- (point) beg))
                (insert (make-string (- length (- (point) beg)) ? ))))
            (forward-line 1)))))))
 
@@ -1803,9 +1765,8 @@ Gnus might fail to display all of it.")
                 gnus-uu-tmp-dir)))
 
       (setq gnus-uu-work-dir
-           (make-temp-name (concat gnus-uu-tmp-dir "gnus")))
-      (gnus-make-directory gnus-uu-work-dir)
-      (set-file-modes gnus-uu-work-dir 448)
+           (mm-make-temp-file (concat gnus-uu-tmp-dir "gnus") 'dir))
+      (gnus-set-file-modes gnus-uu-work-dir 448)
       (setq gnus-uu-work-dir (file-name-as-directory gnus-uu-work-dir))
       (push (cons gnus-newsgroup-name gnus-uu-work-dir)
            gnus-uu-tmp-alist))))
@@ -1825,7 +1786,7 @@ Gnus might fail to display all of it.")
 ;; that the filename will be treated as a single argument when the shell
 ;; executes the command.
 (defun gnus-uu-command (action file)
-  (let ((quoted-file (mm-quote-arg file)))
+  (let ((quoted-file (shell-quote-argument file)))
     (if (string-match "%s" action)
        (format action quoted-file)
       (concat action " " quoted-file))))
@@ -1844,9 +1805,13 @@ Gnus might fail to display all of it.")
          (if (file-directory-p file)
              (gnus-uu-delete-work-dir file)
            (gnus-message 9 "Deleting file %s..." file)
-           (delete-file file))))
-      (delete-directory dir)))
-  (gnus-message 7 ""))
+            (condition-case err
+                (delete-file file)
+              (error (gnus-message 3 "Deleting file %s failed... %s" file err))))))
+      (condition-case err
+          (delete-directory dir)
+        (error (gnus-message 3 "Deleting directory %s failed... %s" file err))))
+    (gnus-message 7 "")))
 
 ;; Initializing
 
@@ -1945,7 +1910,7 @@ The user will be asked for a file name."
   (when (gnus-uu-post-encode-file "uuencode" path file-name)
     (goto-char (point-min))
     (forward-line 1)
-    (while (re-search-forward " " nil t)
+    (while (search-forward " " nil t)
       (replace-match "`"))
     t))
 
@@ -1957,8 +1922,8 @@ The user will be asked for a file name."
 
 ;; Encodes with base64 and adds MIME headers
 (defun gnus-uu-post-encode-mime (path file-name)
-  (when (zerop (call-process shell-file-name nil t nil shell-command-switch
-                            (format "%s %s -o %s" "mmencode" path file-name)))
+  (when (eq 0 (call-process shell-file-name nil t nil shell-command-switch
+                           (format "%s %s -o %s" "mmencode" path file-name)))
     (gnus-uu-post-make-mime file-name "base64")
     t))
 
@@ -1974,7 +1939,7 @@ The user will be asked for a file name."
     (goto-char (point-min))
     (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$"))
     (forward-line -1)
-    (narrow-to-region 1 (point))
+    (narrow-to-region (point-min) (point))
     (unless (mail-fetch-field "mime-version")
       (widen)
       (insert "MIME-Version: 1.0\n"))
@@ -1983,8 +1948,8 @@ The user will be asked for a file name."
 ;; Encodes a file PATH with COMMAND, leaving the result in the
 ;; current buffer.
 (defun gnus-uu-post-encode-file (command path file-name)
-  (= 0 (call-process shell-file-name nil t nil shell-command-switch
-                    (format "%s %s %s" command path file-name))))
+  (eq 0 (call-process shell-file-name nil t nil shell-command-switch
+                     (format "%s %s %s" command path file-name))))
 
 (defun gnus-uu-post-news-inews ()
   "Posts the composed news article and encoded file.
@@ -2064,7 +2029,7 @@ If no file has been included, the user will be asked for a file."
       (erase-buffer)
       (insert-buffer-substring post-buf beg-binary end-binary)
       (goto-char (point-min))
-      (setq length (count-lines 1 (point-max)))
+      (setq length (count-lines (point-min) (point-max)))
       (setq parts (/ length gnus-uu-post-length))
       (unless (< (% length gnus-uu-post-length) 4)
        (incf parts)))
@@ -2076,8 +2041,7 @@ If no file has been included, the user will be asked for a file."
     (goto-char (point-min))
     (re-search-forward
      (concat "^" (regexp-quote mail-header-separator) "$") nil t)
-    (beginning-of-line)
-    (setq header (buffer-substring 1 (point)))
+    (setq header (buffer-substring (point-min) (point-at-bol)))
 
     (goto-char (point-min))
     (when gnus-uu-post-separate-description
@@ -2153,9 +2117,9 @@ If no file has been included, the user will be asked for a file."
 
     (when (not gnus-uu-post-separate-description)
       (set-buffer-modified-p nil)
-      (when (fboundp 'bury-buffer)
-       (bury-buffer)))))
+      (bury-buffer))))
 
 (provide 'gnus-uu)
 
-;; gnus-uu.el ends here
+;;; arch-tag: 05312384-0a83-4720-9a58-b3160b888853
+;;; gnus-uu.el ends here