- still_present=
- for f2 in $new_files; do
- case "$f2" in
- build-aux/*) g2=`echo "$f2" | sed -e "s,^build-aux/,$auxdir/,"` ;;
- lib/*) g2=`echo "$f2" | sed -e "s,^lib/,$sourcebase/,"` ;;
- m4/*) g2=`echo "$f2" | sed -e "s,^m4/,$m4base/,"` ;;
- *) g2="$f2" ;;
- esac
- if test "$g2" = "$g1"; then
- still_present=true
- break
- fi
- done
- if test -z "$still_present"; then
- # Remove the file. Do nothing if the user already removed it.
- if test -f "$destdir/$g1"; then
- echo "Removing file $g1 (backup in ${g1}~)"
- test -n "$dry_run" && dry=echo
- $dry mv -f "$destdir/$g1" "$destdir/${g1}~" || func_fatal_error "failed"
+ echo "$g""$delimiter""$f"
+ done | LC_ALL=C sort > "$tmp"/old-files
+ for f in $new_files; do
+ case "$f" in
+ build-aux/*) g=`echo "$f" | sed -e "s,^build-aux/,$auxdir/,"` ;;
+ lib/*) g=`echo "$f" | sed -e "s,^lib/,$sourcebase/,"` ;;
+ m4/*) g=`echo "$f" | sed -e "s,^m4/,$m4base/,"` ;;
+ *) g="$f" ;;
+ esac
+ echo "$g""$delimiter""$f"
+ done | LC_ALL=C sort > "$tmp"/new-files
+ # First the files that are in old-files, but not in new-files:
+ for g in `LC_ALL=C join -t"$delimiter" -v1 "$tmp"/old-files "$tmp"/new-files | sed -e 's,'"$delimiter"'.*,,'`; do
+ # Remove the file. Do nothing if the user already removed it.
+ if test -f "$destdir/$g"; then
+ if $doit; then
+ echo "Removing file $g (backup in ${g}~)"
+ mv -f "$destdir/$g" "$destdir/${g}~" || func_fatal_error "failed"
+ else
+ echo "Remove file $g (backup in ${g}~)"