config: add a new ‘environment’ section

This section allows the user to define custom environment variables to
be set in the child process:

  [environment]
  name=value
This commit is contained in:
Daniel Eklöf 2022-05-28 19:27:29 +02:00
parent 497c31d9fc
commit 755f96321a
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
6 changed files with 63 additions and 4 deletions

10
slave.c
View file

@ -305,8 +305,9 @@ err:
pid_t
slave_spawn(int ptmx, int argc, const char *cwd, char *const *argv,
char *const *envp, const char *term_env, const char *conf_shell,
bool login_shell, const user_notifications_t *notifications)
char *const *envp, const env_var_list_t *extra_env_vars,
const char *term_env, const char *conf_shell, bool login_shell,
const user_notifications_t *notifications)
{
int fork_pipe[2];
if (pipe2(fork_pipe, O_CLOEXEC) < 0) {
@ -356,6 +357,11 @@ slave_spawn(int ptmx, int argc, const char *cwd, char *const *argv,
setenv("TERMINFO", FOOT_TERMINFO_PATH, 1);
#endif
if (extra_env_vars != NULL) {
tll_foreach(*extra_env_vars, it)
setenv(it->item.name, it->item.value, 1);
}
char **_shell_argv = NULL;
char **shell_argv = NULL;