Skip to content

Commit

Permalink
multiprocesing.eclass: Remove redirect_alloc_fd
Browse files Browse the repository at this point in the history
Remove the redirect_alloc_fd function that is no longer used since
the removal of multijob* functions. The function is complex, has little
potential use and an equivalent functionality is built-in in newer bash
versions, making it completely unnecessary for EAPI 6.

Closes: gentoo#6696
  • Loading branch information
mgorny committed Jan 4, 2018
1 parent f55020e commit 1606e3d
Showing 1 changed file with 0 additions and 35 deletions.
35 changes: 0 additions & 35 deletions eclass/multiprocessing.eclass
Original file line number Diff line number Diff line change
Expand Up @@ -100,39 +100,4 @@ makeopts_loadavg() {
echo ${lavg:-${2:-999}}
}

# @FUNCTION: redirect_alloc_fd
# @USAGE: <var> <file> [redirection]
# @DESCRIPTION:
# Find a free fd and redirect the specified file via it. Store the new
# fd in the specified variable. Useful for the cases where we don't care
# about the exact fd #.
redirect_alloc_fd() {
local var=$1 file=$2 redir=${3:-"<>"}

# Make sure /dev/fd is sane on Linux hosts. #479656
if [[ ! -L /dev/fd && ${CBUILD} == *linux* ]] ; then
eerror "You're missing a /dev/fd symlink to /proc/self/fd."
eerror "Please fix the symlink and check your boot scripts (udev/etc...)."
die "/dev/fd is broken"
fi

if [[ $(( (BASH_VERSINFO[0] << 8) + BASH_VERSINFO[1] )) -ge $(( (4 << 8) + 1 )) ]] ; then
# Newer bash provides this functionality.
eval "exec {${var}}${redir}'${file}'"
else
# Need to provide the functionality ourselves.
local fd=10
while :; do
# Make sure the fd isn't open. It could be a char device,
# or a symlink (possibly broken) to something else.
if [[ ! -e /dev/fd/${fd} ]] && [[ ! -L /dev/fd/${fd} ]] ; then
eval "exec ${fd}${redir}'${file}'" && break
fi
[[ ${fd} -gt 1024 ]] && die 'could not locate a free temp fd !?'
: $(( ++fd ))
done
: $(( ${var} = fd ))
fi
}

fi

0 comments on commit 1606e3d

Please sign in to comment.