blob: 7021109e273e1b45649159405d14e1f27fe4a7fe [file] [log] [blame]
#!/system/bin/sh
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Android shell script to make the destination directory identical with the
# source directory, without doing unnecessary copies. This assumes that the
# the destination directory was originally a copy of the source directory, and
# has since been modified.
source=$1
dest=$2
echo copying $source to $dest
delete_extra() {
# Don't delete symbolic links, since doing so deletes the vital lib link.
if [ ! -L "$1" ]
then
if [ ! -e "$source/$1" ]
then
echo rm -rf "$dest/$1"
rm -rf "$dest/$1"
elif [ -d "$1" ]
then
for f in "$1"/*
do
delete_extra "$f"
done
fi
fi
}
copy_if_older() {
if [ -d "$1" ] && [ -e "$dest/$1" ]
then
if [ ! -e "$dest/$1" ]
then
echo cp -a "$1" "$dest/$1"
cp -a "$1" "$dest/$1"
else
for f in "$1"/*
do
copy_if_older "$f"
done
fi
elif [ ! -e "$dest/$1" ] || [ "$1" -ot "$dest/$1" ] || [ "$1" -nt "$dest/$1" ]
then
# dates are different, so either the destination of the source has changed.
echo cp -a "$1" "$dest/$1"
cp -a "$1" "$dest/$1"
fi
}
if [ -e "$dest" ]
then
echo cd "$dest"
cd "$dest"
for f in ./*
do
if [ -e "$f" ]
then
delete_extra "$f"
fi
done
else
echo mkdir "$dest"
mkdir "$dest"
fi
echo cd "$source"
cd "$source"
for f in ./*
do
if [ -e "$f" ]
then
copy_if_older "$f"
fi
done