@@ -141,17 +141,64 @@ private
141141do_getFileSize : Ptr -> IO Int
142142do_getFileSize h = foreign FFI_C "fileSize" (Ptr -> IO Int) h
143143
144+private
145+do_getFileAccessTime : Ptr -> IO Integer
146+do_getFileAccessTime h =
147+ do MkRaw i <- foreign FFI_C "fileAccessTime" (Ptr -> IO (Raw Integer)) h
148+ pure i
149+
150+private
151+do_getFileModifiedTime : Ptr -> IO Integer
152+do_getFileModifiedTime h =
153+ do MkRaw i <- foreign FFI_C "fileModifiedTime" (Ptr -> IO (Raw Integer)) h
154+ pure i
155+
156+private
157+do_getFileStatusTime : Ptr -> IO Integer
158+do_getFileStatusTime h =
159+ do MkRaw i <- foreign FFI_C "fileStatusTime" (Ptr -> IO (Raw Integer)) h
160+ pure i
161+
144162||| Return the size of a File
145163||| Returns an error if the File is not an ordinary file (e.g. a directory)
146164||| Also note that this currently returns an Int, which may overflow if the
147165||| file is very big
148166export
149167fileSize : File -> IO (Either FileError Int)
150−fileSize (FHandle h) = do s <- do_getFileSize h
151− if (s < 0)
152− then do err <- getFileError
153− pure (Left err)
154− else pure (Right s)
168+fileSize (FHandle h)
169+ = do s <- do_getFileSize h
170+ if (s < 0)
171+ then do err <- getFileError
172+ pure (Left err)
173+ else pure (Right s)
174+
175+export
176+fileModifiedTime : File -> IO (Either FileError Integer)
177+fileModifiedTime (FHandle h)
178+ = do s <- do_getFileModifiedTime h
179+ if (s < 0)
180+ then do err <- getFileError
181+ pure (Left err)
182+ else pure (Right s)
183+
184+export
185+fileAccessTime : File -> IO (Either FileError Integer)
186+fileAccessTime (FHandle h)
187+ = do s <- do_getFileAccessTime h
188+ if (s < 0)
189+ then do err <- getFileError
190+ pure (Left err)
191+ else pure (Right s)
192+
193+export
194+fileStatusTime : File -> IO (Either FileError Integer)
195+fileStatusTime (FHandle h)
196+ = do s <- do_getFileStatusTime h
197+ if (s < 0)
198+ then do err <- getFileError
199+ pure (Left err)
200+ else pure (Right s)
201+
155202
156203private
157204do_fread : Ptr -> IO' l String