emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 38d0276: Fix GPG bug introduced by Oct file-missing


From: Paul Eggert
Subject: [Emacs-diffs] master 38d0276: Fix GPG bug introduced by Oct file-missing change
Date: Tue, 6 Dec 2016 06:42:13 +0000 (UTC)

branch: master
commit 38d0276ad122d1a7663ecca965506f85b4e29b7f
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Fix GPG bug introduced by Oct file-missing change
    
    Problem with visiting nonexistent .gpg file
    reported by Herbert J Skuhra.
    * lisp/epa-file.el (epa-file--find-file-not-found-function):
    (epa-file-insert-file-contents, epa-file-write-region):
    Signal file-missing or file-error instead of epa-error.
---
 lisp/epa-file.el |   29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/lisp/epa-file.el b/lisp/epa-file.el
index 2303a08..4b0d9b3 100644
--- a/lisp/epa-file.el
+++ b/lisp/epa-file.el
@@ -120,7 +120,7 @@ encryption is used."
   (let ((error epa-file-error))
     (save-window-excursion
       (kill-buffer))
-    (signal (car error)
+    (signal 'file-missing
            (cons "Opening input file" (cdr error)))))
 
 (defvar last-coding-system-used)
@@ -165,18 +165,19 @@ encryption is used."
                      (equal (cadr error) "Searching for program"))
                 (error "Decryption program `%s' not found"
                        (nth 3 error)))
-            (when (file-exists-p local-file)
-              ;; Hack to prevent find-file from opening empty buffer
-              ;; when decryption failed (bug#6568).  See the place
-              ;; where `find-file-not-found-functions' are called in
-              ;; `find-file-noselect-1'.
-              (setq-local epa-file-error error)
-              (add-hook 'find-file-not-found-functions
-                        'epa-file--find-file-not-found-function
-                        nil t)
-              (epa-display-error context))
-            (signal (car error)
-                    (cons "Opening input file" (cdr error)))))
+            (let ((exists (file-exists-p local-file)))
+              (when exists
+                ;; Hack to prevent find-file from opening empty buffer
+                ;; when decryption failed (bug#6568).  See the place
+                ;; where `find-file-not-found-functions' are called in
+                ;; `find-file-noselect-1'.
+                (setq-local epa-file-error error)
+                (add-hook 'find-file-not-found-functions
+                          'epa-file--find-file-not-found-function
+                          nil t)
+                (epa-display-error context))
+              (signal (if exists 'file-error 'file-missing)
+                      (cons "Opening input file" (cdr error))))))
           (set-buffer buf) ;In case timer/filter changed/killed it (bug#16029)!
          (setq-local epa-file-encrypt-to
                       (mapcar #'car (epg-context-result-for
@@ -272,7 +273,7 @@ If no one is selected, symmetric encryption will be 
performed.  "
        (epa-display-error context)
        (if (setq entry (assoc file epa-file-passphrase-alist))
           (setcdr entry nil))
-       (signal (car error) (cons "Opening output file" (cdr error)))))
+       (signal 'file-error (cons "Opening output file" (cdr error)))))
     (epa-file-run-real-handler
      #'write-region
      (list string nil file append visit lockname mustbenew))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]