Function: nnmaildir-request-replace-article
nnmaildir-request-replace-article is a byte-compiled function defined
in nnmaildir.el.gz.
Signature
(nnmaildir-request-replace-article NUMBER GNAME BUFFER)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/nnmaildir.el.gz
(defun nnmaildir-request-replace-article (number gname buffer)
(let ((group (nnmaildir--prepare nil gname))
(coding-system-for-write nnheader-file-coding-system)
(buffer-file-coding-system nil)
(file-coding-system-alist nil)
dir file article suffix tmpfile deactivate-mark)
(catch 'return
(unless group
(setf (nnmaildir--srv-error nnmaildir--cur-server)
(concat "No such group: " gname))
(throw 'return nil))
(when (nnmaildir--param (nnmaildir--pgname nnmaildir--cur-server gname)
'read-only)
(setf (nnmaildir--srv-error nnmaildir--cur-server)
(concat "Read-only group: " group))
(throw 'return nil))
(setq dir (nnmaildir--srv-dir nnmaildir--cur-server)
dir (nnmaildir--srvgrp-dir dir gname)
article (nnmaildir--nlist-art group number))
(unless article
(setf (nnmaildir--srv-error nnmaildir--cur-server)
(concat "No such article: " (number-to-string number)))
(throw 'return nil))
(setq suffix (nnmaildir--art-suffix article)
file (nnmaildir--art-prefix article)
tmpfile (concat (nnmaildir--tmp dir) file))
(when (file-exists-p tmpfile)
(setf (nnmaildir--srv-error nnmaildir--cur-server)
(concat "File exists: " tmpfile))
(throw 'return nil))
(with-current-buffer buffer
(write-region (point-min) (point-max) tmpfile nil 'no-message nil
'excl))
(when (fboundp 'unix-sync)
(unix-sync)) ;; no fsync :(
(rename-file tmpfile (concat (nnmaildir--cur dir) file suffix) 'replace)
t)))