(defconst gnus-uu-shar-name-marker "begin [0-7][0-7][0-7][ \t]+\\(\\(\\w\\|\\.\\)*\\b\\)")
(defvar gnus-uu-file-name nil)
-(defvar gnus-uu-list-of-files-decoded nil)
(defconst gnus-uu-uudecode-process nil)
(defvar gnus-uu-generated-file-list nil)
(interactive "P\nDWhere do you want to save the file(s)? ")
(gnus-uu-decode-with-method 'gnus-uu-binhex-article n dir))
+(defun gnus-uu-decode-uu-view (n)
+ "Uudecodes and views the current article."
+ (interactive "P")
+ (let ((gnus-view-pseudos 'automatic))
+ (gnus-uu-decode-uu n)))
+
+(defun gnus-uu-decode-uu-and-save-view (n dir)
+ "Decodes, views and saves the resulting file."
+ (interactive "P\nDWhere do you want to save the file(s)? ")
+ (let ((gnus-view-pseudos 'automatic))
+ (gnus-uu-decode-uu-and-save n dir)))
+
+(defun gnus-uu-decode-unshar-view (n)
+ "Unshars and views the current article."
+ (interactive "P")
+ (let ((gnus-view-pseudos 'automatic))
+ (gnus-uu-decode-unshar n)))
+
+(defun gnus-uu-decode-unshar-and-save-view (n dir)
+ "Unshars and saves the current article."
+ (interactive "P\nDWhere do you want to save the file(s)? ")
+ (let ((gnus-view-pseudos 'automatic))
+ (gnus-uu-decode-unshar-and-save n dir)))
+
+(defun gnus-uu-decode-save-view (n file)
+ "Saves and views the current article."
+ (interactive "P\nDWhere do you want to save the file(s)? ")
+ (let ((gnus-view-pseudos 'automatic))
+ (gnus-uu-decode-save n file)))
+
+(defun gnus-uu-decode-binhex-view (n file)
+ "Unbinhexes and views the current article."
+ (interactive "P\nDWhere do you want to save the file(s)? ")
+ (let ((gnus-view-pseudos 'automatic))
+ (gnus-uu-decode-binhex n file)))
+
+
;; Digest and forward articles
(defun gnus-uu-digest-and-forward (n)
(message ""))
(gnus-summary-position-cursor))
+(defun gnus-uu-mark-series ()
+ "Mark the current series with the process mark."
+ (interactive)
+ (let ((articles (gnus-uu-find-articles-matching)))
+ (while articles
+ (gnus-summary-set-process-mark (car articles))
+ (setq articles (cdr articles)))
+ (message ""))
+ (gnus-summary-position-cursor))
+
(defun gnus-uu-mark-region (beg end)
"Marks all articles between point and mark."
(interactive "r")
(setq gnus-newsgroup-processable (nreverse total)))
(gnus-summary-position-cursor)))
-;; Work functions
+(defun gnus-uu-mark-all ()
+ "Mark all articles in \"series\" order."
+ (interactive)
+ (setq gnus-newsgroup-processable nil)
+ (save-excursion
+ (goto-char (point-min))
+ (let (number)
+ (while (and (not (eobp))
+ (setq number (gnus-summary-article-number)))
+ (if (not (memq number gnus-newsgroup-processable))
+ (save-excursion (gnus-uu-mark-series)))
+ (forward-line 1))))
+ (gnus-summary-position-cursor))
+
+;; Internal functions.
(defun gnus-uu-decode-with-method (method n &optional save)
(gnus-uu-initialize)
(and save (gnus-uu-save-files files save))
(setq files (gnus-uu-unpack-files files))
(gnus-uu-add-file (mapcar (lambda (file) (cdr (assq 'name file))) files))
- (setq files (gnus-uu-get-actions files))
+ (setq files (nreverse (gnus-uu-get-actions files)))
(gnus-summary-insert-pseudos files)))
(defun gnus-uu-save-files (files dir)
(let ((state 'first)
(wrong-type t)
has-been-begin has-been-end
- article result-file result-files process-state article-buffer)
+ article result-file result-files process-state article-buffer
+ begin-article)
(if (not (gnus-server-opened gnus-current-select-method))
(progn
(delete-file result-file)))
(if (memq 'begin process-state)
(setq result-file (car process-state)))
+ (setq begin-article article)
(setq has-been-begin t)
(setq has-been-end nil)))
(if (memq 'end process-state)
(progn
(setq gnus-uu-has-been-grabbed nil)
- (setq result-files (cons result-file result-files))
+ (setq result-files (cons (list (cons 'name result-file)
+ (cons 'article article))
+ result-files))
(setq has-been-end t)
(setq has-been-begin nil)
(and limit (= (length result-files) limit)
(if (and result-file (file-exists-p result-file))
(delete-file result-file)))
-; (setq result-file nil)
-
(if (not (memq 'wrong-type process-state))
(setq wrong-type nil)
(if gnus-uu-unmark-articles-not-decoded
(message "End of articles reached before end of file"))
(setq result-files nil))
(gnus-uu-unmark-list-of-grabbed)))))
- (setq gnus-uu-list-of-files-decoded result-files)
- (and result-files
- (mapcar (lambda (file) (list (cons 'name file))) result-files))))
+ result-files))
(defun gnus-uu-uudecode-sentinel (process event)
(delete-process (get-process process)))