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:
Przemyslaw Czerpak
2009-07-03 11:40:29 +00:00
parent 8d4718d48f
commit 973d1336e0
6 changed files with 46 additions and 29 deletions

View File

@@ -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.

View File

@@ -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

View File

@@ -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;

View File

@@ -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 );

View File

@@ -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 );

View File

@@ -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 );
}