tazlito rev 392

tazlito: mergefs(): try to process filenames with spaces
author Aleksej Bobylev <al.bobylev@gmail.com>
date Mon Nov 16 02:45:04 2015 +0200 (2015-11-16)
parents 2bdb7937e1fa
children 4005ec4ef32e
files tazlito
line diff
     1.1 --- a/tazlito	Mon Nov 16 01:31:30 2015 +0200
     1.2 +++ b/tazlito	Mon Nov 16 02:45:04 2015 +0200
     1.3 @@ -531,40 +531,44 @@
     1.4  # Remove duplicate files
     1.5  mergefs()
     1.6  {
     1.7 -	echo -n "Merge $(basename $1) ($(du -hs $1 | awk '{ print $1}')) into "
     1.8 -	echo -n       "$(basename $2) ($(du -hs $2 | awk '{ print $1}'))"
     1.9 +	# Note, many packages have files with spaces in the name
    1.10 +	IFS=$'\n'
    1.11 +
    1.12 +	echo -n "Merge $(basename "$1") ($(du -hs "$1" | awk '{ print $1}')) into "
    1.13 +	echo -n       "$(basename "$2") ($(du -hs "$2" | awk '{ print $1}'))"
    1.14  	# merge symlinks files and devices
    1.15 -	( cd $1; find ) | while read file; do
    1.16 -		if [ -L $1/$file ]; then
    1.17 -			[ -L $2/$file ] &&
    1.18 -			[ "$(readlink $1/$file)" == "$(readlink $2/$file)" ] &&
    1.19 -			rm -f $2/$file
    1.20 -		elif [ -f $1/$file ]; then
    1.21 -			[ -f $2/$file ] &&
    1.22 -			cmp $1/$file $2/$file > /dev/null 2>&1 && rm -f $2/$file
    1.23 -			[ -f $2/$file ] &&
    1.24 -			[ "$(basename $file)" == "volatile.cpio.gz" ] &&
    1.25 -			[ "$(dirname $(dirname $file))" == \
    1.26 -			  ".$INSTALLED" ] && rm -f $2/$file
    1.27 -		elif [ -b $1/$file ]; then
    1.28 -			[ -b $2/$file ] &&
    1.29 -			[ "$(stat -c '%a:%u:%g:%t:%T' $1/$file)" == \
    1.30 -			  "$(stat -c '%a:%u:%g:%t:%T' $2/$file)" ] &&
    1.31 -			rm -f $2/$file
    1.32 -		elif [ -c $1/$file ]; then
    1.33 -			[ -c $2/$file ] &&
    1.34 -			[ "$(stat -c '%a:%u:%g:%t:%T' $1/$file)" == \
    1.35 -			  "$(stat -c '%a:%u:%g:%t:%T' $2/$file)" ] &&
    1.36 -			rm -f $2/$file
    1.37 +	( cd "$1"; find ) | while read file; do
    1.38 +		if [ -L "$1/$file" ]; then
    1.39 +			[ -L "$2/$file" ] &&
    1.40 +			[ "$(readlink "$1/$file")" == "$(readlink "$2/$file")" ] &&
    1.41 +			rm -f "$2/$file"
    1.42 +		elif [ -f "$1/$file" ]; then
    1.43 +			[ -f "$2/$file" ] &&
    1.44 +			cmp "$1/$file" "$2/$file" >/dev/null 2>&1 && rm -f "$2/$file"
    1.45 +			[ -f "$2/$file" ] &&
    1.46 +			[ "$(basename "$file")" == 'volatile.cpio.gz' ] &&
    1.47 +			[ "$(dirname $(dirname "$file"))" == \
    1.48 +			  ".$INSTALLED" ] && rm -f "$2/$file"
    1.49 +		elif [ -b "$1/$file" ]; then
    1.50 +			[ -b "$2/$file" ] &&
    1.51 +			[ "$(stat -c '%a:%u:%g:%t:%T' "$1/$file")" == \
    1.52 +			  "$(stat -c '%a:%u:%g:%t:%T' "$2/$file")" ] &&
    1.53 +			rm -f "$2/$file"
    1.54 +		elif [ -c "$1/$file" ]; then
    1.55 +			[ -c "$2/$file" ] &&
    1.56 +			[ "$(stat -c '%a:%u:%g:%t:%T' "$1/$file")" == \
    1.57 +			  "$(stat -c '%a:%u:%g:%t:%T' "$2/$file")" ] &&
    1.58 +			rm -f "$2/$file"
    1.59  		fi
    1.60  	done
    1.61  
    1.62  	# cleanup directories
    1.63 -	( cd $1; find . -type d ) | sed '1!G;h;$!d' | while read file; do
    1.64 -		[ -d $2/$file ] && rmdir $2/$file 2> /dev/null
    1.65 +	( cd "$1"; find . -type d ) | sed '1!G;h;$!d' | while read file; do
    1.66 +		[ -d "$2/$file" ] && rmdir "$2/$file" 2>/dev/null
    1.67  	done
    1.68  	true
    1.69  	status
    1.70 +	unset IFS
    1.71  }
    1.72  
    1.73  cleanup_merge()