]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix GPG bug introduced by Oct file-missing change
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 6 Dec 2016 06:40:36 +0000 (22:40 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 6 Dec 2016 06:42:09 +0000 (22:42 -0800)
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

index 2303a085909e24e30741d04f93125e138396048b..4b0d9b3108a0f5d9c681d15bca89c6994b3de16b 100644 (file)
@@ -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))