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()