Function: mailcap-unescape-mime-test
mailcap-unescape-mime-test is a byte-compiled function defined in
mailcap.el.gz.
Signature
(mailcap-unescape-mime-test TEST TYPE-INFO)
Source Code
;; Defined in /usr/src/emacs/lisp/net/mailcap.el.gz
(defun mailcap-unescape-mime-test (test type-info)
(let (save-pos save-chr subst)
(cond
((symbolp test) test)
((and (listp test) (symbolp (car test))) test)
((or (stringp test)
(and (listp test) (stringp (car test))
(setq test (mapconcat #'identity test " "))))
(with-temp-buffer
(insert test)
(goto-char (point-min))
(while (not (eobp))
(skip-chars-forward "^%")
(if (/= (- (point)
(progn (skip-chars-backward "\\\\")
(point)))
0) ; It is an escaped %
(progn
(delete-char 1)
(skip-chars-forward "%."))
(setq save-pos (point))
(skip-chars-forward "%")
(setq save-chr (char-after (point)))
;; Escapes:
;; %s: name of a file for the body data
;; %t: content-type
;; %{<parameter name}: value of parameter in mailcap entry
;; %n: number of sub-parts for multipart content-type
;; %F: a set of content-type/filename pairs for multiparts
(cond
((null save-chr) nil)
((= save-chr ?t)
(delete-region save-pos (progn (forward-char 1) (point)))
(insert (or (cdr (assq 'type type-info)) "\"\"")))
((memq save-chr '(?M ?n ?F))
(delete-region save-pos (progn (forward-char 1) (point)))
(insert "\"\""))
((= save-chr ?{)
(forward-char 1)
(skip-chars-forward "^}")
(downcase-region (+ 2 save-pos) (point))
(setq subst (buffer-substring (+ 2 save-pos) (point)))
(delete-region save-pos (1+ (point)))
(insert (or (cdr (assoc subst type-info)) "\"\"")))
(t nil))))
(buffer-string)))
(t (error "Bad value to mailcap-unescape-mime-test: %s" test)))))