* endian fixes

This commit is contained in:
Jonas Maebe 2003-05-24 13:37:10 +00:00
parent ff12c6c54f
commit f85bec0291

View File

@ -242,6 +242,7 @@ implementation
{$ifdef Test_Double_checksum}
comphook,
{$endif def Test_Double_checksum}
systems,
crc;
{*****************************************************************************
@ -718,22 +719,20 @@ begin
{ update size (w/o header!) in the header }
header.size:=bufstart-sizeof(tppuheader);
{ set the endian flag }
{$IFDEF SOURCE_BIG_ENDIAN}
header.flags := header.flags or uf_big_endian;
{$ENDIF}
{$IFDEF SOURCE_LITTLE_ENDIAN}
header.flags := header.flags or uf_little_endian;
{$ENDIF}
{ Now swap the header in the correct endian (always little endian) }
{$IFDEF SOURCE_BIG_ENDIAN}
header.compiler := SwapWord(header.compiler);
header.cpu := SwapWord(header.cpu);
header.target := SwapWord(header.target);
header.flags := SwapLong(header.flags);
header.size := SwapLong(header.size);
header.checksum := SwapLong(header.checksum);
header.interface_checksum := SwapLong(header.interface_checksum);
{$ENDIF}
if source_info.endian = endian_little then
header.flags := header.flags or uf_little_endian
else
begin
header.flags := header.flags or uf_big_endian;
{ Now swap the header in the correct endian (always little endian) }
header.compiler := SwapWord(header.compiler);
header.cpu := SwapWord(header.cpu);
header.target := SwapWord(header.target);
header.flags := SwapLong(header.flags);
header.size := SwapLong(header.size);
header.checksum := SwapLong(header.checksum);
header.interface_checksum := SwapLong(header.interface_checksum);
end;
{ write header and restore filepos after it }
opos:=filepos(f);
seek(f,0);
@ -986,7 +985,10 @@ end;
end.
{
$Log$
Revision 1.35 2003-05-23 17:03:51 peter
Revision 1.36 2003-05-24 13:37:10 jonas
* endian fixes
Revision 1.35 2003/05/23 17:03:51 peter
* write header for crc_only
Revision 1.34 2003/04/25 20:59:34 peter