anchor.diff:  :#                              modes; Log it always.                         #
   :#                              Useful to display commands in cases where     #
   :#                              %EXEC% can't be used, like in for ('cmd') ... #
  +:#                  %IF_EXEC%   Execute a command if _not_ in NOEXEC mode     #
   :#                  %IF_NOEXEC% Execute a command in NOEXEC mode only         #
   :#                                                                            #
   :#  Variables       %LOGFILE%	Log file name.                                #
  
positive.code: :# Find Microsoft 32 or 64-bits development tools
  
  :find32
  %FUNCTION% find32 %*
  call :findvc32 WIN32 x86 VS32 VC32
  call :findsdk -Platform %PROC%
  if not defined VC32 %RETURN%
  goto :find32.common
  
  :find95
  %FUNCTION% find95 %*
  call :findvc95 WIN95 x86 VS95 VC95
  call :findsdk -Platform %PROC% -Max 7.1a
  if not defined VC95 %RETURN%
  goto :find32.common
  
  :findia64
  %FUNCTION% findia64 %*
  call :findvc32 IA64 IA64 VSIA64 VCIA64
  call :findsdk -Platform %PROC%
  if not defined VCIA64 %RETURN%
  goto :find32.common
  
  :find64
  %FUNCTION% find64 %*
  call :findvc32 WIN64 amd64 VS64 VC64
  call :findsdk -Platform x64 &:# Unfortunately this one is named differently in VC and WinSDK
  if not defined VC64 %RETURN%
  goto :find32.common
  
  :findarm
  %FUNCTION% findarm %*
  call :findvc32 ARM arm VSARM VCARM
  call :findsdk -Platform %PROC%
  if not defined VCARM %RETURN%
  goto :find32.common
  
  :findarm64
  %FUNCTION% findarm64 %*
  call :findvc32 ARM64 arm64 VSARM64 VCARM64
  call :findsdk -Platform %PROC%
  if not defined VCARM64 %RETURN%
  goto :find32.common
  
  :FindUCRT
  %FUNCTION% FindUCRT %*
  set "UCRT="
  set "UCRT.VER="
  :# Search new Windows Kits.
  
negative.code: set PATH16=%MSVC%\bin;%PATH0%
  set PATH32=%MSVC32%\bin;%VSIDE%;%VSTOOLS%;%PATH0%
  set PATH64=%MSVC32%\bin\amd64;%VSIDE%\amd64;%VSTOOLS%\amd64;%PATH0%
  
  :# Find the conv.exe tool, that we use for some builds
  :# set "CONV="
  :# for /f "delims=" %%p in ('where conv.exe') do @if not defined CONV set "CONV=%%p"
  :# for %%p in (WIN32\conv.exe WIN64\conv.exe) do @if not defined CONV set "CONV=%%p"
  
  :# Get the Windows system Code Page
  call :Reg.GetValue HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage ACP WIN.CP
  :# Get the corresponding Character Set
  call :Reg.GetValue HKLM\SOFTWARE\Classes\MIME\Database\Codepage\%WIN.CP% BodyCharset WIN.CS
  if not defined WIN.CS set "WIN.CS=cp%WIN.CP%"
  
  :# Get the DOS cmd.exe Code Page
  for /f "tokens=2 delims=:" %%n in ('chcp') do set "DOS.CP=%%n"
  set "DOS.CP=%DOS.CP: =%" &:# Trim spaces
  :# Get the corresponding Character Set
  call :Reg.GetValue HKLM\SOFTWARE\Classes\MIME\Database\Codepage\%DOS.CP% BodyCharset DOS.CS
  if not defined DOS.CS set "DOS.CS=cp%DOS.CP%"
  
  :# Optional chance to undo the above, or prepend something _ahead_ of them.
  if defined POST_CONFIG_ACTIONS set "POST_CONFIG_ACTIONS=%POST_CONFIG_ACTIONS:=^!%" &:# Prepare delayed variables expansion
  