diff options
Diffstat (limited to 'jni/ruby/tool/ifchange')
| -rwxr-xr-x | jni/ruby/tool/ifchange | 61 | 
1 files changed, 61 insertions, 0 deletions
diff --git a/jni/ruby/tool/ifchange b/jni/ruby/tool/ifchange new file mode 100755 index 0000000..488e9db --- /dev/null +++ b/jni/ruby/tool/ifchange @@ -0,0 +1,61 @@ +#!/bin/sh +# usage: ifchange target temporary + +set -e +timestamp= +keepsuffix= +empty= +until [ $# -eq 0 ]; do +    case "$1" in +	--timestamp) +	    timestamp=. +	    ;; +	--timestamp=*) +	    timestamp=`expr \( "$1" : '[^=]*=\(.*\)' \)` +	    ;; +	--keep) +	    keepsuffix=.old +	    ;; +	--keep=*) +	    keepsuffix=`expr \( "$1" : '[^=]*=\(.*\)' \)` +	    ;; +	--empty) +	    empty=yes +	    ;; +	*) +	    break +	    ;; +    esac +    shift +done + +target="$1" +temp="$2" +if [ "$temp" = - ]; then +    temp="tmpdata$$.tmp~" +    cat > "$temp" || exit $? +    trap 'rm -f "$temp"' 0 +fi + +if [ -f "$target" -a ! -${empty:+f}${empty:-s} "$temp" ] || cmp "$target" "$temp" >/dev/null 2>&1; then +    echo "$target unchanged" +    rm -f "$temp" +else +    echo "$target updated" +    [ x"${keepsuffix}" = x ] || mv -f "$target" "${target}${keepsuffix}" +    mv -f "$temp" "$target" +fi + +if [ -n "${timestamp}" ]; then +    if [ x"${timestamp}" = x. ]; then +	case "$target" in +	    */*) +		timestamp=`dirname "$target"`/.time.`basename "$target"` +		;; +	    *) +		timestamp=.time."$target" +		;; +	esac +    fi +    : > "$timestamp" +fi  | 
