diff options
| author | Artyom V. Poptsov <poptsov.artyom@gmail.com> | 2016-12-25 08:05:46 +0300 |
|---|---|---|
| committer | Artyom V. Poptsov <poptsov.artyom@gmail.com> | 2016-12-25 08:05:46 +0300 |
| commit | c37e1e2f65c36f44621e94ace02e04255a66ecc7 (patch) | |
| tree | a5e6e65de26f4fa6bb3357eba3a701aa11d6e5b1 /modules/ssh/shell.scm | |
| parent | shell.scm (pgrep): Fix misspelled pgrep option (diff) | |
| download | guile-ssh-c37e1e2f65c36f44621e94ace02e04255a66ecc7.tar.gz | |
shell.scm (rexec): Close a remote pipe after use
* modules/ssh/shell.scm (rexec): Close a remote pipe after use.
Diffstat (limited to 'modules/ssh/shell.scm')
| -rw-r--r-- | modules/ssh/shell.scm | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/modules/ssh/shell.scm b/modules/ssh/shell.scm index f3b9308..1e21135 100644 --- a/modules/ssh/shell.scm +++ b/modules/ssh/shell.scm @@ -59,14 +59,16 @@ (define (rexec session cmd) "Execute a command CMD on the remote side. Return two values: list of output lines returned by CMD and its exit code." - (let ((channel (open-remote-input-pipe session cmd))) - (values (let loop ((line (read-line channel)) - (result '())) - (if (eof-or-null? line) - (reverse result) - (loop (read-line channel) - (cons line result)))) - (channel-get-exit-status channel)))) + (let* ((channel (open-remote-input-pipe session cmd)) + (result (let loop ((line (read-line channel)) + (result '())) + (if (eof-or-null? line) + (reverse result) + (loop (read-line channel) + (cons line result))))) + (exit-status (channel-get-exit-status channel))) + (close channel) + (values result exit-status))) ;;; |
