Function: mailcap-add-mailcap-entry

mailcap-add-mailcap-entry is a byte-compiled function defined in mailcap.el.gz.

Signature

(mailcap-add-mailcap-entry MAJOR MINOR INFO &optional STORAGE)

Source Code

;; Defined in /usr/src/emacs/lisp/net/mailcap.el.gz
(defun mailcap-add-mailcap-entry (major minor info &optional storage)
  (let* ((storage (or storage 'mailcap--computed-mime-data))
         (old-major (assoc major (symbol-value storage))))
    (if (null old-major)		; New major area
        (set storage
             (cons (cons major (list (cons minor info)))
                   (symbol-value storage)))
      (let ((cur-minor (assoc minor old-major)))
	(cond
	 ((or (null cur-minor)		; New minor area, or
	      (assq 'test info))	; Has a test, insert at beginning
	  (setcdr old-major
                  (cons (cons minor info) (cdr old-major))))
	 ((and (not (assq 'test info))	; No test info, replace completely
	       (not (assq 'test cur-minor))
	       (equal (assq 'viewer info)  ; Keep alternative viewer
		      (assq 'viewer cur-minor)))
	  (setcdr cur-minor info))
	 (t
	  (setcdr old-major
                  (setcdr old-major
                          (cons (cons minor info) (cdr old-major))))))))))