From 69d62d3cd2918bee089fc879e381820349497483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 1 Nov 2019 21:01:15 +0100 Subject: [PATCH] slave: set TERM environment variable in slave process --- main.c | 1 - slave.c | 5 ++++- slave.h | 2 +- terminal.c | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index f13a45d8..c1abe5bc 100644 --- a/main.c +++ b/main.c @@ -161,7 +161,6 @@ main(int argc, char *const *argv) argv += optind; setlocale(LC_ALL, ""); - setenv("TERM", conf.term, 1); struct fdm *fdm = NULL; struct wayland *wayl = NULL; diff --git a/slave.c b/slave.c index 0e762bf0..1f70a0d8 100644 --- a/slave.c +++ b/slave.c @@ -1,5 +1,6 @@ #define _XOPEN_SOURCE 500 #include "slave.h" + #include #include #include @@ -68,7 +69,7 @@ err: pid_t slave_spawn(int ptmx, int argc, char *const *argv, - const char *conf_shell) + const char *term_env, const char *conf_shell) { int fork_pipe[2]; if (pipe2(fork_pipe, O_CLOEXEC) < 0) { @@ -88,6 +89,8 @@ slave_spawn(int ptmx, int argc, char *const *argv, /* Child */ close(fork_pipe[0]); /* Close read end */ + setenv("TERM", term_env, 1); + char **_shell_argv = NULL; char *const *shell_argv = argv; diff --git a/slave.h b/slave.h index cfb18af2..f1a9848a 100644 --- a/slave.h +++ b/slave.h @@ -4,4 +4,4 @@ #include pid_t slave_spawn( - int ptmx, int argc, char *const *argv, const char *conf_shell); + int ptmx, int argc, char *const *argv, const char *term_env, const char *conf_shell); diff --git a/terminal.c b/terminal.c index cbe67b58..d6aaf4ff 100644 --- a/terminal.c +++ b/terminal.c @@ -428,7 +428,7 @@ term_init(const struct config *conf, struct fdm *fdm, struct wayland *wayl, LOG_INFO("cell width=%d, height=%d", term->cell_width, term->cell_height); /* Start the slave/client */ - if ((term->slave = slave_spawn(term->ptmx, argc, argv, conf->shell)) == -1) + if ((term->slave = slave_spawn(term->ptmx, argc, argv, conf->term, conf->shell)) == -1) goto err; /* Initiailze the Wayland window backend */