ldconfig revision 179945
178344Sobrien#!/bin/sh
278344Sobrien#
398184Sgordon# $FreeBSD: head/etc/rc.d/ldconfig 179945 2008-06-23 04:46:54Z mtm $
498184Sgordon#
578344Sobrien
678344Sobrien# PROVIDE: ldconfig
778344Sobrien# REQUIRE: mountcritremote cleanvar
8140339Sobrien# BEFORE:  DAEMON
998184Sgordon
1078344Sobrien. /etc/rc.subr
1178344Sobrien
1278344Sobrienname="ldconfig"
1378344Sobrienldconfig_command="/sbin/ldconfig"
1498184Sgordonstart_cmd="ldconfig_start"
1578344Sobrienstop_cmd=":"
1678344Sobrien
1778344Sobrienldconfig_start()
1878344Sobrien{
1978344Sobrien	local _files _ins
20159833Sflz
21159833Sflz	_ins=
22124618Smtm	ldconfig=${ldconfig_command}
23124618Smtm	checkyesno ldconfig_insecure && _ins="-i"
24124618Smtm	if [ -x "${ldconfig_command}" ]; then
25124618Smtm		_LDC="/lib /usr/lib"
26124618Smtm		for i in ${ldconfig_local_dirs}; do
27154114Sdougb			if [ -d "${i}" ]; then
28154114Sdougb				_files=`find ${i} -type f`
29159833Sflz				if [ -n "${_files}" ]; then
30159833Sflz					ldconfig_paths="${ldconfig_paths} `cat ${_files} | sort -u`"
31159833Sflz				fi
32159833Sflz			fi
33154114Sdougb		done
34154114Sdougb		for i in ${ldconfig_paths} /etc/ld-elf.so.conf; do
35124618Smtm			if [ -r "${i}" ]; then
36124618Smtm				_LDC="${_LDC} ${i}"
37124618Smtm			fi
38124618Smtm		done
39124618Smtm		[ -z "${rc_quiet}" ] && echo 'ELF ldconfig path:' ${_LDC}
40124618Smtm		${ldconfig} -elf ${_ins} ${_LDC}
41124618Smtm
42124618Smtm		case `sysctl -n hw.machine_arch` in
43154114Sdougb		amd64)
44154114Sdougb			for i in ${ldconfig_local32_dirs}; do
45154114Sdougb				if [ -d "${i}" ]; then
46154114Sdougb					_files=`find ${i} -type f`
47159833Sflz					if [ -n "${_files}" ]; then
48159833Sflz						ldconfig32_paths="${ldconfig32_paths} `cat ${_files} | sort -u`"
49159833Sflz					fi
50159833Sflz				fi
51154114Sdougb			done
52154114Sdougb			_LDC=""
53154114Sdougb			for i in ${ldconfig32_paths}; do
54154114Sdougb				if [ -r "${i}" ]; then
55154114Sdougb					_LDC="${_LDC} ${i}"
56154114Sdougb				fi
57154114Sdougb			done
58124618Smtm			[ -z "${rc_quiet}" ] &&
59124618Smtm			    echo '32-bit compatibility ldconfig path:' ${_LDC}
60124618Smtm			${ldconfig} -32 -m ${_ins} ${_LDC}
61124618Smtm			;;
62124618Smtm		esac
63124618Smtm
64124618Smtm		# Legacy aout support for i386 only
65117077Strhodes		case `sysctl -n hw.machine_arch` in
66103436Speter		i386)
67103436Speter			# Default the a.out ldconfig path.
68103436Speter			: ${ldconfig_paths_aout=${ldconfig_paths}}
69124618Smtm			_LDC=/usr/lib/aout
70124618Smtm			for i in ${ldconfig_paths_aout} /etc/ld.so.conf; do
71124618Smtm				if [ -r "${i}" ]; then
72124618Smtm					_LDC="${_LDC} ${i}"
73124618Smtm				fi
7478344Sobrien			done
7578344Sobrien			[ -z "${rc_quiet}" ] &&
7678344Sobrien			    echo 'a.out ldconfig path:' ${_LDC}
7778344Sobrien			${ldconfig} -aout ${_ins} ${_LDC}
78			;;
79		esac
80	fi
81}
82
83load_rc_config $name
84run_rc_command "$1"
85