summaryrefslogtreecommitdiff
path: root/src/fileio.sml
diff options
context:
space:
mode:
Diffstat (limited to 'src/fileio.sml')
-rw-r--r--src/fileio.sml34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/fileio.sml b/src/fileio.sml
new file mode 100644
index 00000000..72e72f6d
--- /dev/null
+++ b/src/fileio.sml
@@ -0,0 +1,34 @@
+structure FileIO :> FILE_IO = struct
+
+val mostRecentModTimeRef = ref (Time.zeroTime)
+
+fun checkFileModTime fname =
+ let val mtime = OS.FileSys.modTime fname in
+ if Time.compare (mtime, !mostRecentModTimeRef) = GREATER andalso
+ Time.compare (mtime, Globals.getResetTime ()) = LESS
+ 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