chiark / gitweb /
core: inherit TERM from PID 1 for all services started on /dev/console
authorLennart Poettering <lennart@poettering.net>
Wed, 27 Jul 2016 13:25:55 +0000 (15:25 +0200)
committerSven Eden <yamakuzure@gmx.net>
Wed, 5 Jul 2017 06:50:49 +0000 (08:50 +0200)
This way, invoking nspawn from a shell in the best case inherits the TERM
setting all the way down into the login shell spawned in the container.

Fixes: #3697

src/basic/terminal-util.c

index 0659310..0f2cde0 100644 (file)
@@ -792,7 +792,7 @@ bool tty_is_vc_resolve(const char *tty) {
 }
 
 const char *default_term_for_tty(const char *tty) {
 }
 
 const char *default_term_for_tty(const char *tty) {
-        return tty && tty_is_vc_resolve(tty) ? "TERM=linux" : "TERM=vt220";
+        return tty && tty_is_vc_resolve(tty) ? "linux" : "vt220";
 }
 #endif // 0
 
 }
 #endif // 0
 
@@ -1203,9 +1203,12 @@ int open_terminal_in_namespace(pid_t pid, const char *name, int mode) {
 }
 #endif // 0
 
 }
 #endif // 0
 
-static bool getenv_terminal_is_dumb(void) {
+bool terminal_is_dumb(void) {
         const char *e;
 
         const char *e;
 
+        if (!on_tty())
+                return true;
+
         e = getenv("TERM");
         if (!e)
                 return true;
         e = getenv("TERM");
         if (!e)
                 return true;
@@ -1213,13 +1216,6 @@ static bool getenv_terminal_is_dumb(void) {
         return streq(e, "dumb");
 }
 
         return streq(e, "dumb");
 }
 
-bool terminal_is_dumb(void) {
-        if (!on_tty())
-                return true;
-
-        return getenv_terminal_is_dumb();
-}
-
 bool colors_enabled(void) {
         static int enabled = -1;
 
 bool colors_enabled(void) {
         static int enabled = -1;
 
@@ -1229,9 +1225,6 @@ bool colors_enabled(void) {
                 colors = getenv("SYSTEMD_COLORS");
                 if (colors)
                         enabled = parse_boolean(colors) != 0;
                 colors = getenv("SYSTEMD_COLORS");
                 if (colors)
                         enabled = parse_boolean(colors) != 0;
-                else if (getpid() == 1)
-                        /* PID1 outputs to the console without holding it open all the time */
-                        enabled = !getenv_terminal_is_dumb();
                 else
                         enabled = !terminal_is_dumb();
         }
                 else
                         enabled = !terminal_is_dumb();
         }