X-Git-Url: https://git.hcoop.net/hcoop/domtool2.git/blobdiff_plain/6e62228d09c5067f798b356b88b0c53190f75729..7045a49957813a49569a9260753d8e60520e48c2:/src/slave.sml?pf=hcoop diff --git a/src/slave.sml b/src/slave.sml index fb336ae..719b417 100644 --- a/src/slave.sml +++ b/src/slave.sml @@ -56,7 +56,12 @@ fun registerPostHandler handler = end fun handleChanges fs = (!preHandler (); - app (!fileHandler) fs; + app (fn recd as {action, file, ...} => + (!fileHandler recd; + if action = Delete andalso Posix.FileSys.access (file, []) then + OS.FileSys.remove file + else + ())) fs; !postHandler ()) fun shell ss = OS.Process.isSuccess (OS.Process.system (String.concat ss)) @@ -154,4 +159,26 @@ fun enumerateTo p sep fname = TextIO.closeOut outf end +fun readList fname = + let + val inf = TextIO.openIn fname + + fun loop acc = + case TextIO.inputLine inf of + NONE => rev acc + | SOME line => loop (String.substring (line, 0, size line - 1) :: acc) + in + loop [] + before TextIO.closeIn inf + end + +fun writeList (fname, ls) = + let + val outf = TextIO.openOut fname + in + app (fn s => (TextIO.output (outf, s); + TextIO.output1 (outf, #"\n"))) ls; + TextIO.closeOut outf + end + end