summaryrefslogtreecommitdiff
path: root/jni/ruby/tool/ifchange
diff options
context:
space:
mode:
Diffstat (limited to 'jni/ruby/tool/ifchange')
-rwxr-xr-xjni/ruby/tool/ifchange61
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