From 973d1336e03afeba67deff865be05a2a6f62d048 Mon Sep 17 00:00:00 2001 From: Przemyslaw Czerpak Date: Fri, 3 Jul 2009 11:40:29 +0000 Subject: [PATCH] 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 --- harbour/ChangeLog | 11 +++++++++++ harbour/include/hbchksum.h | 14 +++++++------- harbour/source/rtl/filesys.c | 8 ++++---- harbour/source/rtl/hbadler.c | 5 +++-- harbour/source/rtl/hbcrc.c | 20 ++++++++++++-------- harbour/source/rtl/hbmd5.c | 17 +++++++++-------- 6 files changed, 46 insertions(+), 29 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 80bec6f8ec..d2d71e5147 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -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. diff --git a/harbour/include/hbchksum.h b/harbour/include/hbchksum.h index 6b2e836398..612b7106fa 100644 --- a/harbour/include/hbchksum.h +++ b/harbour/include/hbchksum.h @@ -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 diff --git a/harbour/source/rtl/filesys.c b/harbour/source/rtl/filesys.c index a519c0a10b..2479100020 100644 --- a/harbour/source/rtl/filesys.c +++ b/harbour/source/rtl/filesys.c @@ -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; diff --git a/harbour/source/rtl/hbadler.c b/harbour/source/rtl/hbadler.c index eff308de99..3585a8fc17 100644 --- a/harbour/source/rtl/hbadler.c +++ b/harbour/source/rtl/hbadler.c @@ -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 ); diff --git a/harbour/source/rtl/hbcrc.c b/harbour/source/rtl/hbcrc.c index 68ad60dfca..bbefd31bc5 100644 --- a/harbour/source/rtl/hbcrc.c +++ b/harbour/source/rtl/hbcrc.c @@ -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 ); diff --git a/harbour/source/rtl/hbmd5.c b/harbour/source/rtl/hbmd5.c index c0dc140de0..16379a33e9 100644 --- a/harbour/source/rtl/hbmd5.c +++ b/harbour/source/rtl/hbmd5.c @@ -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 ); }