configure: Drop global setting of IFS (without space in it).

This was originally intended to help support filenames with spaces in
them, but this actually breaks things when someone sets a command with
a space in it, (such as CC="ccache cc").

Instead, we now only set a custom IFS when acting on the
newline-separated list of files from /sbin/ldconfig.
This commit is contained in:
Michal Sojka 2011-01-26 23:13:21 +10:00 committed by Carl Worth
parent 74cb76a69d
commit b4b5e9ce4d

13
configure vendored
View file

@ -1,13 +1,5 @@
#! /bin/sh #! /bin/sh
# Removing space from IFS makes it much easier to support filenames
# with spaces. See http://www.dwheeler.com/essays/filenames-in-shell.html
# for gory details.
IFS="$(printf '\n\t')"
# Since we don't have space in IFS we use tab to separate things in lists
tab="$(printf '\t')"
# Set several defaults (optionally specified by the user in # Set several defaults (optionally specified by the user in
# environemnt variables) # environemnt variables)
CC=${CC:-gcc} CC=${CC:-gcc}
@ -343,11 +335,16 @@ elif [ $uname = "Linux" ] ; then
platform=LINUX platform=LINUX
linker_resolves_library_dependencies=1 linker_resolves_library_dependencies=1
ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p') ldconfig_paths=$(/sbin/ldconfig -N -X -v 2>/dev/null | sed -n -e 's,^\(/.*\):\( (.*)\)\?$,\1,p')
# Separate ldconfig_paths only on newline (not on any potential
# embedded space characters in any filenames).
OLD_IFS=$IFS
IFS="$(printf '\n')"
for path in $ldconfig_paths; do for path in $ldconfig_paths; do
if [ "$path" = "$libdir_expanded" ]; then if [ "$path" = "$libdir_expanded" ]; then
libdir_in_ldconfig=1 libdir_in_ldconfig=1
fi fi
done done
IFS=$OLD_IFS
else else
printf "Unknown.\n" printf "Unknown.\n"
cat <<EOF cat <<EOF