VPatch 2.0 final
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2798 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
2449fbc6bd
commit
6dd280b24f
22 changed files with 3566 additions and 14 deletions
125
Contrib/VPatch/Source/GenPat/GenPat2.dpr
Normal file
125
Contrib/VPatch/Source/GenPat/GenPat2.dpr
Normal file
|
@ -0,0 +1,125 @@
|
|||
program GenPat2;
|
||||
|
||||
{
|
||||
VPatch 2 - Patch Generator
|
||||
===============================
|
||||
|
||||
(c) 2001-2003 Van de Sande Productions
|
||||
|
||||
This is the main program unit for the commandline version. It implements
|
||||
commandline options (like /b=) and displays help if no options are given.
|
||||
|
||||
What's new
|
||||
----------
|
||||
2.0 20030811 Koen Initial documentation
|
||||
}
|
||||
|
||||
{$APPTYPE CONSOLE}
|
||||
uses
|
||||
PatchGenerator in 'PatchGenerator.pas',
|
||||
VDSP_CRC in 'VDSP_CRC.pas',
|
||||
Sysutils,
|
||||
TreeCode in 'TreeCode.pas';
|
||||
|
||||
type
|
||||
TEventHandler = class
|
||||
procedure PrintDebug(S: String);
|
||||
end;
|
||||
|
||||
procedure TEventhandler.PrintDebug(S: String);
|
||||
begin
|
||||
WriteLn(S);
|
||||
end;
|
||||
|
||||
{$DEFINE READCONFIG} //try to read genpat.ini?
|
||||
{.$DEFINE AUTOWAIT} //have /wait command line switch on by default?
|
||||
//useful when debugging
|
||||
|
||||
var
|
||||
Config: TextFile;
|
||||
T1,T2: TDateTime;
|
||||
d: Integer;
|
||||
S,Key: String;
|
||||
ShowDebug: Boolean;
|
||||
PG: TPatchGenerator;
|
||||
EV: TEventHandler;
|
||||
begin
|
||||
EV:=TEventHandler.Create;
|
||||
PG:=TPatchGenerator.Create;
|
||||
PG.StartBlockSize:=64;
|
||||
|
||||
WriteLn('GenPat v2.0 final');
|
||||
WriteLn('=================');
|
||||
WriteLn;
|
||||
WriteLn('(c) 2001-2003 Van de Sande Productions');
|
||||
WriteLn('Website: http://www.tibed.net/vpatch');
|
||||
WriteLn('E-mail: koen@tibed.net');
|
||||
WriteLn;
|
||||
ShowDebug:=FindCmdLineSwitch('debug',['/'],True);
|
||||
if ShowDebug then
|
||||
DebugEvent:=EV.PrintDebug;
|
||||
|
||||
{$IFDEF READCONFIG}
|
||||
if FileExists('genpat.ini') then begin
|
||||
AssignFile(Config,'genpat.ini');
|
||||
Reset(Config);
|
||||
while not eof(Config) do begin
|
||||
ReadLn(Config,S);
|
||||
d:=Pos('=',S);
|
||||
if not (d=0) then begin
|
||||
Key:=LowerCase(Copy(S,1,d-1));
|
||||
S:=Copy(S,d+1,Length(S));
|
||||
if CompareStr(Key,'startblocksize')=0 then PG.StartBlockSize:=StrToInt(S);
|
||||
end;
|
||||
end;
|
||||
CloseFile(Config);
|
||||
end;
|
||||
{$ENDIF}
|
||||
for d:=1 to ParamCount do begin
|
||||
if CompareStr(LowerCase(Copy(ParamStr(d),1,3)),'/b=')=0 then begin
|
||||
PG.StartBlockSize:=StrToInt(Copy(ParamStr(d),4,10));
|
||||
end;
|
||||
end;
|
||||
|
||||
if (CompareStr(ParamStr(1),'')=0) or (CompareStr(ParamStr(2),'')=0) or (CompareStr(ParamStr(3),'')=0) then begin
|
||||
WriteLn('This program will take (sourcefile) as input and create a (patchfile).');
|
||||
WriteLn('With this patchfile, you can convert a (sourcefile) into (targetfile).');
|
||||
WriteLn;
|
||||
WriteLn('Command line info:');
|
||||
WriteLn(' GENPAT (sourcefile) (targetfile) (patchfile)');
|
||||
WriteLn;
|
||||
WriteLn('Command line options (you do not need them):');
|
||||
WriteLn('/B=(BlockSize) Set blocksize (def=64), multiple of 2');
|
||||
WriteLn('/WAIT Wait for a keypress after program complete');
|
||||
WriteLn('/DEBUG Show runtime debug information');
|
||||
WriteLn('Note: all these parameters must be *after* the filenames!');
|
||||
WriteLn;
|
||||
Write('Press a enter to exit ');
|
||||
ReadLn(S);
|
||||
Exit;
|
||||
end;
|
||||
|
||||
if FileExists(ParamStr(3)) then begin
|
||||
WriteLn('Using existing file to include patches in: '+ParamStr(3));
|
||||
PG.LoadFromFile(ParamStr(3));
|
||||
end;
|
||||
|
||||
T1:=Now;
|
||||
WriteLn('Patch body size: '+IntToStr(PG.CreatePatch(ParamStr(1),ParamStr(2))));
|
||||
PG.WriteToFile(ParamStr(3));
|
||||
|
||||
T2:=Now;
|
||||
Write('GenPat.exe finished execution in: ');
|
||||
WriteLn(FloatToStr((T2-T1)*24*60*60),'s');
|
||||
WriteLn;
|
||||
{$IFNDEF AUTOWAIT}
|
||||
if FindCmdLineSwitch('wait',['/'],True) then begin
|
||||
{$ENDIF}
|
||||
WriteLn;
|
||||
WriteLn('Press a key');
|
||||
ReadLn(S);
|
||||
{$IFNDEF AUTOWAIT}
|
||||
end;
|
||||
{$ENDIF}
|
||||
PG.Free;
|
||||
end.
|
Loading…
Add table
Add a link
Reference in a new issue