diff options
author | Miles Bader <[email protected]> | 2006-09-04 06:27:27 +0000 |
---|---|---|
committer | Miles Bader <[email protected]> | 2006-09-04 06:27:27 +0000 |
commit | d709390421bc438bfcf6d24e4f07a51e20c84fa1 (patch) | |
tree | 2e5b5945a1b9f08035e742584f0c543b0f77fe0f /lisp/pgg-gpg.el | |
parent | a8c3a596c22764463b674a21eb3b2e869b21e42f (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.el | 35 |
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)))) |