Browse Source

Generate CRC for package files

pcp.pas, tpcpfile:
  + new field do_crc which controls CRC generation
  + override putdata() method to generate CRC when data is written
  * resetfile: enable do_crc by default

git-svn-id: branches/svenbarth/packages@32136 -
svenbarth 9 năm trước cách đây
mục cha
commit
fa2e4a8955
1 tập tin đã thay đổi với 16 bổ sung0 xóa
  1. 16 0
      compiler/pcp.pas

+ 16 - 0
compiler/pcp.pas

@@ -59,6 +59,7 @@ interface
       header : tpcpheader;
       { crc for the entire package }
       crc : cardinal;
+      do_crc : boolean;
     protected
       function getheadersize:longint;override;
       function getheaderaddr:pentryheader;override;
@@ -68,10 +69,14 @@ interface
     public
       procedure writeheader;override;
       function checkpcpid:boolean;
+      procedure putdata(const b;len:integer);override;
     end;
 
 implementation
 
+uses
+  fpccrc;
+
   { tpcpfile }
 
   function tpcpfile.getheadersize: longint;
@@ -142,6 +147,7 @@ implementation
   procedure tpcpfile.resetfile;
     begin
       crc:=0;
+      do_crc:=true;
     end;
 
 
@@ -184,5 +190,15 @@ implementation
     end;
 
 
+  procedure tpcpfile.putdata(const b;len:integer);
+    begin
+      if do_crc then
+        begin
+          crc:=UpdateCrc32(crc,b,len);
+        end;
+      inherited putdata(b, len);
+    end;
+
+
 end.