*** empty log message ***
[gnus] / lisp / gnus-uu.el
index f2176c3..27d229d 100644 (file)
@@ -259,7 +259,7 @@ The headers will be included in the sequence they are matched.")
 (defvar gnus-uu-generated-file-list nil)
 (defvar gnus-uu-work-dir nil)
 
-(defconst gnus-uu-output-buffer-name "*Gnus UU Output*")
+(defconst gnus-uu-output-buffer-name " *Gnus UU Output*")
 
 (defconst gnus-uu-highest-article-number 1)
 (defvar gnus-uu-default-dir default-directory)
@@ -1060,7 +1060,7 @@ The headers will be included in the sequence they are matched.")
       (message "Getting article %d, %s" article (gnus-uu-part-number article))
 
       (if (not (= (or gnus-current-article 0) article))
-         (progn
+         (let ((nntp-async-number nil))
            (gnus-request-article article gnus-newsgroup-name
                                  nntp-server-buffer)
            (setq gnus-last-article gnus-current-article)
@@ -1458,24 +1458,35 @@ The headers will be included in the sequence they are matched.")
                (insert (make-string (- length (- (point) beg)) ? ))))
          (forward-line 1))))))
 
+(defvar gnus-uu-tmp-alist nil)
+
 (defun gnus-uu-initialize ()
-  (setq gnus-uu-highest-article-number 1)
-  (gnus-uu-check-for-generated-files)
-  (setq gnus-uu-tmp-dir (file-name-as-directory 
-                        (expand-file-name gnus-uu-tmp-dir)))
-
-  (if (not (file-directory-p gnus-uu-tmp-dir))
-      (error "Temp directory %s doesn't exist" gnus-uu-tmp-dir)
-    (if (not (file-writable-p gnus-uu-tmp-dir))
-       (error "Temp directory %s can't be written to" gnus-uu-tmp-dir)))
-
-  (setq gnus-uu-work-dir 
-       (make-temp-name (concat gnus-uu-tmp-dir "gnus")))
-  (gnus-uu-add-file gnus-uu-work-dir)
-  (if (not (file-directory-p gnus-uu-work-dir)) 
-      (gnus-make-directory gnus-uu-work-dir))
-  (set-file-modes gnus-uu-work-dir 448)
-  (setq gnus-uu-work-dir (file-name-as-directory gnus-uu-work-dir)))
+  (let (entry)
+    (if (if (setq entry (assoc gnus-newsgroup-name gnus-uu-tmp-alist))
+           (if (file-exists-p (cdr entry))
+               (setq gnus-uu-work-dir (cdr entry))
+             (setq gnus-uu-tmp-alist (delq entry gnus-uu-tmp-alist))
+             nil))
+       t
+      (setq gnus-uu-highest-article-number 1)
+      (setq gnus-uu-tmp-dir (file-name-as-directory 
+                            (expand-file-name gnus-uu-tmp-dir)))
+      (if (not (file-directory-p gnus-uu-tmp-dir))
+         (error "Temp directory %s doesn't exist" gnus-uu-tmp-dir)
+       (if (not (file-writable-p gnus-uu-tmp-dir))
+           (error "Temp directory %s can't be written to" 
+                  gnus-uu-tmp-dir)))
+
+      (setq gnus-uu-work-dir 
+           (make-temp-name (concat gnus-uu-tmp-dir "gnus")))
+      (gnus-uu-add-file gnus-uu-work-dir)
+      (if (not (file-directory-p gnus-uu-work-dir)) 
+         (gnus-make-directory gnus-uu-work-dir))
+      (set-file-modes gnus-uu-work-dir 448)
+      (setq gnus-uu-work-dir (file-name-as-directory gnus-uu-work-dir))
+      (setq gnus-uu-tmp-alist (cons (cons gnus-newsgroup-name gnus-uu-work-dir)
+                                   gnus-uu-tmp-alist)))))
+
 
 ;; Kills the temporary uu buffers, kills any processes, etc.
 (defun gnus-uu-clean-up ()
@@ -1523,7 +1534,7 @@ The headers will be included in the sequence they are matched.")
 ;; quotes round the file name and escaping any quotes in the file name.
 (defun gnus-uu-command (action file)
   (let ((ofile ""))
-    (while (string-match "!\\|`\\|\"\\|\\$\\|\\\\" file)
+    (while (string-match "!\\|`\\|\"\\|\\$\\|\\\\\\|&" file)
       (progn
        (setq ofile
              (concat ofile (substring file 0 (match-beginning 0)) "\\"