summaryrefslogtreecommitdiff
path: root/lisp/image.el
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2012-10-22 20:46:11 -0400
committerGlenn Morris <rgm@gnu.org>2012-10-22 20:46:11 -0400
commitea1d4aaca0a593c99673912cee3ea910a958d38c (patch)
treeefadb758b3d03faa47349ec3512a44bd82f2eb0a /lisp/image.el
parentf961c7d82bb50cea1e6425042c79c26d23dbc2f1 (diff)
downloademacs-ea1d4aaca0a593c99673912cee3ea910a958d38c.tar.gz
emacs-ea1d4aaca0a593c99673912cee3ea910a958d38c.tar.bz2
emacs-ea1d4aaca0a593c99673912cee3ea910a958d38c.zip
image-type-from-file-name fix for bug#9045
* lisp/image.el (image-type-from-file-name): If multiple types match, return the first one that is supported.
Diffstat (limited to 'lisp/image.el')
-rw-r--r--lisp/image.el13
1 files changed, 11 insertions, 2 deletions
diff --git a/lisp/image.el b/lisp/image.el
index 56c2fdff23f..aef44fc3701 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -308,8 +308,17 @@ be determined."
"Determine the type of image file FILE from its name.
Value is a symbol specifying the image type, or nil if type cannot
be determined."
- (assoc-default file image-type-file-name-regexps 'string-match-p))
-
+ (let (type first)
+ (or
+ (catch 'found
+ (dolist (elem image-type-file-name-regexps)
+ (when (string-match-p (car elem) file)
+ (setq type (cdr elem))
+ (or first (setq first type))
+ (if (image-type-available-p type)
+ (throw 'found type)))))
+ ;; If nothing seems to be supported, return the first type that matched.
+ first)))
;;;###autoload
(defun image-type (source &optional type data-p)