@echo off
CD /D "%~dp0"
echo #####################
echo ### Pn8 Patch     ###
echo ### v0.2          ###
echo ### by Pikanet128 ###
echo #####################
rem ### xdelta is not mine
rem ### i just made the batch handeler
rem ################################################################################
if exist "settings.ini" For /F "tokens=*" %%A in (settings.ini) do %%A
if not exist "settings.ini" if exist "bin\settings.ini" For /F "tokens=*" %%A in (bin\settings.ini) do %%A
if "%noquery%"=="True" goto nextA
rem ################################################################################

:loop_Q
echo Enter file?
set /P q=y/n: 
if /I not "%q%"=="y" goto nextB
echo.
echo.
echo no quotes please
echo Old file?
set /P i=: 
echo.
echo New file?
set /P o=: 
echo.
echo Patch file?
set /P p=: 
echo.
echo.
call :buf

goto loop_Q
:nextB
set make=
set apply=
set q=
echo Make or Apply?
set /P q=make/m/apply/a: 
if not "%q%"=="" if /I "%q:~0,1%"=="m" set make=True
if not "%q%"=="" if /I "%q:~0,1%"=="a" set apply=True
echo.

:nextA
rem ################################################################################
if exist "preset.ini" For /F "tokens=*" %%A in (preset.ini) do %%A
if not exist "preset.ini" if exist "bin\preset.ini" For /F "tokens=*" %%A in (bin\preset.ini) do %%A
rem ################################################################################

call :bufpro %buf%
if "%nolog%"=="True" del pn8patch.log
if not "%nopause%"=="True" pause
goto :EOF


:bufpro
:loop_A
if "%make%"=="True" call :makepro "%~1" "%~2" "%~3"
if "%apply%"=="True" call :applypro "%~1" "%~3" "%~2"
Shift /1
Shift /1
Shift /1
echo.
echo.
echo.
if not "%~1"=="" goto loop_A
goto :EOF

:applypro
echo start apply of "%~3"
echo start apply of "%~3">>pn8patch.log
if not exist "%~1" call :errorA "%~1"& goto :EOF
if not exist "%~2" call :errorA "%~2"& goto :EOF
if exist "%~3" call :errorB "%~3"
if "%r%"=="True" echo "%~3" overwrite accepted running
if "%r%"=="True" echo "%~3" overwrite accepted running>>pn8patch.log
if "%r%"=="False" echo "%~3" overwrite denied skipping
if "%r%"=="False" echo "%~3" overwrite denied skipping>>pn8patch.log
if "%r%"=="False" goto :EOF

%bin%xdelta3 -d -vfs "%~1" "%~2" "%~3"
if "%errorlevel%"=="0" echo "%~3" Created sucsessfully
if "%errorlevel%"=="0" echo "%~3" Created sucsessfully>>pn8patch.log
if not "%errorlevel%"=="0" echo "%~3" Creation Failed
if not "%errorlevel%"=="0" echo "%~3" Creation Failed>>pn8patch.log
if "%errorlevel%"=="0" if "%recycleoldver%"=="True" %bin%recycle "%~1"
if "%errorlevel%"=="0" if "%recycleoldver%"=="True" echo Recycled "%~1"
if "%errorlevel%"=="0" if "%recycleoldver%"=="True" echo Recycled "%~1">>pn8patch.log
echo end apply of "%~3"
echo end apply of "%~3">>pn8patch.log
echo.>>pn8patch.log
echo.>>pn8patch.log
echo.
echo.
goto :EOF


:makepro
echo start make of "%~3"
echo start make of "%~3">>pn8patch.log
if not exist "%~1" call :errorA "%~1"& goto :EOF
if not exist "%~2" call :errorA "%~2"& goto :EOF
if exist "%~3" call :errorB "%~3"
if "%r%"=="True" echo "%~3" overwrite accepted running
if "%r%"=="True" echo "%~3" overwrite accepted running>>pn8patch.log
if "%r%"=="False" echo "%~3" overwrite denied skipping
if "%r%"=="False" echo "%~3" overwrite denied skipping>>pn8patch.log
if "%r%"=="False" goto :EOF

%bin%xdelta3 -e -vfs "%~1" "%~2" "%~3"
if "%errorlevel%"=="0" echo "%~3" Created sucsessfully
if "%errorlevel%"=="0" echo "%~3" Created sucsessfully>>pn8patch.log
if not "%errorlevel%"=="0" echo "%~3" Creation Failed
if not "%errorlevel%"=="0" echo "%~3" Creation Failed>>pn8patch.log
echo end make of "%~3"
echo end make of "%~3">>pn8patch.log
echo.>>pn8patch.log
echo.>>pn8patch.log
echo.
echo.
goto :EOF


:errorA
echo Can't find file 
echo "%~1"
echo.
echo skipping
echo Can't find file "%~1" skipping>>pn8patch.log
goto :EOF

:errorB
echo File exists 
echo "%~1"
echo.
echo File exists "%~1">>pn8patch.log
set q=
echo Overwrite?
set /p q=y/n: 
set r=
if /I not "%q%"=="y" set r=False
if /I "%q%"=="y" set r=True
goto :EOF


:buf
if "%buf1%"=="" set buf=&set buf1=False
if "%i%"=="" echo bad old file input
if "%o%"=="" echo bad new file input
if "%p%"=="" echo bad patch file input
if "%i%"=="" echo bad old file input>>pn8patch.log
if "%o%"=="" echo bad new file input>>pn8patch.log
if "%p%"=="" echo bad patch file input>>pn8patch.log
if "%i%"=="" goto :EOF
if "%o%"=="" goto :EOF
if "%p%"=="" goto :EOF
set buf=%buf%"%i%" "%o%" "%patchfilesdir%%p%" 
set i=
set o=
set p=
goto :EOF

