summaryrefslogtreecommitdiff
path: root/trunk/win32/ifchange.bat
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 15:02:05 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 15:02:05 +0000
commit0dc342de848a642ecce8db697b8fecd83a63e117 (patch)
tree2b7ed4724aff1f86073e4740134bda9c4aac1a39 /trunk/win32/ifchange.bat
parentef70cf7138ab8034b5b806f466e4b484b24f0f88 (diff)
added tag v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/win32/ifchange.bat')
-rwxr-xr-xtrunk/win32/ifchange.bat59
1 files changed, 59 insertions, 0 deletions
diff --git a/trunk/win32/ifchange.bat b/trunk/win32/ifchange.bat
new file mode 100755
index 0000000000..8411099020
--- /dev/null
+++ b/trunk/win32/ifchange.bat
@@ -0,0 +1,59 @@
+@echo off
+:: usage: ifchange target temporary
+
+if "%1" == "" goto :end
+
+set dest=%1
+set src=%2
+set dest=%dest:/=\%
+set src=%src:/=\%
+if not "%dest%" == "" if not "%dest%" == "%%dest:/=\%%" goto :nt
+
+if not exist %2 goto :end
+
+:: check if fc.exe works.
+echo foo > conftst1.tmp
+echo bar > conftst2.tmp
+fc.exe conftst1.tmp conftst2.tmp > nul
+if not errorlevel 1 goto :brokenfc
+del conftst1.tmp > nul
+del conftst2.tmp > nul
+
+:: target does not exist or new file differs from it.
+if not exist %1 goto :update
+fc.exe %1 %2 > nul
+if errorlevel 1 goto :update
+
+:unchange
+echo %1 unchanged.
+del %2
+goto :end
+
+:brokenfc
+del conftest1.tmp > nul
+del conftest2.tmp > nul
+echo FC.EXE does not work properly.
+echo assuming %1 should be changed.
+
+:update
+echo %1 updated.
+:: if exist %1 del %1
+dir /b %2
+copy %2 %1
+del %2
+goto :end
+
+:nt
+if not exist %src% goto :end
+if exist %dest% (
+ fc.exe %dest% %src% > nul && (
+ echo %dest% unchanged.
+ del %src%
+ goto :end
+ )
+)
+echo %dest% updated.
+copy %src% %dest% > nul
+del %src%
+
+:end