Function: feedmail-dump-message-to-queue

feedmail-dump-message-to-queue is a byte-compiled function defined in feedmail.el.gz.

Signature

(feedmail-dump-message-to-queue QUEUE-DIRECTORY WHAT-EVENT)

Source Code

;; Defined in /usr/src/emacs/lisp/mail/feedmail.el.gz
(defun feedmail-dump-message-to-queue (queue-directory what-event)
  (feedmail-say-debug ">in-> feedmail-dump-message-to-queue %s %s" queue-directory what-event)
  (or (file-accessible-directory-p queue-directory)
      ;; progn to get nil result no matter what
      (progn (make-directory queue-directory t) nil)
      (file-accessible-directory-p queue-directory)
      (error "FQM: Message not queued; trouble with directory %s" queue-directory))
  (let ((filename)
	(is-fqm)
	(is-in-this-dir)
	(previous-buffer-file-name buffer-file-name))
    (if buffer-file-name
	(progn
	  (setq is-fqm (feedmail-fqm-p buffer-file-name))
	  (setq is-in-this-dir (string-equal
				(directory-file-name
				 (expand-file-name queue-directory))
				(directory-file-name (expand-file-name (file-name-directory buffer-file-name)))))))
    ;; if visiting a queued message, just save
    (if (and is-fqm is-in-this-dir)
	(setq filename buffer-file-name)
      (setq filename (feedmail-create-queue-filename queue-directory)))
    ;; make binary file on DOS/Windows 95/Windows NT, etc
    (let ((coding-system-for-write
	   (if feedmail-force-binary-write
	       'no-conversion
	     coding-system-for-write)))
      (write-file filename))
    ;; convenient for moving from draft to q, for example
    (if (and previous-buffer-file-name (or (not is-fqm) (not is-in-this-dir))
	     (let (d b s)
	       (setq b (file-name-nondirectory previous-buffer-file-name))
	       (setq d (file-name-directory previous-buffer-file-name))
	       (setq s (substring d (1- (length d))))
	       (setq d (substring d 0 (1- (length d))))
	       (setq d (file-name-nondirectory d))
	       (y-or-n-p (format "FQM: Was previously %s%s%s; delete that? "
				 d s b))))
	(delete-file previous-buffer-file-name))
    (if feedmail-nuke-buffer-after-queue
	(let ((a-s-file-name buffer-auto-save-file-name))
	  ;; be aggressive in nuking auto-save files
	  (and (kill-buffer (current-buffer))
	       delete-auto-save-files
	       (file-exists-p a-s-file-name)
	       (delete-file a-s-file-name))))
    (feedmail-say-chatter "Queued in %s" filename)
    (if feedmail-queue-chatty
	(progn
	  (feedmail-queue-reminder what-event)
	  (sit-for feedmail-queue-chatty-sit-for)))))