dracut-functions.sh: avoid tokenizing ldconfig output with 'read'

The space does not separate the elements reliably, spaces can be
embedded in parenthesized expressions too:

  libgmpxx.so.4 (libc6, hwcap: 0x0000000004000000) => /lib/sse2/libgmpxx.so.4
  libgmp.so.10 (libc6, hwcap: 0x0000000004000000) => /lib/sse2/libgmp.so.10

This results in dracut creating '0x0000000004000000' and '=>'
directories in the initramfs image.
master
Lubomir Rintel 2014-12-23 22:03:10 +01:00 committed by Harald Hoyer
parent 1dc360790d
commit c59779cf93
1 changed files with 1 additions and 11 deletions

View File

@ -104,17 +104,7 @@ fi

ldconfig_paths()
{
local a i
declare -A a
for i in $(
ldconfig -pN 2>/dev/null | grep -F '=>' | grep -E -v '/(lib|lib64|usr/lib|usr/lib64)/[^/]*$' | while read a b c d; do
d=${d%/*}
printf "%s\n" "$d";
done
); do
a["$i"]=1;
done;
printf "%s\n" ${!a[@]}
ldconfig -pN 2>/dev/null | grep -E -v '/(lib|lib64|usr/lib|usr/lib64)/[^/]*$' | sed -n 's,.* => \(.*\)/.*,\1,p' | sort | uniq
}

# Detect lib paths