blob: cab9d8a36352abbf27add385d1882da6bb0788d8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
structure FileIO :> FILE_IO = struct
val mostRecentModTimeRef = ref (Time.zeroTime)
fun checkFileModTime fname =
let
val mtime = OS.FileSys.modTime fname
val mostRecentMod = !mostRecentModTimeRef
val resetTime = Globals.getResetTime ()
fun lessThan (a, b) = LargeInt.compare (Time.toSeconds a, Time.toSeconds b) = LESS
infix lessThan
in
if mostRecentMod lessThan mtime andalso mtime lessThan resetTime
then mostRecentModTimeRef := mtime
else ()
end
fun mostRecentModTime () =
if Time.compare (!mostRecentModTimeRef, Time.zeroTime) = EQUAL
then Globals.getResetTime ()
else !mostRecentModTimeRef
fun txtOpenIn fname =
let
val inf = TextIO.openIn fname
val () = checkFileModTime fname
in
inf
end
fun binOpenIn fname =
let
val inf = BinIO.openIn fname
val () = checkFileModTime fname
in
inf
end
end
|