mailman: open /usr/share/images/mailman, revert to mod_access_compat
[hcoop/domtool2.git] / src / slave.sml
index 7e3f9d8..299c0ed 100644 (file)
@@ -36,7 +36,7 @@ type file_status = {action : file_action,
 val fileHandler = ref (fn _ : file_status => ())
 val preHandler = ref (fn () => ())
 val postHandler = ref (fn () => ())
-                 
+
 fun registerFileHandler handler =
     let
        val old = !fileHandler
@@ -96,6 +96,29 @@ fun run (program, argv) =
        OS.Process.isSuccess (Unix.reap proc)
     end
 
+
+fun runOutput (program, argv) =
+    let
+       val proc = Unix.execute (program, argv)
+       val inf = Unix.textInstreamOf proc
+
+       fun loop out =
+           case TextIO.inputLine inf of
+               NONE => if (List.length out) > 0 then
+                           SOME (String.concat (rev out))
+                       else
+                           NONE
+             | SOME line => loop (line :: out)
+
+       val lines = loop []
+    in
+       case lines of
+           SOME lines => print lines
+         | NONE => ();
+
+       (OS.Process.isSuccess (Unix.reap proc), lines)
+    end
+
 fun shellOutput ss =
     let
        val proc = Unix.execute ("/bin/bash", ["-c", String.concat ss ^ " 2>&1"])