From: <pj...@in...> - 2010-07-19 07:25:22
|
Having a look at asdf:run-shell-command, we may compare the handling of output streams of commands in the various implementations, and it looks like the way the majority of the implementations handles it is more useful and easier to deal with than the way clisp does it. Namely, when we give a lisp stream as :output argument, the output of the subprocess is appended to that stream. In sbcl, I tested it on a file stream, a string stream, and *standard-output* being slime REPL stream, and I have no doubt it would work with any other lisp stream. So this is a request for discussion about changing this feature, to align clisp onto the, IMO, more useful behavior of the other implementations. (Unfortunately, I don't have the time right now to propose a patch). clisp proposed --------------------------------- --------------------------------- :output :terminal :output *terminal-io* :output nil :output (make-broadcast-stream) :output pathname (with-open-file (file pathname :direction :output) :output pathname) (with-output-to-string (out) (with-output-to-string (out) (with-open-stream (cmdout :output out) :output :stream) (loop :for line = (read-line cmdout nil nil) :while line :do (write-line line out)))) (with-open-stream (cmdout :output *standard-output* ; or any other :output :stream) ; random stream. (loop :for line = (read-line cmdout nil nil) :while line :do (write-line line *standard-output*))) --------------------------------- --------------------------------- -- __Pascal Bourguignon__ http://www.informatimago.com/ |