anchor.diff:    (with-input-from-string (st (format nil "~a~C~a"
                                         (master-password password-interface)
                                         #\newline password))
  -    (uiop:run-program (list *keepassxc-cli-program*
  +    (uiop:run-program (list (executable password-interface)
                               "add" "--password-prompt" (password-file password-interface)
                               (if (str:emptyp password-name)
                                   "--generate"
  
positive.code: ;;;; SPDX-License-Identifier: BSD-3-Clause
  
  (in-package :password)
  
  (eval-when (:compile-toplevel :load-toplevel :execute)
    (export '*keepassxc-cli-program*))
  (defvar *keepassxc-cli-program* nil
    "The path to the executable.")
  
  (defclass keepassxc-interface (password-interface)
    ((password-file :accessor password-file
  
negative.code: (eval-when (:compile-toplevel :load-toplevel :execute)
    (export 'make-keepassxc-interface))
  (defun make-keepassxc-interface ()
    (make-instance 'keepassxc-interface))
  (push #'make-keepassxc-interface interface-list)
  
  (defmethod initialize-instance :after ((password-interface keepassxc-interface))
    (unless (slot-boundp password-interface 'executable)
      (setf (executable password-interface) (executable-find "keepassxc-cli"))))
  
  (defmethod list-passwords ((password-interface keepassxc-interface))
    (let* ((st (make-string-input-stream (master-password password-interface)))
           (output (uiop:run-program (list (executable password-interface)
                                           "ls" (password-file password-interface))
                                     :input st :output '(:string :stripped t))))
      (remove "Recycle Bin/" (rest (cl-ppcre:split "\\n" output)) :test #'equal)))
  