| #!/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 |