X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fexecute.c;h=8f486e2004a1f43923d77a2b80bd81692e475206;hb=2c4b304e64ca674e1a79a7e5c83a996a03611a17;hp=48e55ea4c2f60c08891ff64e63477b91deb0c048;hpb=8a0867d6c5b47c8697d1ddd815116a548433c718;p=elogind.git diff --git a/src/execute.c b/src/execute.c index 48e55ea4c..8f486e200 100644 --- a/src/execute.c +++ b/src/execute.c @@ -1252,7 +1252,7 @@ int exec_spawn(ExecCommand *command, } } - if (!(our_env = new0(char*, 6))) { + if (!(our_env = new0(char*, 7))) { r = EXIT_MEMORY; goto fail; } @@ -1277,7 +1277,15 @@ int exec_spawn(ExecCommand *command, goto fail; } - assert(n_env <= 6); + if (is_terminal_input(context->std_input) || + context->std_output == EXEC_OUTPUT_TTY || + context->std_error == EXEC_OUTPUT_TTY) + if (!(our_env[n_env++] = strdup(default_term_for_tty(tty_path(context))))) { + r = EXIT_MEMORY; + goto fail; + } + + assert(n_env <= 7); if (!(final_env = strv_env_merge( 4, @@ -1295,6 +1303,8 @@ int exec_spawn(ExecCommand *command, goto fail; } + final_env = strv_env_clean(final_env); + execve(command->path, final_argv, final_env); r = EXIT_EXEC;