Project

General

Profile

« Previous | Next » 

Revision 9712

bugfix: lib/sh/util.sh: set_fds(): added workaround for strange bash bug where reopening an fd sometimes first requires explicitly closing it, by adding an <>&- entry for every redirection

View differences:

lib/sh/util.sh
505 505
require_fd_not_exists() # usage: require_fd_not_exists fd || return 0
506 506
{ ! fd_exists "$1" || type=info die "fd $1 already exists, skipping"; }
507 507

  
508
set_fds() { echo_func; echo_eval exec "$@"; } # usage: set_fds redirect...
508
set_fds() # usage: set_fds redirect...
509
{
510
	echo_func
511
	
512
	# add #<>&- before every #<>&# reopen to fix strange bash bug
513
	local redirs=()
514
	for i in "$@"; do
515
		local redir_prefix="$(match_prefix '*[<>]' "$1")"
516
		if test "$redir_prefix"; then redirs+=("$redir_prefix&-"); fi
517
		redirs+=("$1")
518
	done
519
	set -- "${redirs[@]}"
520
	
521
	echo_eval exec "$@"
522
}
509 523

  
510 524
fd_set_default() # usage: fd_set_default 'dest[<>]src'
511 525
{

Also available in: Unified diff