]> andersk Git - scripts-static-cat.git/blobdiff - StaticCat.hs
Support suffix byte range specifiers.
[scripts-static-cat.git] / StaticCat.hs
index 9f8881c0e28f1c786a85890c1be6c35860a3734b..396403bcd6035adb4c73df6f7c661d3a09c03e66 100644 (file)
@@ -123,10 +123,12 @@ checkIfRange mTime = do
       return $ if parseHTTPDate ir == Just mTime then Just () else Nothing
 
 parseRange :: String -> FileOffset -> Maybe (FileOffset, FileOffset)
+parseRange (splitAt 6 -> ("bytes=", '-':(readDec -> [(len, "")]))) size =
+    Just (max 0 (size - len), size - 1)
 parseRange (splitAt 6 -> ("bytes=", readDec -> [(a, "-")])) size =
     Just (a, size - 1)
-parseRange (splitAt 6 -> ("bytes=", readDec -> [(a, '-':(readDec -> [(b, "")]))])) _ =
-    Just (a, b)
+parseRange (splitAt 6 -> ("bytes=", readDec -> [(a, '-':(readDec -> [(b, "")]))])) size =
+    Just (a, min (size - 1) b)
 parseRange _ _ = Nothing
 
 checkRange :: EpochTime -> FileOffset -> CGI (Maybe (FileOffset, FileOffset))
This page took 0.374189 seconds and 4 git commands to generate.