unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#69116: 29.1; plstore.el failed when save using EasyPG
@ 2024-02-14  5:37 LdBeth
  0 siblings, 0 replies; only message in thread
From: LdBeth @ 2024-02-14  5:37 UTC (permalink / raw)
  To: 69116

It seems to be the residue of bug #63256, with GnuPG 2.4.4 and set epg
to use loopback pinentry the plstore.el still failed to encrypt file.
The result below is produced without using init file on macOS.

$ gpg2 --version
gpg (GnuPG) 2.4.4
libgcrypt 1.10.3
Copyright (C) 2024 g10 Code GmbH
License GNU GPL-3.0-or-later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /Users/ldbeth/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

$ cat .gnupg/gpg-agent.conf 
allow-loopback-pinentry
default-cache-ttl 34560000
max-cache-ttl 34560000


(setq epg-pinentry-mode 'loopback)
(require 'plstore)
(setq store (plstore-open (expand-file-name "~/foo")))

(plstore-put store "as" '(:host "bar.example.kk") '(:user "ba"))
(plstore-save store)

Debugger entered--Lisp error: (error "Process epg not running: exited abnormally with co...")
  process-send-string(#<process epg> "abcdef\n")
  (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line (encode-coding-string passphrase-with-new-line (coding-system-change-eol-conversion epg-passphrase-coding-system 'unix))) (clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) (progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq passphrase-with-new-line nil))) (process-send-string (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 16)) encoded-passphrase-with-new-line))
  (if passphrase (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line (encode-coding-string passphrase-with-new-line (coding-system-change-eol-conversion epg-passphrase-coding-system 'unix))) (clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) (progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq passphrase-with-new-line nil))) (process-send-string (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 16)) encoded-passphrase-with-new-line)))
  (progn (setq passphrase (funcall (car (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... context))) (aref context 10))) context epg-key-id (cdr (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... context))) (aref context 10))))) (if passphrase (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line (encode-coding-string passphrase-with-new-line (coding-system-change-eol-conversion epg-passphrase-coding-system ...))) (clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) (progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq passphrase-with-new-line nil))) (process-send-strin
 g (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... context))) (aref context 16)) encoded-passphrase-with-new-line))))
  (condition-case nil (progn (setq passphrase (funcall (car (progn (or (progn ...) (signal ... ...)) (aref context 10))) context epg-key-id (cdr (progn (or (progn ...) (signal ... ...)) (aref context 10))))) (if passphrase (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line (encode-coding-string passphrase-with-new-line ...)) (clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) (progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq passphrase-with-new-line nil))) (process-send-string (progn (or (progn ...) (signal ... ...)) (aref context 16)) encoded-passphrase-with-new-line)))) (quit (epg-context-set-resul
 t-for context 'error (cons '(quit) (epg-context-result-for context 'error))) (delete-process (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-
 context context))) (aref context 16)))))
  (unwind-protect (condition-case nil (progn (setq passphrase (funcall (car (progn (or ... ...) (aref context 10))) context epg-key-id (cdr (progn (or ... ...) (aref context 10))))) (if passphrase (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn (setq encoded-passphrase-with-new-line ...) (clear-string passphrase-with-new-line) (setq passphrase-with-new-line nil)) (progn (setq encoded-passphrase-with-new-line passphrase-with-new-line) (setq passphrase-with-new-line nil))) (process-send-string (progn (or ... ...) (aref context 16)) encoded-passphrase-with-new-line)))) (quit (epg-context-set-result-for context 'error (cons '(quit) (epg-context-result-for context 'error))) (delete-process (p
 rogn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... context))) (aref context 16))))) (if passphrase (clear-string passphrase)) (if passphrase-with-new-line (clear-string passphrase-w
 ith-new-line)) (if encoded-passphrase-with-new-line (clear-string encoded-passphrase-with-new-line)))
  (let (inhibit-quit passphrase passphrase-with-new-line encoded-passphrase-with-new-line) (unwind-protect (condition-case nil (progn (setq passphrase (funcall (car (progn ... ...)) context epg-key-id (cdr (progn ... ...)))) (if passphrase (progn (setq passphrase-with-new-line (concat passphrase "\n")) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system (progn ... ... ...) (progn ... ...)) (process-send-string (progn ... ...) encoded-passphrase-with-new-line)))) (quit (epg-context-set-result-for context 'error (cons '(quit) (epg-context-result-for context 'error))) (delete-process (progn (or (progn ...) (signal ... ...)) (aref context 16))))) (if passphrase (clear-string passphrase)) (if passphrase-with-new-line (clear-string passphrase-with-new-line)) (if enco
 ded-passphrase-with-new-line (clear-string encoded-passphrase-with-new-line))))
  (progn (if (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 10)) nil (error "Variable `passphrase-callback' not set")) (let (inhibit-quit passphrase passphrase-with-new-line encoded-passphrase-with-new-line) (unwind-protect (condition-case nil (progn (setq passphrase (funcall (car ...) context epg-key-id (cdr ...))) (if passphrase (progn (setq passphrase-with-new-line ...) (clear-string passphrase) (setq passphrase nil) (if epg-passphrase-coding-system ... ...) (process-send-string ... encoded-passphrase-with-new-line)))) (quit (epg-context-set-result-for context 'error (cons '... (epg-context-result-for context ...))) (delete-process (progn (or ... ...) (aref context 16))))) (if passph
 rase (clear-string passphrase)) (if passphrase-with-new-line (clear-string passphrase-with-new-line)) (if encoded-passphrase-with-new-line (clear-string encoded-passphrase-with-new-line)))))
  (if (and epg-key-id (string-match "\\`passphrase\\." string)) (progn (if (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 10)) nil (error "Variable `passphrase-callback' not set")) (let (inhibit-quit passphrase passphrase-with-new-line encoded-passphrase-with-new-line) (unwind-protect (condition-case nil (progn (setq passphrase (funcall ... context epg-key-id ...)) (if passphrase (progn ... ... ... ... ...))) (quit (epg-context-set-result-for context 'error (cons ... ...)) (delete-process (progn ... ...)))) (if passphrase (clear-string passphrase)) (if passphrase-with-new-line (clear-string passphrase-with-new-line)) (if encoded-passphrase-with-new-line (clear-string encoded-passphrase-with-new-line)
 )))))
  epg--status-GET_HIDDEN(#s(epg-context :protocol OpenPGP :program "/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (plstore-passphrase-callback-function . [#<buffer  plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process #<process epg> :output-file "/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer  *epg-error*>) "passphrase.enter")
  funcall(epg--status-GET_HIDDEN #s(epg-context :protocol OpenPGP :program "/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (plstore-passphrase-callback-function . [#<buffer  plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process #<process epg> :output-file "/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer  *epg-error*>) "passphrase.enter")
  (if (and symbol (fboundp symbol)) (funcall symbol epg-context string))
  (if (eq (progn (or (progn (and (memq (type-of epg-context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context epg-context))) (aref epg-context 19)) 'edit-key) (funcall (car (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context epg-context))) (aref epg-context 12))) epg-context status string (cdr (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context epg-context))) (aref epg-context 12)))) (setq symbol (intern-soft (concat "epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall symbol epg-context string)))
  (let ((status (match-string 1)) (string (match-string 2)) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context epg-context))) (aref epg-context 19)) 'edit-key) (funcall (car (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... epg-context))) (aref epg-context 12))) epg-context status string (cdr (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... epg-context))) (aref epg-context 12)))) (setq symbol (intern-soft (concat "epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall symbol epg-context string))) (setq epg-last-status (cons status string)))
  (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status (match-string 1)) (string (match-string 2)) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn (or (progn (and ... t)) (signal 'wrong-type-argument (list ... epg-context))) (aref epg-context 19)) 'edit-key) (funcall (car (progn (or (progn ...) (signal ... ...)) (aref epg-context 12))) epg-context status string (cdr (progn (or (progn ...) (signal ... ...)) (aref epg-context 12)))) (setq symbol (intern-soft (concat "epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall symbol epg-context string))) (setq epg-last-status (cons status string))))
  (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status (match-string 1)) (string (match-string 2)) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn (or (progn ...) (signal ... ...)) (aref epg-context 19)) 'edit-key) (funcall (car (progn (or ... ...) (aref epg-context 12))) epg-context status string (cdr (progn (or ... ...) (aref epg-context 12)))) (setq symbol (intern-soft (concat "epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall symbol epg-context string))) (setq epg-last-status (cons status string)))) (forward-line) (setq epg-read-point (point)))
  (let ((epg-process-filter-running t)) (goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status (match-string 1)) (string (match-string 2)) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn (or ... ...) (aref epg-context 19)) 'edit-key) (funcall (car (progn ... ...)) epg-context status string (cdr (progn ... ...))) (setq symbol (intern-soft (concat "epg--status-" status))) (if (and symbol (fboundp symbol)) (funcall symbol epg-context string))) (setq epg-last-status (cons status string)))) (forward-line) (setq epg-read-point (point))))
  (if epg-process-filter-running nil (let ((epg-process-filter-running t)) (goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status (match-string 1)) (string (match-string 2)) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq (progn ... ...) 'edit-key) (funcall (car ...) epg-context status string (cdr ...)) (setq symbol (intern-soft ...)) (if (and symbol ...) (funcall symbol epg-context string))) (setq epg-last-status (cons status string)))) (forward-line) (setq epg-read-point (point)))))
  (save-excursion (goto-char (point-max)) (insert input) (if epg-process-filter-running nil (let ((epg-process-filter-running t)) (goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ((status ...) (string ...) symbol) (if (member status epg-pending-status-list) (setq epg-pending-status-list nil)) (if (eq ... ...) (funcall ... epg-context status string ...) (setq symbol ...) (if ... ...)) (setq epg-last-status (cons status string)))) (forward-line) (setq epg-read-point (point))))))
  (save-current-buffer (set-buffer (process-buffer process)) (save-excursion (goto-char (point-max)) (insert input) (if epg-process-filter-running nil (let ((epg-process-filter-running t)) (goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let (... ... symbol) (if ... ...) (if ... ... ... ...) (setq epg-last-status ...))) (forward-line) (setq epg-read-point (point)))))))
  (if (buffer-live-p (process-buffer process)) (save-current-buffer (set-buffer (process-buffer process)) (save-excursion (goto-char (point-max)) (insert input) (if epg-process-filter-running nil (let ((epg-process-filter-running t)) (goto-char epg-read-point) (beginning-of-line) (while (looking-at ".*\n") (if (looking-at "\\[GNUPG:] \\([A-Z_]+\\) ?\\(.*\\)") (let ... ... ... ...)) (forward-line) (setq epg-read-point (point))))))))
  epg--process-filter(#<process epg> "[GNUPG:] NEED_PASSPHRASE_SYM 9 3 8\n[GNUPG:] INQUIR...")
  accept-process-output(#<process epg> 1)
  (while (eq (process-status (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 16))) 'run) (accept-process-output (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (aref context 16)) 1))
  epg-wait-for-completion(#s(epg-context :protocol OpenPGP :program "/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (plstore-passphrase-callback-function . [#<buffer  plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process #<process epg> :output-file "/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer  *epg-error*>))
  (progn (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (let* ((v context)) (aset v 17 (make-temp-file "epg-output")))) (write-region plain nil input-file nil 'quiet) (epg-start-encrypt context (record 'epg-data input-file nil) recipients sign always-trust) (epg-wait-for-completion context) (let ((errors (epg-context-result-for context 'error))) (if (and sign (not (epg-context-result-for context 'sign))) (signal 'epg-error (list "Sign failed" (epg-errors-to-string errors)))) (if errors (signal 'epg-error (list "Encrypt failed" (epg-errors-to-string errors))))) (epg-read-output context))
  (unwind-protect (progn (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (let* ((v context)) (aset v 17 (make-temp-file "epg-output")))) (write-region plain nil input-file nil 'quiet) (epg-start-encrypt context (record 'epg-data input-file nil) recipients sign always-trust) (epg-wait-for-completion context) (let ((errors (epg-context-result-for context 'error))) (if (and sign (not (epg-context-result-for context 'sign))) (signal 'epg-error (list "Sign failed" (epg-errors-to-string errors)))) (if errors (signal 'epg-error (list "Encrypt failed" (epg-errors-to-string errors))))) (epg-read-output context)) (epg-delete-output-file context) (delete-file input-file) (epg-reset context))
  (let ((input-file (make-temp-file "epg-input")) (coding-system-for-write 'binary)) (unwind-protect (progn (progn (or (progn (and (memq ... cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (let* ((v context)) (aset v 17 (make-temp-file "epg-output")))) (write-region plain nil input-file nil 'quiet) (epg-start-encrypt context (record 'epg-data input-file nil) recipients sign always-trust) (epg-wait-for-completion context) (let ((errors (epg-context-result-for context 'error))) (if (and sign (not (epg-context-result-for context ...))) (signal 'epg-error (list "Sign failed" (epg-errors-to-string errors)))) (if errors (signal 'epg-error (list "Encrypt failed" (epg-errors-to-string errors))))) (epg-read-output context)) (epg-delete-output-file context)
  (delete-file input-file) (epg-reset context)))
  epg-encrypt-string(#s(epg-context :protocol OpenPGP :program "/usr/local/bin/gpg2" :home-directory nil :armor t :textmode nil :include-certs nil :cipher-algorithm nil :digest-algorithm nil :compress-algorithm nil :passphrase-callback (plstore-passphrase-callback-function . [#<buffer  plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))]) :progress-callback nil :edit-callback nil :signers nil :sender nil :sig-notations nil :process #<process epg> :output-file "/var/folders/0g/jfnmzzj15ms8p2zcgz88d4rr0000gn/T/e..." :result nil :operation encrypt :pinentry-mode loopback :error-output "" :error-buffer #<buffer  *epg-error*>) "((\"as\" :user \"ba\"))\n" nil)
  (setq cipher (epg-encrypt-string context (pp-to-string (plstore--get-secret-alist plstore)) (if (or (eq plstore-select-keys t) (and (null plstore-select-keys) (not (local-variable-p 'plstore-encrypt-to (current-buffer))))) (epa-select-keys context "Select recipients for encryption.\nIf no one is sel..." recipients) (if plstore-encrypt-to (epg-list-keys context recipients)))))
  (let ((context (epg-make-context 'OpenPGP)) (pp-escape-newlines nil) (recipients (cond ((listp plstore-encrypt-to) plstore-encrypt-to) ((stringp plstore-encrypt-to) (list plstore-encrypt-to)))) cipher) (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (let* ((v context)) (aset v 4 t))) (epg-context-set-passphrase-callback context (cons #'plstore-passphrase-callback-function plstore)) (setq cipher (epg-encrypt-string context (pp-to-string (plstore--get-secret-alist plstore)) (if (or (eq plstore-select-keys t) (and (null plstore-select-keys) (not (local-variable-p ... ...)))) (epa-select-keys context "Select recipients for encryption.\nIf no one is sel..." recipients) (if plstore-encrypt-to (epg-list-ke
 ys context recipients))))) (goto-char (point-max)) (insert ";;; secret entries\n" (pp-to-string cipher)))
  (if (plstore--get-secret-alist plstore) (let ((context (epg-make-context 'OpenPGP)) (pp-escape-newlines nil) (recipients (cond ((listp plstore-encrypt-to) plstore-encrypt-to) ((stringp plstore-encrypt-to) (list plstore-encrypt-to)))) cipher) (progn (or (progn (and (memq (type-of context) cl-struct-epg-context-tags) t)) (signal 'wrong-type-argument (list 'epg-context context))) (let* ((v context)) (aset v 4 t))) (epg-context-set-passphrase-callback context (cons #'plstore-passphrase-callback-function plstore)) (setq cipher (epg-encrypt-string context (pp-to-string (plstore--get-secret-alist plstore)) (if (or (eq plstore-select-keys t) (and (null plstore-select-keys) (not ...))) (epa-select-keys context "Select recipients for encryption.\nIf no one is sel..." recipients) (if plstore-encryp
 t-to (epg-list-keys context recipients))))) (goto-char (point-max)) (insert ";;; secret entries\n" (pp-to-string cipher))))
  plstore--insert-buffer([#<buffer  plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))])
  (save-current-buffer (set-buffer (plstore--get-buffer plstore)) (erase-buffer) (plstore--insert-buffer plstore) (save-buffer))
  plstore-save([#<buffer  plstore /Users/ldbeth/foo> (("as" :secret-user t :host "bar.example.kk")) nil (("as" :user "ba")) (("as" :user "ba" :host "bar.example.kk"))])
  eval((plstore-save store) nil)
  elisp--eval-last-sexp(nil)
  eval-last-sexp(nil)
  funcall-interactively(eval-last-sexp nil)
  call-interactively(eval-last-sexp nil nil)
  command-execute(eval-last-sexp)






^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-02-14  5:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-14  5:37 bug#69116: 29.1; plstore.el failed when save using EasyPG LdBeth

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).