[backfire] merge r20883
[openwrt-10.03/.git] / package / uhttpd / src / uhttpd-file.c
index 2a06f85206255de0cc8129e679e9d9fd7edd542a..81f66a34b0250c81890152587ab828b569fb89f6 100644 (file)
 static const char * uh_file_mime_lookup(const char *path)
 {
        struct mimetype *m = &uh_mime_types[0];
-       char *p, *pd, *ps;
+       char *e;
 
-       ps = strrchr(path, '/');
-       pd = strrchr(path, '.');
-
-       /* use either slash or dot as separator, whatever comes last */
-       p = (ps && pd && (ps > pd)) ? ps : pd;
-
-       if( (p != NULL) && (*(++p) != 0) )
+       while( m->extn )
        {
-               while( m->extn )
+               e = &path[strlen(path)-1];
+
+               while( e >= path )
                {
-                       if( ! strcasecmp(p, m->extn) )
+                       if( (*e == '.') && !strcasecmp(&e[1], m->extn) )
                                return m->mime;
 
-                       m++;
+                       e--;
                }
+
+               m++;
        }
 
        return "application/octet-stream";