@@ -252,7 +252,6 @@ checkPieces fileLookup indices pieces cache req
252 | T.null $ piecePretty (last pieces) -> (False, True)
252 | T.null $ piecePretty (last pieces) -> (False, True)
253 | otherwise -> (True, False)
253 | otherwise -> (True, False)
256 if not isFile then uncached isFile isFolder
255 if not isFile then uncached isFile isFolder
258 case cache of
257 case cache of
@@ -311,7 +310,8 @@ defaultDirListing :: StaticDirListing
311defaultDirListing = StaticDirListing defaultListing []
310defaultDirListing = StaticDirListing defaultListing []
313-- IO is for development mode
312-- IO is for development mode
314−type CheckHashParam = (File -> S8.ByteString -> Bool)
314+type CheckHashParam = (File -> S8.ByteString -> Bool) -- FIXME Greg: Can you explain the purposes of the parameters here?
315data CacheSettings = NoCache | Forever CheckHashParam | ETag (File -> IO (Maybe S8.ByteString))
315data CacheSettings = NoCache | Forever CheckHashParam | ETag (File -> IO (Maybe S8.ByteString))
317oneYear :: Int
317oneYear :: Int
@@ -379,7 +379,7 @@ fileSystemLookup prefix pieces = do
381 entries <- getDirectoryContents fp >>= (mapM $ \name -> do
381 entries <- getDirectoryContents fp >>= (mapM $ \name -> do
382− let name' = T.pack name -- FIXME fix/unfix, not sure which
382+ let name' = T.pack name
383 let fp' = fp ++ '/' : name
383 let fp' = fp ++ '/' : name
384 fe' <- doesFileExist fp'
384 fe' <- doesFileExist fp'
385 return FolderEntry
385 return FolderEntry
@@ -394,12 +394,13 @@ type Embedded = Map.Map T.Text EmbeddedEntry
395data EmbeddedEntry = EEFile S8.ByteString | EEFolder Embedded
395data EmbeddedEntry = EEFile S8.ByteString | EEFolder Embedded
397−embeddedLookup :: Embedded -> Pieces -> IO FileLookup -- FIXME broken for unicode path names
397+embeddedLookup :: Embedded -> Pieces -> IO FileLookup
398embeddedLookup root pieces =
398embeddedLookup root pieces =
399 return $ elookup (map piecePretty pieces) root
399 return $ elookup (map piecePretty pieces) root
401+ modified = 0 -- FIXME
401 elookup :: [T.Text] -> Embedded -> FileLookup
402 elookup :: [T.Text] -> Embedded -> FileLookup
402− elookup [] x = FLFolder $ Folder $ map toEntry $ Map.toList x
403+ elookup [] x = FLFolder $ Folder $ map (toEntry modified) $ Map.toList x
403 elookup [""] x = elookup [] x
404 elookup [""] x = elookup [] x
404 elookup (p:ps) x =
405 elookup (p:ps) x =
405 case Map.lookup p x of
406 case Map.lookup p x of
@@ -410,8 +411,8 @@ embeddedLookup root pieces =
410 _ -> FLDoesNotExist
411 _ -> FLDoesNotExist
411 Just (EEFolder y) -> elookup ps y
412 Just (EEFolder y) -> elookup ps y
413−toEntry :: (T.Text, EmbeddedEntry) -> FolderEntry
414+toEntry :: EpochTime -> (T.Text, EmbeddedEntry) -> FolderEntry
414−toEntry (name, ee) = FolderEntry
415+toEntry modified (name, ee) = FolderEntry
415 { feName = name
416 { feName = name
416 , feIsFile =
417 , feIsFile =
417 case ee of
418 case ee of
@@ -421,7 +422,7 @@ toEntry (name, ee) = FolderEntry
421 case ee of
422 case ee of
422 EEFile bs -> FileMetaData
423 EEFile bs -> FileMetaData
423 { mdName = name
424 { mdName = name
424− , mdModified = 0 -- FIXME
425+ , mdModified = modified
425 , mdSize = fromIntegral $ S8.length bs
426 , mdSize = fromIntegral $ S8.length bs
427 EEFolder _ -> FolderMetaData
428 EEFolder _ -> FolderMetaData