diff options
-rwxr-xr-x | bin/etc-update | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/bin/etc-update b/bin/etc-update index d2946c3a0..234a6bd34 100755 --- a/bin/etc-update +++ b/bin/etc-update @@ -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:/[^/]*$::"` |