summaryrefslogtreecommitdiff
path: root/modules/ssh
diff options
context:
space:
mode:
authorArtyom V. Poptsov <poptsov.artyom@gmail.com>2016-12-25 08:05:46 +0300
committerArtyom V. Poptsov <poptsov.artyom@gmail.com>2016-12-25 08:05:46 +0300
commitc37e1e2f65c36f44621e94ace02e04255a66ecc7 (patch)
treea5e6e65de26f4fa6bb3357eba3a701aa11d6e5b1 /modules/ssh
parentshell.scm (pgrep): Fix misspelled pgrep option (diff)
downloadguile-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')
-rw-r--r--modules/ssh/shell.scm18
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)))
;;;