Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mongoose
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
esp
mongoose
Commits
39215f69
Commit
39215f69
authored
Jul 31, 2012
by
Sergey Lyubka
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Exported mg_get_builtin_mime_type()
parent
df7da95c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
68 additions
and
57 deletions
+68
-57
mongoose.c
mongoose.c
+63
-57
mongoose.h
mongoose.h
+5
-0
No files found.
mongoose.c
View file @
39215f69
...
...
@@ -1707,58 +1707,76 @@ static const struct {
const
char
*
extension
;
size_t
ext_len
;
const
char
*
mime_type
;
size_t
mime_type_len
;
}
builtin_mime_types
[]
=
{
{
".html"
,
5
,
"text/html"
,
9
},
{
".htm"
,
4
,
"text/html"
,
9
},
{
".shtm"
,
5
,
"text/html"
,
9
},
{
".shtml"
,
6
,
"text/html"
,
9
},
{
".css"
,
4
,
"text/css"
,
8
},
{
".js"
,
3
,
"application/x-javascript"
,
24
},
{
".ico"
,
4
,
"image/x-icon"
,
12
},
{
".gif"
,
4
,
"image/gif"
,
9
},
{
".jpg"
,
4
,
"image/jpeg"
,
10
},
{
".jpeg"
,
5
,
"image/jpeg"
,
10
},
{
".png"
,
4
,
"image/png"
,
9
},
{
".svg"
,
4
,
"image/svg+xml"
,
13
},
{
".torrent"
,
8
,
"application/x-bittorrent"
,
24
},
{
".wav"
,
4
,
"audio/x-wav"
,
11
},
{
".mp3"
,
4
,
"audio/x-mp3"
,
11
},
{
".mid"
,
4
,
"audio/mid"
,
9
},
{
".m3u"
,
4
,
"audio/x-mpegurl"
,
15
},
{
".ram"
,
4
,
"audio/x-pn-realaudio"
,
20
},
{
".xml"
,
4
,
"text/xml"
,
8
},
{
".xslt"
,
5
,
"application/xml"
,
15
},
{
".ra"
,
3
,
"audio/x-pn-realaudio"
,
20
},
{
".doc"
,
4
,
"application/msword"
,
19
},
{
".exe"
,
4
,
"application/octet-stream"
,
24
},
{
".zip"
,
4
,
"application/x-zip-compressed"
,
28
},
{
".xls"
,
4
,
"application/excel"
,
17
},
{
".tgz"
,
4
,
"application/x-tar-gz"
,
20
},
{
".tar"
,
4
,
"application/x-tar"
,
17
},
{
".gz"
,
3
,
"application/x-gunzip"
,
20
},
{
".arj"
,
4
,
"application/x-arj-compressed"
,
28
},
{
".rar"
,
4
,
"application/x-arj-compressed"
,
28
},
{
".rtf"
,
4
,
"application/rtf"
,
15
},
{
".pdf"
,
4
,
"application/pdf"
,
15
},
{
".swf"
,
4
,
"application/x-shockwave-flash"
,
29
},
{
".mpg"
,
4
,
"video/mpeg"
,
10
},
{
".mpeg"
,
5
,
"video/mpeg"
,
10
},
{
".mp4"
,
4
,
"video/mp4"
,
9
},
{
".m4v"
,
4
,
"video/x-m4v"
,
11
},
{
".asf"
,
4
,
"video/x-ms-asf"
,
14
},
{
".avi"
,
4
,
"video/x-msvideo"
,
15
},
{
".bmp"
,
4
,
"image/bmp"
,
9
},
{
NULL
,
0
,
NULL
,
0
}
{
".html"
,
5
,
"text/html"
},
{
".htm"
,
4
,
"text/html"
},
{
".shtm"
,
5
,
"text/html"
},
{
".shtml"
,
6
,
"text/html"
},
{
".css"
,
4
,
"text/css"
},
{
".js"
,
3
,
"application/x-javascript"
},
{
".ico"
,
4
,
"image/x-icon"
},
{
".gif"
,
4
,
"image/gif"
},
{
".jpg"
,
4
,
"image/jpeg"
},
{
".jpeg"
,
5
,
"image/jpeg"
},
{
".png"
,
4
,
"image/png"
},
{
".svg"
,
4
,
"image/svg+xml"
},
{
".txt"
,
4
,
"text/plain"
},
{
".torrent"
,
8
,
"application/x-bittorrent"
},
{
".wav"
,
4
,
"audio/x-wav"
},
{
".mp3"
,
4
,
"audio/x-mp3"
},
{
".mid"
,
4
,
"audio/mid"
},
{
".m3u"
,
4
,
"audio/x-mpegurl"
},
{
".ram"
,
4
,
"audio/x-pn-realaudio"
},
{
".xml"
,
4
,
"text/xml"
},
{
".xslt"
,
5
,
"application/xml"
},
{
".ra"
,
3
,
"audio/x-pn-realaudio"
},
{
".doc"
,
4
,
"application/msword"
},
{
".exe"
,
4
,
"application/octet-stream"
},
{
".zip"
,
4
,
"application/x-zip-compressed"
},
{
".xls"
,
4
,
"application/excel"
},
{
".tgz"
,
4
,
"application/x-tar-gz"
},
{
".tar"
,
4
,
"application/x-tar"
},
{
".gz"
,
3
,
"application/x-gunzip"
},
{
".arj"
,
4
,
"application/x-arj-compressed"
},
{
".rar"
,
4
,
"application/x-arj-compressed"
},
{
".rtf"
,
4
,
"application/rtf"
},
{
".pdf"
,
4
,
"application/pdf"
},
{
".swf"
,
4
,
"application/x-shockwave-flash"
},
{
".mpg"
,
4
,
"video/mpeg"
},
{
".webm"
,
5
,
"video/webm"
},
{
".mpeg"
,
5
,
"video/mpeg"
},
{
".mp4"
,
4
,
"video/mp4"
},
{
".m4v"
,
4
,
"video/x-m4v"
},
{
".asf"
,
4
,
"video/x-ms-asf"
},
{
".avi"
,
4
,
"video/x-msvideo"
},
{
".bmp"
,
4
,
"image/bmp"
},
{
NULL
,
0
,
NULL
}
};
const
char
*
mg_get_builtin_mime_type
(
const
char
*
path
)
{
const
char
*
ext
;
size_t
i
,
path_len
;
path_len
=
strlen
(
path
);
for
(
i
=
0
;
builtin_mime_types
[
i
].
extension
!=
NULL
;
i
++
)
{
ext
=
path
+
(
path_len
-
builtin_mime_types
[
i
].
ext_len
);
if
(
path_len
>
builtin_mime_types
[
i
].
ext_len
&&
mg_strcasecmp
(
ext
,
builtin_mime_types
[
i
].
extension
)
==
0
)
{
return
builtin_mime_types
[
i
].
mime_type
;
}
}
return
"text/plain"
;
}
// Look at the "path" extension and figure what mime type it has.
// Store mime type in the vector.
static
void
get_mime_type
(
struct
mg_context
*
ctx
,
const
char
*
path
,
struct
vec
*
vec
)
{
struct
vec
ext_vec
,
mime_vec
;
const
char
*
list
,
*
ext
;
size_t
i
,
path_len
;
size_t
path_len
;
path_len
=
strlen
(
path
);
...
...
@@ -1774,20 +1792,8 @@ static void get_mime_type(struct mg_context *ctx, const char *path,
}
}
// Now scan built-in mime types
for
(
i
=
0
;
builtin_mime_types
[
i
].
extension
!=
NULL
;
i
++
)
{
ext
=
path
+
(
path_len
-
builtin_mime_types
[
i
].
ext_len
);
if
(
path_len
>
builtin_mime_types
[
i
].
ext_len
&&
mg_strcasecmp
(
ext
,
builtin_mime_types
[
i
].
extension
)
==
0
)
{
vec
->
ptr
=
builtin_mime_types
[
i
].
mime_type
;
vec
->
len
=
builtin_mime_types
[
i
].
mime_type_len
;
return
;
}
}
// Nothing found. Fall back to "text/plain"
vec
->
ptr
=
"text/plain"
;
vec
->
len
=
10
;
vec
->
ptr
=
mg_get_builtin_mime_type
(
path
);
vec
->
len
=
strlen
(
vec
->
ptr
);
}
#ifndef HAVE_MD5
...
...
mongoose.h
View file @
39215f69
...
...
@@ -250,6 +250,11 @@ typedef void * (*mg_thread_func_t)(void *);
int
mg_start_thread
(
mg_thread_func_t
f
,
void
*
p
);
// Return builtin mime type for the given file name.
// For unrecognized extensions, "text/plain" is returned.
const
char
*
mg_get_builtin_mime_type
(
const
char
*
file_name
);
// Platform independent string utility functions.
void
mg_strlcpy
(
char
*
dst
,
const
char
*
src
,
size_t
n
);
int
mg_strncasecmp
(
const
char
*
s1
,
const
char
*
s2
,
size_t
len
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment