serve: Fix 'file-extension' so that the right MIME type is chosen.
authorLudovic Courtès <ludo@gnu.org>
Thu, 21 Dec 2017 13:16:14 +0000 (14:16 +0100)
committerDavid Thompson <dthompson@vistahigherlearning.com>
Thu, 21 Dec 2017 13:51:02 +0000 (08:51 -0500)
Reported by sirgazil at
<https://lists.gnu.org/archive/html/guile-user/2017-12/msg00070.html>.

* haunt/serve/mime-types.scm (%file-ext-regexp): Remove.
(file-extension): Rewrite using 'string-rindex'.

haunt/serve/mime-types.scm

index 4c9c0f1..c625dd5 100644 (file)
      ("vrml" . x-world/x-vrml)
      ("wrl" . x-world/x-vrml))))
 
-(define %file-ext-regexp
-  (make-regexp "(\\.(.*)|[~%])$"))
-
-(define (file-extension file-name)
-  "Return the file extension for FILE-NAME, or #f if one is not
-found."
-  (and=> (regexp-exec %file-ext-regexp file-name)
-         (lambda (match)
-           (or (match:substring match 2)
-               (match:substring match 1)))))
+(define (file-extension file)
+  "Return the extension of FILE or #f if there is none."
+  (let ((dot (string-rindex file #\.)))
+    (and dot (substring file (+ 1 dot) (string-length file)))))
 
 (define (mime-type file-name)
   "Guess the MIME type for FILE-NAME based upon its file extension."