aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/pgg-gpg.el
diff options
context:
space:
mode:
authorMiles Bader <[email protected]>2006-09-04 06:27:27 +0000
committerMiles Bader <[email protected]>2006-09-04 06:27:27 +0000
commitd709390421bc438bfcf6d24e4f07a51e20c84fa1 (patch)
tree2e5b5945a1b9f08035e742584f0c543b0f77fe0f /lisp/pgg-gpg.el
parenta8c3a596c22764463b674a21eb3b2e869b21e42f (diff)
Merge from gnus--rel--5.10
Patches applied: * gnus--rel--5.10 (patch 129-130) - Merge from emacs--devo--0 - Update from CVS 2006-09-04 Daiki Ueno <[email protected]> * lisp/pgg-gpg.el (pgg-gpg-process-region): Revert two patches from Satyaki Das. http://article.gmane.org/gmane.emacs.gnus.general/49947 http://article.gmane.org/gmane.emacs.gnus.general/50457 2006-09-04 Katsumi Yamaoka <[email protected]> * lisp/gnus/rfc2047.el (rfc2047-strip-backslashes-in-quoted-strings): Decode `\\' in quoted string into `\'. Revision: [email protected]/emacs--devo--0--patch-421
Diffstat (limited to 'lisp/pgg-gpg.el')
-rw-r--r--lisp/pgg-gpg.el35
1 files changed, 21 insertions, 14 deletions
diff --git a/lisp/pgg-gpg.el b/lisp/pgg-gpg.el
index ab91471a61..46dbf83331 100644
--- a/lisp/pgg-gpg.el
+++ b/lisp/pgg-gpg.el
@@ -74,23 +74,27 @@
(errors-buffer pgg-errors-buffer)
(orig-mode (default-file-modes))
(process-connection-type nil)
- exit-status)
+ process status exit-status)
(with-current-buffer (get-buffer-create errors-buffer)
(buffer-disable-undo)
(erase-buffer))
(unwind-protect
(progn
(set-default-file-modes 448)
- (let ((coding-system-for-write 'binary)
- (input (buffer-substring-no-properties start end))
- (default-enable-multibyte-characters nil))
- (with-temp-buffer
- (when passphrase
- (insert passphrase "\n"))
- (insert input)
- (setq exit-status
- (apply #'call-process-region (point-min) (point-max) program
- nil errors-buffer nil args))))
+ (let ((coding-system-for-write 'binary))
+ (setq process
+ (apply #'start-process "*GnuPG*" errors-buffer
+ program args)))
+ (set-process-sentinel process #'ignore)
+ (when passphrase
+ (process-send-string process (concat passphrase "\n")))
+ (process-send-region process start end)
+ (process-send-eof process)
+ (while (eq 'run (process-status process))
+ (accept-process-output process 5))
+ (setq status (process-status process)
+ exit-status (process-exit-status process))
+ (delete-process process)
(with-current-buffer (get-buffer-create output-buffer)
(buffer-disable-undo)
(erase-buffer)
@@ -100,9 +104,12 @@
'binary)))
(insert-file-contents output-file-name)))
(set-buffer errors-buffer)
- (if (not (equal exit-status 0))
- (insert (format "\n%s exited abnormally: '%s'\n"
- program exit-status)))))
+ (if (memq status '(stop signal))
+ (error "%s exited abnormally: '%s'" program exit-status))
+ (if (= 127 exit-status)
+ (error "%s could not be found" program))))
+ (if (and process (eq 'run (process-status process)))
+ (interrupt-process process))
(if (file-exists-p output-file-name)
(delete-file output-file-name))
(set-default-file-modes orig-mode))))