Function: mailcap-parse-mailcap-extras
mailcap-parse-mailcap-extras is a byte-compiled function defined in
mailcap.el.gz.
Signature
(mailcap-parse-mailcap-extras ST ND)
Documentation
Grab all the extra stuff from a mailcap entry.
Source Code
;; Defined in /usr/src/emacs/lisp/net/mailcap.el.gz
(defun mailcap-parse-mailcap-extras (st nd)
"Grab all the extra stuff from a mailcap entry."
(let (
name ; From name=
value ; its value
results ; Assoc list of results
name-pos ; Start of XXXX= position
val-pos ; Start of value position
done ; Found end of \'d ;s?
)
(save-restriction
(narrow-to-region st nd)
(goto-char (point-min))
(skip-chars-forward " \n\t;")
(while (not (eobp))
(setq done nil)
(setq name-pos (point))
(skip-chars-forward "^ \n\t=;")
(downcase-region name-pos (point))
(setq name (buffer-substring name-pos (point)))
(skip-chars-forward " \t\n")
(if (not (eq (char-after (point)) ?=)) ; There is no value
(setq value t)
(skip-chars-forward " \t\n=")
(setq val-pos (point))
(if (memq (char-after val-pos) '(?\" ?'))
(progn
(setq val-pos (1+ val-pos))
(condition-case nil
(progn
(forward-sexp 1)
(backward-char 1))
(error (goto-char (point-max)))))
(while (not done)
(skip-chars-forward "^;")
(if (eq (char-after (1- (point))) ?\\ )
(progn
(subst-char-in-region (1- (point)) (point) ?\\ ? )
(skip-chars-forward ";"))
(setq done t))))
(setq value (buffer-substring val-pos (point))))
;; `test' as symbol, others like "copiousoutput" and "needsx11" as
;; strings
(push (cons (if (string-equal name "test") 'test name) value) results)
(skip-chars-forward " \";\n\t"))
results)))