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