From 60b3d895b03d4980b165a95a7d9f75262fa695ac Mon Sep 17 00:00:00 2001 From: Stelian Ionescu Date: Sat, 25 Dec 2010 23:42:18 +0100 Subject: [PATCH] RUN-PROGRAM: add keyword argument "stderr" Allow redirecting stderr onto stdout --- src/os/create-process-unix.lisp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/os/create-process-unix.lisp b/src/os/create-process-unix.lisp index e3c71aa..c0f416b 100644 --- a/src/os/create-process-unix.lisp +++ b/src/os/create-process-unix.lisp @@ -185,7 +185,8 @@ (make-instance 'process :pid (mem-ref pid 'pid-t) :stdin infd :stdout outfd :stderr errfd)))))) -(defun run-program (program &optional arguments &key (search t) environment) +(defun run-program (program &optional arguments &key (search t) environment stderr) + (check-type stderr (member nil :stdout)) (flet ((slurp-stream-into-string (stream) (with-output-to-string (s) (loop :for c := (read-char stream nil nil) @@ -194,11 +195,15 @@ :search search :environment environment :stdout :pipe - :stderr :pipe))) + :stderr (if (eql :stdout stderr) + :stdout + :pipe)))) (unwind-protect (values (process-wait process) (slurp-stream-into-string (process-stdout process)) - (slurp-stream-into-string (process-stderr process))) + (if (eql :stdout stderr) + nil + (slurp-stream-into-string (process-stderr process)))) (close process))))) (defmethod process-wait ((process process)) -- 2.11.4.GIT