diff --git a/src/util-io.scm b/src/util-io.scm index 5a74843..652acaa 100644 --- a/src/util-io.scm +++ b/src/util-io.scm @@ -30,6 +30,7 @@ ( read-lines/no-bom get-process-output-lines + process-send/recv ) (import scheme @@ -64,4 +65,17 @@ (let-values (((a b c) (process-wait pid))) result)))) + ;; Invokes given command with given arguments, gives it all input + ;; lines and returns the output lines. + (define (process-send/recv cmd args . lines) + (let-values (((stdout stdin pid stderr) (process* cmd args))) + (let loop ((lines lines)) + (when (not (null? lines)) + (display (car lines) stdin) + (newline stdin) + (loop (cdr lines)))) + (let ((result (read-lines stdout))) + (let-values (((pid exit-ok? exit/signal) (process-wait pid))) + result)))) + )