guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/03: container: Pass through TERM when calling exec.


From: Ludovic Courtès
Subject: 02/03: container: Pass through TERM when calling exec.
Date: Wed, 25 Jan 2017 13:34:48 +0000 (UTC)

civodul pushed a commit to branch master
in repository guix.

commit 0ca575f3bbb6de07469d5bf285ff1a8878a74e1e
Author: Christopher Baines <address@hidden>
Date:   Wed Jan 25 07:24:20 2017 +0000

    container: Pass through TERM when calling exec.
    
    * guix/scripts/container/exec.scm (guix-container-exec): Capture the value 
of
      the TERM environment variable, and pass it through to the container.  This
      means some applications now work where they did not before (e.g. htop), 
and
      others have more functionality, providing that the terminal was capable of
      enabling that functionality in the first place.
    
    Co-authored-by: Ludovic Courtès <address@hidden>
---
 guix/scripts/container/exec.scm |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/guix/scripts/container/exec.scm b/guix/scripts/container/exec.scm
index 10e7056..d6d267d 100644
--- a/guix/scripts/container/exec.scm
+++ b/guix/scripts/container/exec.scm
@@ -74,7 +74,14 @@ and the other containing arguments for the command to be 
executed."
       (let* ((opts (parse-command-line args %options '(())
                                        #:argument-handler
                                        handle-argument))
-             (pid  (assoc-ref opts 'pid)))
+             (pid  (assoc-ref opts 'pid))
+             (environment (filter-map (lambda (name)
+                                        (let ((value (getenv name)))
+                                          (and value (cons name value))))
+                                      ;; Pass through the TERM environment
+                                      ;; variable to inform processes about
+                                      ;; the capabilities of the terminal.
+                                      '("TERM"))))
 
         (unless pid
           (leave (_ "no pid specified~%")))
@@ -89,6 +96,10 @@ and the other containing arguments for the command to be 
executed."
                         (lambda ()
                           (match command
                             ((program . program-args)
+                             (for-each (match-lambda
+                                         ((name . value)
+                                          (setenv name value)))
+                                       environment)
                              (apply execlp program program program-args)))))))
           (unless (zero? result)
             (leave (_ "exec failed with status ~d~%") result)))))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]