mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-27 02:42:46 +00:00
rc.d/ldconfig: Compute ldconfig paths in a function
Move logic that computes paths passed to ldconfig(8) to a ldconfig_paths() function that can be called for multiple ABIs. Reviewed by: olce, kib Obtained from: CheriBSD Differential Revision: https://reviews.freebsd.org/D44751
This commit is contained in:
parent
7c7299df76
commit
e6e38bc522
@ -14,6 +14,31 @@ ldconfig_command="/sbin/ldconfig"
|
||||
start_cmd="ldconfig_start"
|
||||
stop_cmd=":"
|
||||
|
||||
ldconfig_paths()
|
||||
{
|
||||
local _dirs _files _ii _ldpaths _paths
|
||||
|
||||
_dirs="${1}"
|
||||
_paths="${2}"
|
||||
_ldpaths="${3}"
|
||||
|
||||
for _ii in ${_dirs}; do
|
||||
if [ -d "${_ii}" ]; then
|
||||
_files=`find ${_ii} -type f`
|
||||
if [ -n "${_files}" ]; then
|
||||
_paths="${_paths} `cat ${_files} | sort -u`"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
for _ii in ${_paths}; do
|
||||
if [ -r "${_ii}" ]; then
|
||||
_ldpaths="${_ldpaths} ${_ii}"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "${_ldpaths}"
|
||||
}
|
||||
|
||||
ldconfig_start()
|
||||
{
|
||||
local _files _ins
|
||||
@ -23,31 +48,12 @@ ldconfig_start()
|
||||
checkyesno ldconfig_insecure && _ins="-i"
|
||||
if [ -x "${ldconfig_command}" ]; then
|
||||
_LDC=$(/libexec/ld-elf.so.1 -v | sed -n -e '/^Default lib path /s///p' | tr : ' ')
|
||||
for i in ${ldconfig_local_dirs}; do
|
||||
if [ -d "${i}" ]; then
|
||||
_files=`find ${i} -type f`
|
||||
if [ -n "${_files}" ]; then
|
||||
ldconfig_paths="${ldconfig_paths} `cat ${_files} | sort -u`"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
for i in ${ldconfig_paths} /etc/ld-elf.so.conf; do
|
||||
if [ -r "${i}" ]; then
|
||||
_LDC="${_LDC} ${i}"
|
||||
fi
|
||||
done
|
||||
_LDC=$(ldconfig_paths "${ldconfig_local_dirs}" \
|
||||
"${ldconfig_paths} /etc/ld-elf.so.conf" "$_LDC")
|
||||
startmsg 'ELF ldconfig path:' ${_LDC}
|
||||
${ldconfig} -elf ${_ins} ${_LDC}
|
||||
|
||||
if check_kern_features compat_freebsd32; then
|
||||
for i in ${ldconfig_local32_dirs}; do
|
||||
if [ -d "${i}" ]; then
|
||||
_files=`find ${i} -type f`
|
||||
if [ -n "${_files}" ]; then
|
||||
ldconfig32_paths="${ldconfig32_paths} `cat ${_files} | sort -u`"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
_LDC=""
|
||||
if [ -x /libexec/ld-elf32.so.1 ]; then
|
||||
for x in $(/libexec/ld-elf32.so.1 -v | sed -n -e '/^Default lib path /s///p' | tr : ' '); do
|
||||
@ -56,11 +62,8 @@ ldconfig_start()
|
||||
fi
|
||||
done
|
||||
fi
|
||||
for i in ${ldconfig32_paths}; do
|
||||
if [ -r "${i}" ]; then
|
||||
_LDC="${_LDC} ${i}"
|
||||
fi
|
||||
done
|
||||
_LDC=$(ldconfig_paths "${ldconfig_local32_dirs}" \
|
||||
"${ldconfig32_paths}" "$_LDC")
|
||||
startmsg '32-bit compatibility ldconfig path:' ${_LDC}
|
||||
${ldconfig} -32 ${_ins} ${_LDC}
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user