anchor.diff:  set "EXEC.ARGS=%EXEC.ARGS: -d=%"
   set "EXEC.ARGS=%EXEC.ARGS:~1%"
   :# Optimization to speed things up in non-debug mode
  -if not defined LOGFILE set "ECHO.D=rem"
  -if .%LOGFILE%.==.NUL. set "ECHO.D=rem"
  -if not defined LOGFILE set "ECHOVARS.D=rem"
  -if .%LOGFILE%.==.NUL. set "ECHOVARS.D=rem"
  +if not defined LOGFILE set "ECHO.D=echo >NUL"
  +if .%LOGFILE%.==.NUL. set "ECHO.D=echo >NUL"
  +if not defined LOGFILE set "ECHOVARS.D=echo >NUL"
  +if .%LOGFILE%.==.NUL. set "ECHOVARS.D=echo >NUL"
   goto :eof
   
   :Debug.On
  
positive.code: :#   2016-11-21 JFL Fixed the "!" quoting, and added "|&<>" quoting.	      #
  :#   2018-11-19 JFL Improved routine condquote2.                              #
  :#   2019-12-13 JFL Always return 0, to avoid alarming the caller.            #
  :#                                                                            #
  :#----------------------------------------------------------------------------#
  
  :# Quote file pathnames that require it.
  :condquote	 %1=Input variable. %2=Opt. output variable.
  %FUNCTION% EnableExtensions EnableDelayedExpansion
  set "RETVAR=%~2"
  if not defined RETVAR set "RETVAR=%~1" &:# By default, change the input variable itself
  %UPVAR% %RETVAR%
  set "P=!%~1!"
  :# Remove double quotes inside P. (Fails if P is empty, so skip this in this case)
  if defined P set ^"P=!P:"=!"
  :# If the value is empty, don't go any further.
  if not defined P set "P=""" & goto :condquote_ret
  :# Look for any special character that needs "quoting". See list from (cmd /?).
  :# Added "@" that needs quoting ahead of commands.
  :# Added "|&<>" that are not valid in file names, but that do need quoting if used in an argument string.
  echo."!P!"|findstr /C:" " /C:"&" /C:"(" /C:")" /C:"[" /C:"]" /C:"{" /C:"}" /C:"^^" /C:"=" /C:";" /C:"!" /C:"'" /C:"+" /C:"," /C:"`" /C:"~" /C:"@" /C:"|" /C:"&" /C:"<" /C:">" >NUL
  if not errorlevel 1 set P="!P!"
  :condquote_ret
  set "%RETVAR%=!P!"
  %RETURN% 0
  
  :# Simpler version not using the %FUNCTION%/%RETURN% macros
  :condquote2	 %1=Input variable. %2=Opt. output variable.
  setlocal EnableExtensions Disabledelayedexpansion
  set "RETVAR=%~2"
  if not defined RETVAR set "RETVAR=%~1" &:# By default, change the input variable itself
  
negative.code: :GetFullPathName
  :CanonicName NAME VAR	:# Return the canonic absolute pathname for (maybe relative) NAME
  set "%~2=%~f1"
  exit /b
  
  :#----------------------------------------------------------------------------#
  
  :# Convert a short or long pathname to a full long pathname
  :GetLongPathname %1=PATHNAME %2=Output variable name
  setlocal EnableDelayedExpansion
  set "FULL_SHORT=%~fs1"           &:# Make sure it really is short all the way through
  set "FULL_SHORT=%FULL_SHORT:~3%" &:# Remove the drive and initial \
  set "FULL_LONG=%~d1"             &:# Begin with just the drive
  if defined FULL_SHORT for %%x in ("!FULL_SHORT:\=" "!") do ( :# Loop on all short components
    set "ATTRIB_OUTPUT=" &:# If the file does not exist, filter-out attrib.exe error message on stdout, with its - before the drive.
    for /f "delims=" %%l in ('attrib "!FULL_LONG!\%%~x" 2^>NUL ^| findstr /v /c:" - %~d1"') do set "ATTRIB_OUTPUT=%%l"
    if defined ATTRIB_OUTPUT ( :# Extract the long name from the attrib.exe output
      for %%f in ("!ATTRIB_OUTPUT:*\=\!") do set "LONG_NAME=%%~nxf"
    ) else (                   :# Use the short name (which does not exist)
      set "LONG_NAME=%%~x"
    )
    set "FULL_LONG=!FULL_LONG!\!LONG_NAME!"
  ) else set "FULL_LONG=%~d1\"
  endlocal & if not "%~2"=="" (set "%~2=%FULL_LONG%") else echo %FULL_LONG%
  exit /b
  
  :#----------------------------------------------------------------------------#
  