2009-07-03 13:40 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/filesys.c
! fixed typo in recent modification
* harbour/include/hbchksum.h
* harbour/source/rtl/hbadler.c
* harbour/source/rtl/hbcrc.c
* harbour/source/rtl/hbmd5.c
* changed passed parameter from 'const char *' to 'const void *' to
eliminate explicit casting in user code
This commit is contained in:
@@ -17,6 +17,17 @@
|
||||
past entries belonging to author(s): Viktor Szakats.
|
||||
*/
|
||||
|
||||
2009-07-03 13:40 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/source/rtl/filesys.c
|
||||
! fixed typo in recent modification
|
||||
|
||||
* harbour/include/hbchksum.h
|
||||
* harbour/source/rtl/hbadler.c
|
||||
* harbour/source/rtl/hbcrc.c
|
||||
* harbour/source/rtl/hbmd5.c
|
||||
* changed passed parameter from 'const char *' to 'const void *' to
|
||||
eliminate explicit casting in user code
|
||||
|
||||
2009-07-03 13:35 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* bin/postinst.bat
|
||||
! Fixed recently added copy command for DOS builds.
|
||||
|
||||
@@ -54,12 +54,12 @@
|
||||
|
||||
HB_EXTERN_BEGIN
|
||||
|
||||
extern HB_EXPORT ULONG hb_adler32( ULONG adler, const char *buf, ULONG len );
|
||||
extern HB_EXPORT ULONG hb_crc16( ULONG crc, const char *buf, ULONG len );
|
||||
extern HB_EXPORT ULONG hb_crc32( ULONG crc, const char *buf, ULONG len );
|
||||
extern HB_EXPORT HB_ULONG hb_crc( HB_ULONG crc, const char * buf, ULONG len, HB_ULONG poly );
|
||||
extern HB_EXPORT HB_ULONG hb_crcct( HB_ULONG crc, const char * buf, ULONG len, HB_ULONG poly );
|
||||
extern HB_EXPORT void hb_md5( const char * ucData, ULONG ulLen, char * ucDigest );
|
||||
extern HB_EXPORT void hb_md5file( HB_FHANDLE hFile, char * ucDigest );
|
||||
extern HB_EXPORT ULONG hb_adler32( ULONG adler, const void *buf, ULONG len );
|
||||
extern HB_EXPORT ULONG hb_crc16( ULONG crc, const void *buf, ULONG len );
|
||||
extern HB_EXPORT ULONG hb_crc32( ULONG crc, const void *buf, ULONG len );
|
||||
extern HB_EXPORT HB_ULONG hb_crc( HB_ULONG crc, const void * buf, ULONG len, HB_ULONG poly );
|
||||
extern HB_EXPORT HB_ULONG hb_crcct( HB_ULONG crc, const void * buf, ULONG len, HB_ULONG poly );
|
||||
extern HB_EXPORT void hb_md5( const void * data, ULONG datalen, char * digest );
|
||||
extern HB_EXPORT void hb_md5file( HB_FHANDLE hFile, char * digest );
|
||||
|
||||
HB_EXTERN_END
|
||||
|
||||
@@ -1695,7 +1695,7 @@ ULONG hb_fsReadAt( HB_FHANDLE hFileHandle, void * pBuff, ULONG ulCount, HB_FOFFS
|
||||
ulOffsetHigh = ( ULONG ) ( llOffset >> 32 );
|
||||
ulOffsetLow = SetFilePointer( DosToWinHandle( hFileHandle ),
|
||||
ulOffsetLow, ( PLONG ) &ulOffsetHigh,
|
||||
( DWORD ) Flags );
|
||||
SEEK_SET );
|
||||
llPos = ( ( HB_FOFFSET ) ulOffsetHigh << 32 ) | ulOffsetLow;
|
||||
if( llPos == ( HB_FOFFSET ) INVALID_SET_FILE_POINTER )
|
||||
hb_fsSetIOError( FALSE, 0 );
|
||||
@@ -1714,7 +1714,7 @@ ULONG hb_fsReadAt( HB_FHANDLE hFileHandle, void * pBuff, ULONG ulCount, HB_FOFFS
|
||||
llPos = lseek64( hFileHandle, llOffset, SEEK_SET );
|
||||
# elif defined(HB_OS_OS2)
|
||||
ULONG ulPos;
|
||||
if( DosSetFilePtr( hFileHandle, lOffset, Flags, &ulPos ) == 0 )
|
||||
if( DosSetFilePtr( hFileHandle, lOffset, SEEK_SET, &ulPos ) == 0 )
|
||||
llPos = ( HB_FOFFSET ) ulPos;
|
||||
else
|
||||
llPos = ( HB_FOFFSET ) -1;
|
||||
@@ -1789,7 +1789,7 @@ ULONG hb_fsWriteAt( HB_FHANDLE hFileHandle, const void * pBuff, ULONG ulCount, H
|
||||
ulOffsetHigh = ( ULONG ) ( llOffset >> 32 );
|
||||
ulOffsetLow = SetFilePointer( DosToWinHandle( hFileHandle ),
|
||||
ulOffsetLow, ( PLONG ) &ulOffsetHigh,
|
||||
( DWORD ) Flags );
|
||||
SEEK_SET );
|
||||
llPos = ( ( HB_FOFFSET ) ulOffsetHigh << 32 ) | ulOffsetLow;
|
||||
if( llPos == ( HB_FOFFSET ) INVALID_SET_FILE_POINTER )
|
||||
hb_fsSetIOError( FALSE, 0 );
|
||||
@@ -1808,7 +1808,7 @@ ULONG hb_fsWriteAt( HB_FHANDLE hFileHandle, const void * pBuff, ULONG ulCount, H
|
||||
llPos = lseek64( hFileHandle, llOffset, SEEK_SET );
|
||||
# elif defined(HB_OS_OS2)
|
||||
ULONG ulPos;
|
||||
if( DosSetFilePtr( hFileHandle, lOffset, Flags, &ulPos ) == 0 )
|
||||
if( DosSetFilePtr( hFileHandle, lOffset, SEEK_SET, &ulPos ) == 0 )
|
||||
llPos = ( HB_FOFFSET ) ulPos;
|
||||
else
|
||||
llPos = ( HB_FOFFSET ) -1;
|
||||
|
||||
@@ -59,20 +59,21 @@
|
||||
#define BASE 65521 /* largest prime smaller than 65536 */
|
||||
#define NMAX 5552 /* largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
|
||||
|
||||
ULONG hb_adler32( ULONG adler, const char *buf, ULONG len )
|
||||
ULONG hb_adler32( ULONG adler, const void *buf, ULONG len )
|
||||
{
|
||||
ULONG s1 = adler & 0xffff;
|
||||
ULONG s2 = ( adler >> 16 ) & 0xffff;
|
||||
|
||||
if( buf && len )
|
||||
{
|
||||
const unsigned char * ucbuf = ( const unsigned char * ) buf;
|
||||
do
|
||||
{
|
||||
int i = len < NMAX ? len : NMAX;
|
||||
len -= i;
|
||||
do
|
||||
{
|
||||
s1 += ( UCHAR ) *buf++;
|
||||
s1 += *ucbuf++;
|
||||
s2 += s1;
|
||||
}
|
||||
while( --i );
|
||||
|
||||
@@ -149,34 +149,37 @@ static const ULONG crc16_tab[] =
|
||||
};
|
||||
|
||||
|
||||
ULONG hb_crc32( ULONG crc, const char *buf, ULONG len )
|
||||
ULONG hb_crc32( ULONG crc, const void *buf, ULONG len )
|
||||
{
|
||||
crc ^= 0xffffffffL;
|
||||
if( buf && len )
|
||||
{
|
||||
const unsigned char * ucbuf = ( const unsigned char * ) buf;
|
||||
do
|
||||
crc = crc32_tab[ ( crc ^ ( UCHAR ) *buf++ ) & 0xFF ] ^ ( crc >> 8 );
|
||||
crc = crc32_tab[ ( crc ^ *ucbuf++ ) & 0xFF ] ^ ( crc >> 8 );
|
||||
while( --len );
|
||||
}
|
||||
return crc ^ 0xffffffffL;
|
||||
}
|
||||
|
||||
ULONG hb_crc16( ULONG crc, const char *buf, ULONG len )
|
||||
ULONG hb_crc16( ULONG crc, const void *buf, ULONG len )
|
||||
{
|
||||
crc ^= 0xffff;
|
||||
if( buf && len )
|
||||
{
|
||||
const unsigned char * ucbuf = ( const unsigned char * ) buf;
|
||||
do
|
||||
crc = crc16_tab[ ( crc ^ ( UCHAR ) *buf++ ) & 0xFF ] ^ ( crc >> 8 );
|
||||
crc = crc16_tab[ ( crc ^ *ucbuf++ ) & 0xFF ] ^ ( crc >> 8 );
|
||||
while( --len );
|
||||
}
|
||||
return crc ^ 0xffff;
|
||||
}
|
||||
|
||||
HB_ULONG hb_crc( HB_ULONG crc, const char * buf, ULONG len, HB_ULONG poly )
|
||||
HB_ULONG hb_crc( HB_ULONG crc, const void * buf, ULONG len, HB_ULONG poly )
|
||||
{
|
||||
if( buf && len )
|
||||
{
|
||||
const unsigned char * ucbuf = ( const unsigned char * ) buf;
|
||||
HB_ULONG mask = 1, revp = 0;
|
||||
|
||||
while( poly > 1 )
|
||||
@@ -190,7 +193,7 @@ HB_ULONG hb_crc( HB_ULONG crc, const char * buf, ULONG len, HB_ULONG poly )
|
||||
crc ^= --mask;
|
||||
do
|
||||
{
|
||||
HB_ULONG b = ( crc ^ ( UCHAR ) *buf++ ) & 0xFF;
|
||||
HB_ULONG b = ( crc ^ *ucbuf++ ) & 0xFF;
|
||||
int i = 8;
|
||||
do
|
||||
b = b & 1 ? revp ^ ( b >> 1 ) : b >> 1;
|
||||
@@ -203,10 +206,11 @@ HB_ULONG hb_crc( HB_ULONG crc, const char * buf, ULONG len, HB_ULONG poly )
|
||||
return crc;
|
||||
}
|
||||
|
||||
HB_ULONG hb_crcct( HB_ULONG crc, const char * buf, ULONG len, HB_ULONG poly )
|
||||
HB_ULONG hb_crcct( HB_ULONG crc, const void * buf, ULONG len, HB_ULONG poly )
|
||||
{
|
||||
if( buf && len )
|
||||
{
|
||||
const unsigned char * ucbuf = ( const unsigned char * ) buf;
|
||||
HB_ULONG mask, revp = poly;
|
||||
int bits = 0;
|
||||
|
||||
@@ -217,7 +221,7 @@ HB_ULONG hb_crcct( HB_ULONG crc, const char * buf, ULONG len, HB_ULONG poly )
|
||||
do
|
||||
{
|
||||
int i = 8;
|
||||
crc ^= ( HB_ULONG ) ( ( UCHAR ) *buf++ ) << bits;
|
||||
crc ^= ( HB_ULONG ) ( *ucbuf++ ) << bits;
|
||||
do
|
||||
crc = crc & mask ? poly ^ ( crc << 1 ) : crc << 1;
|
||||
while( --i );
|
||||
|
||||
@@ -79,7 +79,7 @@ PRG functions:
|
||||
|
||||
C functions:
|
||||
|
||||
void hb_md5( const char * data, ULONG datalen, char * digest )
|
||||
void hb_md5( void char * data, ULONG datalen, char * digest )
|
||||
Parameters:
|
||||
data - input byte stream
|
||||
datalen - input stream length
|
||||
@@ -274,8 +274,9 @@ static void hb_md5digest( const char * md5val, char * digest )
|
||||
}
|
||||
}
|
||||
|
||||
void hb_md5( const char * ucData, ULONG ulLen, char * ucDigest )
|
||||
void hb_md5( const void * data, ULONG ulLen, char * digest )
|
||||
{
|
||||
const unsigned char * ucdata = ( const unsigned char * ) data;
|
||||
UCHAR buf[ 128 ];
|
||||
MD5_BUF md5;
|
||||
int i, n;
|
||||
@@ -285,15 +286,15 @@ void hb_md5( const char * ucData, ULONG ulLen, char * ucDigest )
|
||||
/* count full 512bit blocks in data*/
|
||||
n = ulLen >> 6;
|
||||
/* process full blocks */
|
||||
for( i = 0; i < n; i++, ucData += 64 )
|
||||
for( i = 0; i < n; i++, ucdata += 64 )
|
||||
{
|
||||
memcpy( md5.buf, ucData, 64 );
|
||||
memcpy( md5.buf, ucdata, 64 );
|
||||
hb_md5go( &md5 );
|
||||
}
|
||||
/* prepare additional block(s) */
|
||||
n = ulLen & 63;
|
||||
if( n )
|
||||
memcpy( buf, ucData, n );
|
||||
memcpy( buf, ucdata, n );
|
||||
memcpy( buf + n, pad, 64 );
|
||||
/* count bits length */
|
||||
i = 56;
|
||||
@@ -313,10 +314,10 @@ void hb_md5( const char * ucData, ULONG ulLen, char * ucDigest )
|
||||
memcpy( md5.buf, buf + i - 64, 64 );
|
||||
hb_md5go( &md5 );
|
||||
/* write digest */
|
||||
hb_md5val( md5.accum, ucDigest );
|
||||
hb_md5val( md5.accum, digest );
|
||||
}
|
||||
|
||||
void hb_md5file( HB_FHANDLE hFile, char * ucDigest )
|
||||
void hb_md5file( HB_FHANDLE hFile, char * digest )
|
||||
{
|
||||
MD5_BUF md5;
|
||||
ULONG n;
|
||||
@@ -366,7 +367,7 @@ void hb_md5file( HB_FHANDLE hFile, char * ucDigest )
|
||||
}
|
||||
memcpy( md5.buf, buf + i - 64, 64 );
|
||||
hb_md5go( &md5 );
|
||||
hb_md5val( md5.accum, ucDigest );
|
||||
hb_md5val( md5.accum, digest );
|
||||
hb_xfree( readbuf );
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user