... |
... |
@@ -79,7 +79,7 @@ find_free_servernum() { |
79
|
79
|
# Clean up files
|
80
|
80
|
clean_up() {
|
81
|
81
|
if [ -e "$AUTHFILE" ]; then
|
82
|
|
- XAUTHORITY=$AUTHFILE xauth remove ":$SERVERNUM" >>"$ERRORFILE" 2>&1
|
|
82
|
+ XAUTHORITY=$AUTHFILE xauth remove ":$SERVERNUM" >&3 2>&3
|
83
|
83
|
fi
|
84
|
84
|
if [ -n "$XVFB_RUN_TMPDIR" ]; then
|
85
|
85
|
if ! rm -r "$XVFB_RUN_TMPDIR"; then
|
... |
... |
@@ -88,7 +88,7 @@ clean_up() { |
88
|
88
|
fi
|
89
|
89
|
fi
|
90
|
90
|
if [ -n "$XVFBPID" ]; then
|
91
|
|
- kill "$XVFBPID" >>"$ERRORFILE" 2>&1
|
|
91
|
+ kill "$XVFBPID" >&3 2>&3
|
92
|
92
|
fi
|
93
|
93
|
}
|
94
|
94
|
|
... |
... |
@@ -139,6 +139,22 @@ if ! command -v xauth >/dev/null; then |
139
|
139
|
exit 3
|
140
|
140
|
fi
|
141
|
141
|
|
|
142
|
+# Open fd 3 for diagnostic output from Xvfb, etc.
|
|
143
|
+case "$ERRORFILE" in
|
|
144
|
+ (/proc/self/fd/1 | /dev/stdout)
|
|
145
|
+ # We might not actually be able to write to this if it's a file or
|
|
146
|
+ # terminal owned by someone else, so duplicate the fd instead
|
|
147
|
+ exec 3>&1
|
|
148
|
+ ;;
|
|
149
|
+ (/proc/self/fd/2 | /dev/stderr)
|
|
150
|
+ # See above
|
|
151
|
+ exec 3>&2
|
|
152
|
+ ;;
|
|
153
|
+ (*)
|
|
154
|
+ exec 3>>"$ERRORFILE"
|
|
155
|
+ ;;
|
|
156
|
+esac
|
|
157
|
+
|
142
|
158
|
# tidy up after ourselves
|
143
|
159
|
trap clean_up EXIT
|
144
|
160
|
|
... |
... |
@@ -156,13 +172,13 @@ MCOOKIE=$(mcookie) |
156
|
172
|
tries=10
|
157
|
173
|
while [ $tries -gt 0 ]; do
|
158
|
174
|
tries=$(( $tries - 1 ))
|
159
|
|
- XAUTHORITY=$AUTHFILE xauth source - << EOF >>"$ERRORFILE" 2>&1
|
|
175
|
+ XAUTHORITY=$AUTHFILE xauth source - << EOF >&3 2>&3
|
160
|
176
|
add :$SERVERNUM $XAUTHPROTO $MCOOKIE
|
161
|
177
|
EOF
|
162
|
178
|
# handle SIGUSR1 so Xvfb knows to send a signal when it's ready to accept
|
163
|
179
|
# connections
|
164
|
180
|
trap : USR1
|
165
|
|
- (trap '' USR1; exec Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP -auth $AUTHFILE >>"$ERRORFILE" 2>&1) &
|
|
181
|
+ (trap '' USR1; exec Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP -auth $AUTHFILE >&3 2>&3 3>&-) &
|
166
|
182
|
XVFBPID=$!
|
167
|
183
|
|
168
|
184
|
wait || :
|
... |
... |
@@ -181,7 +197,7 @@ done |
181
|
197
|
|
182
|
198
|
# Start the command and save its exit status.
|
183
|
199
|
set +e
|
184
|
|
-DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@"
|
|
200
|
+DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 3>&-
|
185
|
201
|
RETVAL=$?
|
186
|
202
|
set -e
|
187
|
203
|
|