|
|
@ -91,6 +91,11 @@ plMD5Checksum::plMD5Checksum( const char *fileName ) |
|
|
|
CalcFromFile( fileName ); |
|
|
|
CalcFromFile( fileName ); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
plMD5Checksum::plMD5Checksum( hsStream* stream ) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
CalcFromStream(stream); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void plMD5Checksum::Clear() |
|
|
|
void plMD5Checksum::Clear() |
|
|
|
{ |
|
|
|
{ |
|
|
|
memset( fChecksum, 0, sizeof( fChecksum ) ); |
|
|
|
memset( fChecksum, 0, sizeof( fChecksum ) ); |
|
|
@ -99,23 +104,30 @@ void plMD5Checksum::Clear() |
|
|
|
|
|
|
|
|
|
|
|
void plMD5Checksum::CalcFromFile( const char *fileName ) |
|
|
|
void plMD5Checksum::CalcFromFile( const char *fileName ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
FILE *fp; |
|
|
|
hsUNIXStream s; |
|
|
|
fValid = false; |
|
|
|
fValid = false; |
|
|
|
|
|
|
|
|
|
|
|
if( fp = fopen(fileName, "rb" ) ) |
|
|
|
if( s.Open(fileName) ) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
CalcFromStream(&s); |
|
|
|
|
|
|
|
s.Close(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void plMD5Checksum::CalcFromStream( hsStream* stream ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
UInt32 sPos = stream->GetPosition(); |
|
|
|
unsigned loadLen = 1024 * 1024; |
|
|
|
unsigned loadLen = 1024 * 1024; |
|
|
|
Start(); |
|
|
|
Start(); |
|
|
|
|
|
|
|
|
|
|
|
UInt8 *buf = TRACKED_NEW UInt8[loadLen]; |
|
|
|
UInt8 *buf = TRACKED_NEW UInt8[loadLen]; |
|
|
|
|
|
|
|
|
|
|
|
while(int read = fread(buf, sizeof(UInt8), loadLen, fp)) |
|
|
|
while(int read = stream->Read(loadLen, buf)) |
|
|
|
AddTo( read, buf ); |
|
|
|
AddTo( read, buf ); |
|
|
|
delete[] buf; |
|
|
|
delete[] buf; |
|
|
|
|
|
|
|
|
|
|
|
Finish(); |
|
|
|
Finish(); |
|
|
|
fclose(fp); |
|
|
|
stream->SetPosition(sPos); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void plMD5Checksum::Start( void ) |
|
|
|
void plMD5Checksum::Start( void ) |
|
|
|