1. SCons
  2. Core
  3. SCons

Source

SCons / src / script / scons.bat

Diff from to

File src/script/scons.bat

 @REM __COPYRIGHT__
 @REM __FILE__ __REVISION__ __DATE__ __DEVELOPER__
 @echo off
+set SCONS_ERRORLEVEL=
 if "%OS%" == "Windows_NT" goto WinNT
-REM for 9x/Me you better not have more than 9 args
+
+@REM for 9x/Me you better not have more than 9 args
 python -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-__VERSION__'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons-__VERSION__'), join(sys.prefix, 'scons')] + sys.path; import SCons.Script; SCons.Script.main()" %1 %2 %3 %4 %5 %6 %7 %8 %9
 @REM no way to set exit status of this script for 9x/Me
 goto endscons
+
+@REM Credit where credit is due:  we return the exit code despite our
+@REM use of setlocal+endlocal using a technique from Bear's Journal:
+@REM http://code-bear.com/bearlog/2007/06/01/getting-the-exit-code-from-a-batch-file-that-is-run-from-a-python-program/
+
 :WinNT
 setlocal
 @REM ensure the script will be executed with the Python it was installed for
 set path=%~dp0;%~dp0..;%path%
 python -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-__VERSION__'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons-__VERSION__'), join(sys.prefix, 'scons')] + sys.path; import SCons.Script; SCons.Script.main()" %*
-if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endsconsnt
+endlocal & set SCONS_ERRORLEVEL=%ERRORLEVEL%
+
+if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto returncode
 if errorlevel 9009 echo you do not have python in your PATH
-@REM color 00 causes this script to exit with non-zero exit status
-if errorlevel 1 color 00
-:endsconsnt
-endlocal
+goto endscons
+
+:returncode
+exit /B %SCONS_ERRORLEVEL%
+
 :endscons
+call :returncode %SCONS_ERRORLEVEL%