home *** CD-ROM | disk | FTP | other *** search
- program VAppend;
-
- {$APPTYPE CONSOLE}
-
- uses
- SysUtils;
-
- var
- fs, fo: File;
- Patch: String;
- OutFile: String = 'VPATCH.EXE';
- Runtime: String = 'VPATCH.BIN';
- o: LongWord;
- Buf: Array[0..4095] of Byte;
- Size, BufSize: Integer;
-
- begin
- WriteLn('VAppend v2.0');
- WriteLn('============');
- WriteLn;
- WriteLn('(c) 2001-2002 Van de Sande Productions');
- WriteLn('Website: http://www.tibed.net/vpatch');
- WriteLn('E-mail: koen@tibed.net');
- WriteLn;
- if ParamCount = 0 then begin
- WriteLn('Use this program to append .PAT files to the VPatch runtime.');
- WriteLn;
- WriteLn(' VAPPEND (patch file) [output file] [runtime]');
- WriteLn;
- WriteLn('By default, the output file is VPATCH.EXE and the runtime is VPATCH.BIN');
- end;
- if not FileExists(ParamStr(1)) then begin
- WriteLn('ERROR: Patch file not found');
- Exit;
- end;
- Patch := ParamStr(1);
- if ParamCount > 1 then OutFile := ParamStr(2);
- if ParamCount > 2 then Runtime := ParamStr(3);
- WriteLn('Patch: '+Patch);
- WriteLn('Runtime: '+Runtime);
- WriteLn('Output: '+OutFile);
-
- AssignFile(fo,OutFile);
- Rewrite(fo,1);
- //copy the runtime
- AssignFile(fs,Runtime);
- FileMode:=fmOpenRead;
- Reset(fs,1);
- BufSize:=4096;
- o:=FileSize(fs); //patch start offset
- Size:=FileSize(fs);
- while Size>0 do begin
- if Size-BufSize<0 then BufSize:=Size;
- BlockRead(fs,Buf,BufSize);
- BlockWrite(fo,Buf,BufSize);
- Dec(Size,BufSize);
- end;
- CloseFile(fs);
- //do the patch
- AssignFile(fs,Patch);
- FileMode:=fmOpenRead;
- Reset(fs,1);
- BufSize:=4096;
- Size:=FileSize(fs);
- while Size>0 do begin
- if Size-BufSize<0 then BufSize:=Size;
- BlockRead(fs,Buf,BufSize);
- BlockWrite(fo,Buf,BufSize);
- Dec(Size,BufSize);
- end;
- CloseFile(fs);
-
- BlockWrite(fo,o,SizeOf(o));
- CloseFile(fo);
- WriteLn('Created.');
- end.
-