--- etc-update +++ etc-update @@ -77,10 +77,10 @@ scan() { [[ ! -f ${path} ]] && continue local my_basename="${path##*/}" path="${path%/*}" - find_opts=( -maxdepth 1 -name "._cfg????_${my_basename}" ) + find_opts=( -maxdepth 1 \( -name "._cfg????_${my_basename}" -o -name "${my_basename}.rpmnew" \) ) else # Do not traverse hidden directories such as .svn or .git. - find_opts=( -name '.*' -type d -prune -o -name '._cfg????_*' ) + find_opts=( -name '.*' -type d -prune -o \( -name '._cfg????_*' -o -name '*.rpmnew' \) ) fi find_opts+=( ! -name '.*~' ! -iname '.*.bak' -print ) @@ -93,7 +93,8 @@ scan() { for file in $(find "${path}"/ "${find_opts[@]}" | sed \ -e 's://*:/:g' \ - -e "s:\(^.*/\)\(\._cfg[0-9]*_\)\(.*$\):\1\2\3$b\1$b\2$b\3:" | + -e "s:\(^.*/\)\(\._cfg[0-9]*_\)\(.*$\):\1\2\3$b\1$b\2$b\3:" \ + -e "s:\(^.*/\)\(.*\)\(\.rpmnew\):\1\2\3$b\1$b\3$b\2:" | sort -t"$b" -k2,2 -k4,4 -k3,3 | LC_ALL=C cut -f1 -d"$b") do @@ -101,7 +102,8 @@ scan() { rpath=${file%/*} rfile=${file##*/} cfg_file="${rpath}/${rfile}" - live_file="${rpath}/${rfile:10}" + live_file="${cfg_file%.rpmnew}" + [[ "${live_file}" != "${cfg_file}" ]] || live_file="${rpath}/${rfile:10}" local mpath for mpath in ${CONFIG_PROTECT_MASK}; do @@ -620,17 +622,25 @@ while [[ -n $1 ]] ; do done ${SET_X} && set -x -type portageq >/dev/null || die "missing portageq" -portage_vars=( - CONFIG_PROTECT{,_MASK} - PORTAGE_CONFIGROOT - PORTAGE_INST_{G,U}ID - PORTAGE_TMPDIR - EROOT - USERLAND - NOCOLOR -) -eval $(portageq envvar -v ${portage_vars[@]}) +if type portageq 2>/dev/null; then + portage_vars=( + CONFIG_PROTECT{,_MASK} + PORTAGE_CONFIGROOT + PORTAGE_INST_{G,U}ID + PORTAGE_TMPDIR + EROOT + USERLAND + NOCOLOR + ) + eval $(portageq envvar -v ${portage_vars[@]}) +else + [[ ! -f /etc/gentoo-release ]] || die "missing portageq" + PORTAGE_CONFIGROOT='/' + PORTAGE_TMPDIR='/tmp' + CONFIG_PROTECT='/etc' + CONFIG_PROTECT_MASK='' + [[ ! -f /etc/sysconfig/etc-update ]] || . /etc/sysconfig/etc-update +fi export PORTAGE_TMPDIR SCAN_PATHS=${*:-${CONFIG_PROTECT}}