diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-16 03:30:01 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-03-16 03:30:01 +0000 |
commit | 2bb561ea5f96f8b6edd622be16be89ee6af3cd7e (patch) | |
tree | 28a8858a3698a70a24b559fc46b52bb1d212f440 /tool | |
parent | 40819d4599203e324cab5c6beea33cfb09a6ddfc (diff) |
* common.mk (REVISION_H): keeps timestamp of revision.h.
[ruby-core:22900]
* tool/ifchange, win32/ifchange.bat: extended --timestamp option.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool')
-rwxr-xr-x | tool/ifchange | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/tool/ifchange b/tool/ifchange index 8bfca26703..ca2ea40644 100755 --- a/tool/ifchange +++ b/tool/ifchange @@ -1,11 +1,22 @@ #!/bin/sh # usage: ifchange target temporary -unset timestamp -if [ "$1" = --timestamp ]; then - timestamp=yes +timestamp= +until [ "$0" = 0 ]; do + case "$1" in + --timestamp) + timestamp=. + ;; + --timestamp=*) + timestamp="${1#*=}" || timestamp=`expr "$1" : '[^=]*=\(.*\)'` + ;; + *) + break + ;; + esac shift -fi +done + target="$1" temp="$2" if [ "$temp" = - ]; then @@ -13,6 +24,7 @@ if [ "$temp" = - ]; then cat > "$temp" || exit $? trap 'rm -f "$temp"' 0 fi + if cmp "$target" "$temp" >/dev/null 2>&1; then echo "$target unchanged" rm -f "$temp" @@ -20,6 +32,18 @@ else echo "$target updated" mv -f "$temp" "$target" fi -if [ $timestamp ]; then - touch `dirname "$target"`/.time.`basename "$target"` + +if [ -n "${timestamp}" ]; then + if [ x"${timestamp}" = x. ]; then + case "$target" in + */*) + timestamp="${target%/*}"/.time."${target##*/}" || + timestamp=`dirname "$target"`/.time.`basename "$target"` + ;; + *) + timestamp=.time."$target" + ;; + esac + fi + : > "$timestamp" fi |