Make etc-update play nice with symlinks for bug #129515. Thanks to Patrick McLean...
authorZac Medico <zmedico@gentoo.org>
Tue, 11 Apr 2006 09:29:34 +0000 (09:29 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 11 Apr 2006 09:29:34 +0000 (09:29 -0000)
svn path=/main/trunk/; revision=3130

bin/etc-update

index d2946c3a001362278a4cf2d6f782b9234e020cf1..234a6bd34166c53353a73accaa405cfd1da09d30 100755 (executable)
@@ -40,11 +40,16 @@ function scan() {
                exit 1
        fi
 
+       # `readlink -f` is not supported on all systems, so it's necessary to test
+       # for the alternative "realpath" program.
+       local realpath_cmd="$(type -p "realpath")"
+       [ -z "${realpath_cmd}" ] && realpath_cmd="readlink -q -f"
+
        for path in ${CONFIG_PROTECT} ; do
                [ ! -d ${path} ] && continue
 
                ofile=""
-               for file in `find ${path}/ -iname "._cfg????_*" |
+               for file in `find -L ${path}/ -iname "._cfg????_*" -exec ${realpath_cmd} '{}' ';' | uniq |
                           sed -e "s:\(^.*/\)\(\._cfg[0-9]*_\)\(.*$\):\1\2\3\%\2\%\3:" |
                           sort -t'%' -k3 -k2 | LANG=POSIX LC_ALL=POSIX cut -f1 -d'%'`; do
                        rpath=`echo "${file/\/\///}" | sed -e "s:/[^/]*$::"`