ldconfig revision 256281
1223215Sdelphij#!/bin/sh
2134244Stjr#
3131661Sdas# $FreeBSD: stable/10/etc/rc.d/ldconfig 240336 2012-09-11 05:04:59Z obrien $
4134244Stjr#
5131661Sdas
6134244Stjr# PROVIDE: ldconfig
7134244Stjr# REQUIRE: mountcritremote FILESYSTEMS
8134244Stjr# BEFORE:  DAEMON
9131661Sdas
10134244Stjr. /etc/rc.subr
11134244Stjr
12134244Stjrname="ldconfig"
13134244Stjrldconfig_command="/sbin/ldconfig"
14134244Stjrstart_cmd="ldconfig_start"
15134244Stjrstop_cmd=":"
16134244Stjr
17134244Stjrldconfig_start()
18134244Stjr{
19134244Stjr	local _files _ins
20134244Stjr
21131661Sdas	_ins=
22131661Sdas	ldconfig=${ldconfig_command}
23134244Stjr	checkyesno ldconfig_insecure && _ins="-i"
24134244Stjr	if [ -x "${ldconfig_command}" ]; then
25134244Stjr		_LDC="/lib /usr/lib"
26134244Stjr		for i in ${ldconfig_local_dirs}; do
27131661Sdas			if [ -d "${i}" ]; then
28134244Stjr				_files=`find ${i} -type f`
29131661Sdas				if [ -n "${_files}" ]; then
30134244Stjr					ldconfig_paths="${ldconfig_paths} `cat ${_files} | sort -u`"
31134244Stjr				fi
32131661Sdas			fi
33134244Stjr		done
34134244Stjr		for i in ${ldconfig_paths} /etc/ld-elf.so.conf; do
35134244Stjr			if [ -r "${i}" ]; then
36134244Stjr				_LDC="${_LDC} ${i}"
37134244Stjr			fi
38134244Stjr		done
39134244Stjr		check_startmsgs && echo 'ELF ldconfig path:' ${_LDC}
40134244Stjr		${ldconfig} -elf ${_ins} ${_LDC}
41131661Sdas
42134244Stjr		case `sysctl -n hw.machine_arch` in
43134244Stjr		amd64)
44134244Stjr			for i in ${ldconfig_local32_dirs}; do
45134244Stjr				if [ -d "${i}" ]; then
46134244Stjr					_files=`find ${i} -type f`
47131661Sdas					if [ -n "${_files}" ]; then
48134244Stjr						ldconfig32_paths="${ldconfig32_paths} `cat ${_files} | sort -u`"
49134244Stjr					fi
50134244Stjr				fi
51134244Stjr			done
52134244Stjr			_LDC=""
53134244Stjr			for i in ${ldconfig32_paths}; do
54134244Stjr				if [ -r "${i}" ]; then
55134244Stjr					_LDC="${_LDC} ${i}"
56134244Stjr				fi
57134244Stjr			done
58134244Stjr			check_startmsgs &&
59134244Stjr			    echo '32-bit compatibility ldconfig path:' ${_LDC}
60134244Stjr			${ldconfig} -32 -m ${_ins} ${_LDC}
61134244Stjr			;;
62134244Stjr		esac
63134244Stjr
64134244Stjr		# Legacy aout support for i386 only
65134244Stjr		case `sysctl -n hw.machine_arch` in
66134244Stjr		i386)
67134244Stjr			# Default the a.out ldconfig path.
68134244Stjr			: ${ldconfig_paths_aout=${ldconfig_paths}}
69134244Stjr			_LDC=""
70134244Stjr			for i in /usr/lib/aout ${ldconfig_paths_aout} /etc/ld.so.conf; do
71134244Stjr				if [ -r "${i}" ]; then
72134244Stjr					_LDC="${_LDC} ${i}"
73134244Stjr				fi
74134244Stjr			done
75134244Stjr			check_startmsgs && echo 'a.out ldconfig path:' ${_LDC}
76134244Stjr			${ldconfig} -aout ${_ins} ${_LDC}
77134244Stjr			;;
78134244Stjr		esac
79134244Stjr	fi
80134244Stjr}
81134244Stjr
82134244Stjrload_rc_config $name
83134244Stjrrun_rc_command "$1"
84134244Stjr