Function: mm-save-part

mm-save-part is a byte-compiled function defined in mm-decode.el.gz.

Signature

(mm-save-part HANDLE &optional PROMPT)

Documentation

Write HANDLE to a file.

PROMPT overrides the default one used to ask user for a file name.

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/mm-decode.el.gz
(defun mm-save-part (handle &optional prompt)
  "Write HANDLE to a file.
PROMPT overrides the default one used to ask user for a file name."
  (let ((filename (or (mail-content-type-get
		       (mm-handle-disposition handle) 'filename)
		      (mail-content-type-get
		       (mm-handle-type handle) 'name)))
	file directory)
    (when filename
      (setq filename (gnus-map-function mm-file-name-rewrite-functions
					(file-name-nondirectory filename))))
    (while
	(progn
	  (setq file
		(read-file-name
		 (or prompt
		     (format-prompt "Save MIME part to" filename))
		 (or directory mm-default-directory default-directory)
		 (expand-file-name
		  (or filename "")
		  (or directory mm-default-directory default-directory))))
	  (cond ((or (not file) (equal file ""))
		 (message "Please enter a file name")
		 t)
		((and (file-directory-p file)
		      (not filename))
		 (setq directory file)
		 (message "Please enter a non-directory file name")
		 t)
		(t nil)))
      (sit-for 2)
      (discard-input))
    (if (file-directory-p file)
	(setq file (expand-file-name filename file))
      (setq file (expand-file-name
		  file (or mm-default-directory default-directory))))
    (setq mm-default-directory (file-name-directory file))
    (and (or (not (file-exists-p file))
	     (yes-or-no-p (format "File %s already exists; overwrite? "
				  file)))
	 (progn
	   (mm-save-part-to-file handle file)
	   file))))