: <process-reader> ( desc encoding -- stream )
(process-reader) drop ; inline
-: with-process-reader* ( ... desc encoding quot: ( ... -- ... ) -- ... process status )
+: with-process-reader* ( desc encoding quot -- process status )
[ (process-reader) ] dip '[ _ with-input-stream ] dip
dup wait-for-process ; inline
-: with-process-reader ( ... desc encoding quot: ( ... -- ... ) -- ... )
+: with-process-reader ( desc encoding quot -- )
with-process-reader* check-success ; inline
<PRIVATE
: <process-writer> ( desc encoding -- stream )
(process-writer) drop ; inline
-: with-process-writer* ( ... desc encoding quot: ( ... -- ... ) -- ... process status )
+: with-process-writer* ( desc encoding quot -- process status )
[ (process-writer) ] dip '[ _ with-output-stream ] dip
dup wait-for-process ; inline
-: with-process-writer ( ... desc encoding quot: ( ... -- ... ) -- ... )
+: with-process-writer ( desc encoding quot -- )
with-process-writer* check-success ; inline
<PRIVATE
: <process-stream> ( desc encoding -- stream )
(process-stream) drop ; inline
-: with-process-stream* ( ... desc encoding quot: ( ... -- ... ) -- ... process status )
+: with-process-stream* ( desc encoding quot -- process status )
[ (process-stream) ] dip '[ _ with-stream ] dip
dup wait-for-process ; inline
-: with-process-stream ( ... desc encoding quot: ( ... -- ... ) -- ... )
+: with-process-stream ( desc encoding quot -- )
with-process-stream* check-success ; inline
ERROR: output-process-error { output string } { process process } ;