From 6cc3c4d02e04e18856210903c18ae4ebb2778a57 Mon Sep 17 00:00:00 2001 From: Antonio Carlos Pantaglione Date: Wed, 9 Jul 2003 02:09:32 +0000 Subject: [PATCH] RDD_ADS: sync with xHarbour. --- harbour/ChangeLog | 13 ++++++++++++- harbour/contrib/rdd_ads/ace.h | 2 +- harbour/contrib/rdd_ads/ads1.c | 20 ++++++++++---------- harbour/contrib/rdd_ads/adsfunc.c | 27 ++++++++++++++------------- 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index e5972604f8..49be737861 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,9 +8,20 @@ 2002-12-01 23:12 UTC+0100 Foo Bar */ +2003-07-08 23:00 UTC-0300 Antonio Carlos Pantaglione + ! Sync with changes made in xHarbour by Walter Negro + * contrib/rdd_ads/ace.h + ! Fix warning in declaration of function + * contrib/rdd_ads/ads1.c + * contrib/rdd_ads/adsfunc.c + ! Fix error and potential error of AE_INSUFFICIENT_BUFFER in + some functions. + The len of buffer should include the NULL char. + ! Fix, now adsGoTo() test if the new position is EOF. + 2003-07-08 14:25 UTC-0300 Antonio Carlos Pantaglione * contrib/rdd_ads/ads1.c - ! Fixed: deleted() return TRUE when is at eof() + ! Fixed: deleted() return TRUE when is at eof(), borrow from xHarbour. 2003-07-08 11:27 UTC+0300 Chen Kedem * doc/en/lang.txt diff --git a/harbour/contrib/rdd_ads/ace.h b/harbour/contrib/rdd_ads/ace.h index fdb9a72203..307199c553 100644 --- a/harbour/contrib/rdd_ads/ace.h +++ b/harbour/contrib/rdd_ads/ace.h @@ -382,7 +382,7 @@ #define AE_DD_UNSUPPORTED_DEPLOYMENT 5166 #define AE_INFO_AUTO_CREATION_OCCURRED 5168 #define AE_INFO_COPY_MADE_BY_CLIENT 5169 -#define AE_DATABASE_REQUIRE_NEW_SERVER 5170 +#define AE_DATABASE_REQUIRES_NEW_SERVER 5170 /* Available OEM Languages (for Clipper compatibility) */ #define ADS_LANG_USA "USA" diff --git a/harbour/contrib/rdd_ads/ads1.c b/harbour/contrib/rdd_ads/ads1.c index 293e53da12..1f4c078209 100644 --- a/harbour/contrib/rdd_ads/ads1.c +++ b/harbour/contrib/rdd_ads/ads1.c @@ -68,7 +68,7 @@ static ERRCODE adsRecCount( ADSAREAP pArea, ULONG * pRecCount ); static ERRCODE adsScopeInfo( ADSAREAP pArea, USHORT nScope, PHB_ITEM pItem ); static ERRCODE adsSetScope( ADSAREAP pArea, LPDBORDSCOPEINFO sInfo ); -static iSetListenerHandle; +static int iSetListenerHandle; HB_FUNC( _ADS ); HB_FUNC( ADS_GETFUNCTABLE ); @@ -89,6 +89,7 @@ HB_INIT_SYMBOLS_BEGIN( ads1__InitSymbols ) { "_ADS", HB_FS_PUBLIC, HB_FUNCNAME( _ADS ), NULL }, { "ADS_GETFUNCTABLE", HB_FS_PUBLIC, HB_FUNCNAME( ADS_GETFUNCTABLE ), NULL } HB_INIT_SYMBOLS_END( ads1__InitSymbols ) + #if defined(_MSC_VER) #if _MSC_VER >= 1010 #pragma data_seg( ".CRT$XIY" ) @@ -494,6 +495,7 @@ static ERRCODE adsGoTo( ADSAREAP pArea, ULONG ulRecNo ) pArea->ulRecNo = ulRecNo; pArea->fBof = pArea->fEof = FALSE; ulRetVal = AdsGotoRecord( pArea->hTable, ulRecNo ); + AdsAtEOF( pArea->hTable, (UNSIGNED16 *)&(pArea->fEof) ); /* hb_adsCheckBofEof( pArea ); // bh: GoTo should never do the skipfilter that may happen in hb_adsCheckBofEof */ } else /* GoTo Phantom record */ @@ -1118,7 +1120,7 @@ static ERRCODE adsGetValue( ADSAREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) break; case HB_IT_LONG: - pulLength = pArea->maxFieldLen; + pulLength = pArea->maxFieldLen + 1; if (AdsGetField( pArea->hTable, szName, pBuffer, &pulLength, ADS_NONE ) == AE_NO_CURRENT_RECORD ) { memset( pBuffer, ' ', pField->uiLen ); @@ -1153,10 +1155,10 @@ static ERRCODE adsGetValue( ADSAREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) case HB_IT_DATE: { UNSIGNED8 pucFormat[ 11 ]; - UNSIGNED16 pusLen = 10; + UNSIGNED16 pusLen = 11; AdsGetDateFormat ( pucFormat, &pusLen ); AdsSetDateFormat ( (UNSIGNED8*)"YYYYMMDD" ); - pulLength = pArea->maxFieldLen; + pulLength = pArea->maxFieldLen + 1; if (AdsGetField( pArea->hTable, szName, pBuffer, &pulLength, ADS_NONE ) == AE_NO_CURRENT_RECORD ) { memset( pBuffer, ' ', pField->uiLen ); @@ -1524,7 +1526,7 @@ static ERRCODE adsInfo( ADSAREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) break; case DBI_GETHEADERSIZE: - if( !pArea->uiHeaderLen && pArea->iFileType!=ADS_ADT ) + if( !pArea->uiHeaderLen && pArea->iFileType != ADS_ADT ) pArea->uiHeaderLen = 32 + pArea->uiFieldCount * 32 + 2; hb_itemPutNL( pItem, pArea->uiHeaderLen ); break; @@ -1597,13 +1599,13 @@ static ERRCODE adsInfo( ADSAREAP pArea, USHORT uiIndex, PHB_ITEM pItem ) UNSIGNED8 ucLetter; UNSIGNED8 ucDesc[128]; UNSIGNED16 usDescLen = sizeof(ucDesc) - 1; - char ucVersion[256]; + UNSIGNED8 ucVersion[256]; AdsGetVersion( &ulMajor, &ulMinor, &ucLetter, ucDesc, &usDescLen); - sprintf(ucVersion, "%s, v%ld.%ld%c", (char *)ucDesc, ulMajor, ulMinor, ucLetter); + sprintf(( char *) ucVersion, "%s, v%ld.%ld%c", ucDesc, ulMajor, ulMinor, ucLetter); - hb_itemPutC( pItem, ucVersion ); + hb_itemPutC( pItem, ( char *) ucVersion ); break; } @@ -1694,7 +1696,6 @@ static ERRCODE adsOpen( ADSAREAP pArea, LPDBOPENINFO pOpenInfo ) { if ( ulRetVal != 1001 ) /* && ulRetVal != 7008 ) */ /* 1001 and 7008 are standard ADS Open Errors that will usually be sharing issues */ commonError( pArea, EG_OPEN, ( USHORT ) ulRetVal, ( char * ) pOpenInfo->abName ); - return FAILURE; /* just set neterr */ } @@ -1944,7 +1945,6 @@ static ERRCODE adsOrderListClear( ADSAREAP pArea ) AdsCloseAllIndexes ( pArea->hTable ); pArea->hOrdCurrent = 0; - return SUCCESS; } diff --git a/harbour/contrib/rdd_ads/adsfunc.c b/harbour/contrib/rdd_ads/adsfunc.c index 19a0602342..3c9ebeace4 100644 --- a/harbour/contrib/rdd_ads/adsfunc.c +++ b/harbour/contrib/rdd_ads/adsfunc.c @@ -103,7 +103,7 @@ HB_FUNC( ADSSETSERVERTYPE ) HB_FUNC( ADSSETDATEFORMAT ) { UNSIGNED8 pucFormat[16]; - UNSIGNED16 pusLen = 15; + UNSIGNED16 pusLen = 16; hb_retc( ""); AdsGetDateFormat (pucFormat, &pusLen); @@ -246,11 +246,11 @@ HB_FUNC( ADSSETCHARTYPE ) HB_FUNC( ADSSETDEFAULT ) { UNSIGNED8 pucDefault[ MAX_STR_LEN+1]; - UNSIGNED16 pusLen = MAX_STR_LEN; + UNSIGNED16 pusLen = MAX_STR_LEN+1; AdsGetDefault( pucDefault, &pusLen); - hb_retclen( (char*)pucDefault, pusLen ); + hb_retclen( ( char * ) pucDefault, pusLen ); if( ISCHAR(1) ) AdsSetDefault( (UNSIGNED8*) hb_parc( 1 ) ); @@ -261,11 +261,11 @@ HB_FUNC( ADSSETDEFAULT ) HB_FUNC( ADSSETSEARCHPATH ) { UNSIGNED8 pucPath[ MAX_STR_LEN+1]; - UNSIGNED16 pusLen = MAX_STR_LEN; + UNSIGNED16 pusLen = MAX_STR_LEN+1; AdsGetSearchPath( pucPath, &pusLen); - hb_retclen( (char*)pucPath, pusLen ); + hb_retclen( ( char *) pucPath, pusLen ); if( ISCHAR(1) ) AdsSetSearchPath( (UNSIGNED8*) hb_parc( 1 ) ); @@ -398,7 +398,7 @@ HB_FUNC( ADSKEYCOUNT ) ADSHANDLE hIndex; UNSIGNED16 usFilterOption = ADS_IGNOREFILTERS; UNSIGNED8 pucScope[ ADS_MAX_KEY_LENGTH+1 ]; - UNSIGNED16 pusBufLen = ADS_MAX_KEY_LENGTH; + UNSIGNED16 pusBufLen = ADS_MAX_KEY_LENGTH+1; pArea = (ADSAREAP) hb_rddGetCurrentWorkAreaPointer(); if( pArea ) @@ -579,7 +579,7 @@ HB_FUNC( ADSGETTABLEALIAS ) { ADSAREAP pArea; UNSIGNED8 pucAlias[HARBOUR_MAX_RDD_ALIAS_LENGTH +1]; - UNSIGNED16 pusLen = HARBOUR_MAX_RDD_ALIAS_LENGTH; + UNSIGNED16 pusLen = HARBOUR_MAX_RDD_ALIAS_LENGTH+1; UNSIGNED32 ulRetVal = FAILURE; pArea = (ADSAREAP) hb_rddGetCurrentWorkAreaPointer(); @@ -599,7 +599,7 @@ HB_FUNC( ADSGETAOF ) ADSAREAP pArea; UNSIGNED8 pucFilter[HARBOUR_MAX_RDD_FILTER_LENGTH+1]; UNSIGNED8 *pucFilter2; - UNSIGNED16 pusLen = HARBOUR_MAX_RDD_FILTER_LENGTH; + UNSIGNED16 pusLen = HARBOUR_MAX_RDD_FILTER_LENGTH+1; UNSIGNED32 ulRetVal; hb_retc( "" ); @@ -649,7 +649,7 @@ HB_FUNC( ADSGETAOFNOOPT ) UNSIGNED16 pusOptLevel; UNSIGNED8 pucNonOpt[HARBOUR_MAX_RDD_FILTER_LENGTH+1]; UNSIGNED8 *pucNonOpt2; - UNSIGNED16 pusLen = HARBOUR_MAX_RDD_FILTER_LENGTH; + UNSIGNED16 pusLen = HARBOUR_MAX_RDD_FILTER_LENGTH+1; UNSIGNED32 ulRetVal; pArea = (ADSAREAP) hb_rddGetCurrentWorkAreaPointer(); @@ -743,7 +743,7 @@ HB_FUNC( ADSGETFILTER ) ADSAREAP pArea; UNSIGNED8 pucFilter[HARBOUR_MAX_RDD_FILTER_LENGTH+1]; UNSIGNED8 *pucFilter2; - UNSIGNED16 pusLen = HARBOUR_MAX_RDD_FILTER_LENGTH; + UNSIGNED16 pusLen = HARBOUR_MAX_RDD_FILTER_LENGTH+1; UNSIGNED32 ulRetVal; hb_retc( "" ); @@ -1337,7 +1337,7 @@ HB_FUNC(ADSADDTABLE) hb_retl(0); } -HB_FUNC(ADSADDUSERTOGROUP) +HB_FUNC( ADSADDUSERTOGROUP ) { UNSIGNED32 ulRetVal; UNSIGNED8 *pGroup = hb_parc( 1 ); @@ -1353,7 +1353,7 @@ HB_FUNC(ADSADDUSERTOGROUP) hb_retl(0); } -HB_FUNC(ADSUSEDICTIONARY) +HB_FUNC( ADSUSEDICTIONARY ) { BOOL bOld = bDictionary; if ( ISLOG( 1 ) ) @@ -1364,7 +1364,7 @@ HB_FUNC(ADSUSEDICTIONARY) #endif -HB_FUNC(ADSVERSION) +HB_FUNC( ADSVERSION ) { int iVersionType = ISNUM(1) ? hb_parni(1) : 0; UNSIGNED32 ulMajor; @@ -1390,3 +1390,4 @@ HB_FUNC(ADSVERSION) hb_retc(ucVersion); } +