From 443dd1bc3f9c7305ed97fc6ab55b11f097113a0a Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Fri, 3 Apr 2015 07:13:33 +0900 Subject: [PATCH] Adding process->output+error+status. --- lib/chibi/process.scm | 28 ++++++++++++++++------------ lib/chibi/process.sld | 4 ++-- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/lib/chibi/process.scm b/lib/chibi/process.scm index 29607b19..9e1a738c 100644 --- a/lib/chibi/process.scm +++ b/lib/chibi/process.scm @@ -111,31 +111,35 @@ (open-input-file-descriptor (car out-pipe)) (open-input-file-descriptor (car err-pipe))))))))) -(define (process->string str) +(define (process->string command) (call-with-process-io - str + command (lambda (pid in out err) (close-output-port in) (let ((res (port->string out))) (waitpid pid 0) res)))) -(define (process->sexp str) - (call-with-input-string (process->string str) read)) +(define (process->sexp command) + (call-with-input-string (process->string command) read)) -(define (process->output+error str) +(define (process->output+error+status command) (call-with-process-io - str + command (lambda (pid in out err) (close-output-port in) - (let ((out (port->string out)) - (err (port->string err))) - (waitpid pid 0) - (list out err))))) + (let* ((out (port->string out)) + (err (port->string err)) + (res (waitpid pid 0))) + (list out err (cadr res)))))) -(define (process->string-list str) +(define (process->output+error command) + (let ((res (process->output+error+status command))) + (list (car res) (cadr res)))) + +(define (process->string-list command) (call-with-process-io - str + command (lambda (pid in out err) (close-output-port in) (let ((res (port->string-list out))) diff --git a/lib/chibi/process.sld b/lib/chibi/process.sld index 9508d74a..4b793b27 100644 --- a/lib/chibi/process.sld +++ b/lib/chibi/process.sld @@ -15,8 +15,8 @@ signal/stop signal/tty-stop signal/tty-input signal/tty-output wait/no-hang call-with-process-io - process->string process->sexp - process->string-list process->output+error) + process->string process->sexp process->string-list + process->output+error process->output+error+status) (import (chibi) (chibi io) (chibi string) (chibi filesystem)) (cond-expand (threads (import (srfi 18) (srfi 33))) (else #f)) (include-shared "process")