Overwrite tracked file descriptors when exporting COLORED_STDERR_FDS.

If the list of tracked file descriptors is modified to contain unwanted
values (e.g. when a parent process closes or redirects stderr), this
makes it possible to set the tracked file descriptors back to a given
list.

This problem occurred with startx which somehow closes or redirects
stderr. As COLORED_STDERR_FDS was set in the shell running startx, this
disabled coloring stderr for all processes started in the X11 session.

This is no longer an issue. As COLORED_STDERR_FDS is set in the shell
configuration file, it automatically sets the list to the correct value
when a shell is opened in the terminal emulator once X11 is running.
This commit is contained in:
Simon Ruderich
2013-06-21 18:26:23 +02:00
parent 045ca46e79
commit 0d7f306898
8 changed files with 160 additions and 59 deletions

View File

@@ -18,7 +18,7 @@
test "x$srcdir" = x && srcdir=.
. "$srcdir/lib.sh"
# Test unexpected values for COLORED_STDERR_FDS environment variable.
# Test unexpected values for COLORED_STDERR_PRIVATE_FDS environment variable.
# Empty fields.
fds=
@@ -44,3 +44,18 @@ test_program_subshell example example_environment
fds=-20,-30,2,-1,
test_program example example_environment
test_program_subshell example example_environment
# Test COLORED_STDERR_FDS overwrites COLORED_STDERR_PRIVATE_FDS. Additional
# tests in example_exec.
fds=
COLORED_STDERR_FDS=2,
export COLORED_STDERR_FDS
test_program example example_environment
test_program_subshell example example_environment
fds=2,
COLORED_STDERR_FDS=
export COLORED_STDERR_FDS
test_program example example_environment_empty
test_program_subshell example example_environment_empty