diff options
author | Adam Chlipala <adam@chlipala.net> | 2017-10-01 17:13:17 -0400 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2017-10-01 17:13:17 -0400 |
commit | b1a6440a3fb285cdfd5301510b96b1ef3b96c050 (patch) | |
tree | 427f7fd2345c9f3edef11b6b2475cbdba8ca1971 /src/settings.sml | |
parent | 06452188bc3a4f04762214ba7bcf7d4d0e36c9f3 (diff) |
New .urp directives: mimeTypes and long form of file
Diffstat (limited to 'src/settings.sml')
-rw-r--r-- | src/settings.sml | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/settings.sml b/src/settings.sml index a3263c06..d3ac99d4 100644 --- a/src/settings.sml +++ b/src/settings.sml @@ -843,14 +843,17 @@ structure SM = BinaryMapFn(struct val noMimeFile = ref false +val mimeFilePath = ref "/etc/mime.types" +fun setMimeFilePath file = mimeFilePath := file + fun noMime () = - (TextIO.output (TextIO.stdErr, "WARNING: Error opening /etc/mime.types. Static files will be served with no suggested MIME types.\n"); + (TextIO.output (TextIO.stdErr, "WARNING: Error opening " ^ !mimeFilePath ^ ". Static files will be served with no suggested MIME types.\n"); noMimeFile := true; SM.empty) fun readMimeTypes () = let - val inf = FileIO.txtOpenIn "/etc/mime.types" + val inf = FileIO.txtOpenIn (!mimeFilePath) fun loop m = case TextIO.inputLine inf of @@ -908,7 +911,7 @@ val filePath = ref "." fun setFilePath path = filePath := path -fun addFile {Uri, LoadFromFilename} = +fun addFile {Uri, LoadFromFilename, MimeType} = let val path = OS.Path.concat (!filePath, LoadFromFilename) in @@ -926,7 +929,9 @@ fun addFile {Uri, LoadFromFilename} = Uri, (path, {Uri = Uri, - ContentType = mimeTypeOf path, + ContentType = case MimeType of + NONE => mimeTypeOf path + | _ => MimeType, LastModified = OS.FileSys.modTime path, Bytes = BinIO.inputAll inf})); BinIO.closeIn inf |