diff options
author | David Thompson <dthompson2@worcester.edu> | 2015-11-03 18:05:43 -0500 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2015-11-03 18:05:43 -0500 |
commit | d431b232403fbf4d41617ba29664dcd3fff23f96 (patch) | |
tree | 734a31517f68838b3abec6ce9d0614750d8dbfcf /guix/scripts | |
parent | bab020d7ca50e4153cf24832d119389a37fa8f63 (diff) |
scripts: container: Fix 'exec' command line parsing.
* guix/scripts/container/exec.scm (partition-args): Reimplement such
that all args up to and including the PID are returned as the first of
the two values.
Diffstat (limited to 'guix/scripts')
-rw-r--r-- | guix/scripts/container/exec.scm | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/guix/scripts/container/exec.scm b/guix/scripts/container/exec.scm index b842fd38aa..10e70568cc 100644 --- a/guix/scripts/container/exec.scm +++ b/guix/scripts/container/exec.scm @@ -50,10 +50,18 @@ Execute COMMMAND within the container process PID.\n")) (define (partition-args args) "Split ARGS into two lists; one containing the arguments for this program, and the other containing arguments for the command to be executed." - (break (lambda (arg) - ;; Split after the pid argument. - (not (false-if-exception (string->number arg)))) - args)) + (define (number-string? str) + (false-if-exception (string->number str))) + + (let loop ((a '()) + (b args)) + (match b + (() + (values (reverse a) '())) + (((? number-string? head) . tail) + (values (reverse (cons head a)) tail)) + ((head . tail) + (loop (cons head a) tail))))) (define (guix-container-exec . args) (define (handle-argument arg result) |