@echo off
@setlocal ENABLEDELAYEDEXPANSION
echo.
echo Checking for the leap seconds table...
if "%CDF_LEAPSECONDSTABLE%"=="" (
  echo CDF_LEAPSECONDSTABLE environment variable is not defined...
  echo Internal hard-coded leap seconds table may be used...
  if "%CDF_BASE%" NEQ "" (
    @echo.
    for /f "delims=" %%a in ('"%CDF_BASE%\bin\cdfleapsecondsinfo.exe" -nodump') do @set result=%%a
    for /f "tokens=13 delims= " %%a in ("!result!") do @set local_leap=%%a
    for /f "tokens=1 delims=-" %%a in ("!local_leap!") do @set lyear=%%a
    for /f "tokens=2 delims=-" %%a in ("!local_leap!") do @set lmonth=%%a
    for /f "tokens=3 delims=-" %%a in ("!local_leap!") do @set lday=%%a
    for /f "delims=" %%a in ('echo "%CDF_BASE%\bin"') do @set ls_folder=%%~dpa
    if !ls_folder:~-1!==\ @set ls_folder=!ls_folder:~0,-1!
  ) else (
    @echo.
    set /p ls_folder=Enter the latest installed CDF directory: 
    if exist "!ls_folder!\bin\cdfleapsecondsinfo.exe" (
      set PATH="!ls_folder!\bin;!ls_folder!\lib;%path%"
      for /f "delims=" %%a in ('"!ls_folder!\bin\cdfleapsecondsinfo.exe" -nodump') do @set result=%%a
      for /f "tokens=13 delims= " %%a in ("!result!") do @set local_leap=%%a
      for /f "tokens=1 delims=-" %%a in ("!local_leap!") do @set lyear=%%a
      for /f "tokens=2 delims=-" %%a in ("!local_leap!") do @set lmonth=%%a
      for /f "tokens=3 delims=-" %%a in ("!local_leap!") do @set lday=%%a
    ) else (
      echo Error... CDF installation not found in !ls_folder!.
      exit /b 0
    )
  )
) else (
  rem for /f "delims=" %%a in ('echo "%CDF_LEAPSECONDSTABLE%"') do @set ls_folder=%%~dpa
  @set ls_folder=!CDF_BASE!
  @set runtail="!CDF_BASE!\bin\tail" -1 "!CDF_LEAPSECONDSTABLE!"
  @set lastone='"!runtail!"'
  for /f "delims=" %%a in (!lastone!) do @set lastline=%%a
  for /f "tokens=1 delims= " %%a in ("!lastline!") do @set lyear=%%a
  for /f "tokens=2 delims= " %%a in ("!lastline!") do @set lmonth=%%a
  for /f "tokens=3 delims= " %%a in ("!lastline!") do @set lday=%%a
)

@set LSfile=%TEMP%\CDFLeapSeconds.txt
powershell -c "Invoke-WebRequest -Uri 'https://cdf.gsfc.nasa.gov/html/CDFLeapSeconds.txt' -OutFile %LSfile%"
FOR /F "usebackq" %%A IN ('%LSfile%') DO set lssize=%%~zA
if %lssize% EQU 0 (
  echo Error... Unable to get the remote https://cdf.gsfc.nasa.gov/html/CDFLeapSeconds.txt.
  exit /b 0
)
set CYGWIN=nodosfilewarning
for /f "delims=" %%a in ('"!ls_folder!\bin\tail" -1 %LSfile%') do @set lastline=%%a
for /f "tokens=1 delims= " %%a in ("!lastline!") do @set ryear=%%a
for /f "tokens=2 delims= " %%a in ("!lastline!") do @set rmonth=%%a
for /f "tokens=3 delims= " %%a in ("!lastline!") do @set rday=%%a
set /a localdate = !lyear!*10000+!lmonth!*100+!lday!
set /a remotedate = !ryear!*10000+!rmonth!*100+!rday!
if %localdate% equ %remotedate% goto goodone
if %localdate% lss %remotedate% goto needupdate
if %localdate% gtr %remotedate% goto newupdate
goto end
:needupdate
  echo.
  echo   A newer leap second(s) had been added to CDFLeapSeconds.txt at the CDF
  echo   home page. Please update your CDF installation that includes the latest
  echo   CDFLeapSeconds.txt from https://cdf.gsfc.nasa.gov.
  goto end
:newupdate
  echo.
  echo   Local CDFLeapSeconds.txt has a newer leap second (or more) than the
  echo   one at the CDF home page.
  goto end
:goodone
  echo.
  if "%ls_folder%"=="" (
    echo   Hard-coded CDFLeapSeconds.txt is up-to-date.
  ) else (
    echo   Local CDFLeapSeconds.txt in "%ls_folder%" is up-to-date.
  )
:end
@endlocal
