Revision 9712
Added by Aaron Marcuse-Kubitza over 11 years ago
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
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