anchor.diff:  Other options are not supported.  File is overwritten if it exists, while
   nothing is done if file is missing."
     ;; TODO: Support all of `open' options.
  -  (alex:with-gensyms (in clear-data result)
  +  (alex:with-gensyms (in clear-data result recipient)
       (if (match (getf options :direction)
             ((or :io :input nil) t))
           `(when (uiop:file-exists-p ,gpg-file)
  
positive.code: 
  (defvar *gpg-default-recipient* nil)
  
  (defun gpg-recipient (file)             ; TODO: Find a proper way to do this.
    "Return the key of FILE's recipient if any, `*gpg-recipient*' otherwise.
  As second value the email.
  
negative.code:         (values key mail name))
        *gpg-default-recipient*))
  
  (defun gpg-write (stream gpg-file recipient)
    "Write STREAM to GPG-FILE using RECIPIENT key."
    (if recipient
        ;; TODO: Handle GPG errors.
        (uiop:run-program
         (list *gpg-program* "--output" gpg-file "--recipient" recipient
               "--batch" "--yes" "--encrypt")
         :input stream)
        ;; TODO: Ask for recipient manually.
        (echo-warning "Set `*gpg-default-recipient*' to save ~s." gpg-file)))
  
  (defmacro with-gpg-file ((stream gpg-file &rest options) &body body)
    "Like `with-open-file' but use
  