Function: nsm-save-host

nsm-save-host is a byte-compiled function defined in nsm.el.gz.

Signature

(nsm-save-host HOST PORT STATUS WHAT PROBLEMS PERMANENCY)

Source Code

;; Defined in /usr/src/emacs/lisp/net/nsm.el.gz
(defun nsm-save-host (host port status what problems permanency)
  (let* ((id (nsm-id host port))
         (saved-fingerprints (plist-get (nsm-host-settings id) :fingerprints))
         (fingerprints (cl-delete-duplicates
                        (append saved-fingerprints
                                (list (or (nsm-fingerprint status)
                                          ;; Plain connection.
                                          :none)))
                        :test #'string=))
         (saved (list :id id :fingerprints fingerprints)))
    (when (or (eq what 'conditions)
	      nsm-save-host-names)
      (nconc saved (list :host (format "%s:%s" host port))))
    ;; We either want to save/update the fingerprint or the conditions
    ;; of the certificate/unencrypted connection.
    (cond
     ((eq what 'conditions)
      (plist-put saved :conditions problems))
     ;; Make sure the conditions are not erased when we save a
     ;; fingerprint
     ((eq what 'fingerprint)
      ;; Store additional protocol settings.
      (let ((settings (nsm-host-settings id)))
        (when settings
          (setq saved settings))
        (if (plist-get saved :conditions)
            (plist-put saved :conditions
                       (cl-delete-duplicates
                        (nconc (plist-get saved :conditions) problems)))
          (plist-put saved :conditions problems)))))
    (if (eq permanency 'always)
	(progn
	  (nsm-remove-temporary-setting id)
	  (nsm-remove-permanent-setting id)
	  (push saved nsm-permanent-host-settings)
	  (nsm-write-settings))
      (nsm-remove-temporary-setting id)
      (push saved nsm-temporary-host-settings))))