From 2908118e5767124c751e8276311d7c9a077eb6fa Mon Sep 17 00:00:00 2001 From: "Alexander S.Kresin" Date: Sun, 27 Feb 2000 08:06:29 +0000 Subject: [PATCH] Updating of ADS RDD --- harbour/ChangeLog | 8 ++++++++ harbour/contrib/rdd_ads/ads1.c | 27 ++++++++++++++++++++------- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index cddf66724a..6928415300 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,11 @@ +20000227-10:58 GMT+3 Alexander Kresin + * contrib/rdd_ads/ads1.c + * Bug fixed in adsRawLock() ( code proposed by Sid Sailors ) + * adsOrderInfo() corrected, added support for ORDFOR(), ORDBAGNAME(), ORDNAME() + * source/rdd/dbcmd.c + * pInfo.ItmOrder initialized with NULL, where it is necessary + ( Victor Szel proposal ) + 20000227-08:59 GMT+2 Chen Kedem * source/rtl/binnum.c + doc for all function diff --git a/harbour/contrib/rdd_ads/ads1.c b/harbour/contrib/rdd_ads/ads1.c index 5ad92cc189..3094f31fff 100644 --- a/harbour/contrib/rdd_ads/ads1.c +++ b/harbour/contrib/rdd_ads/ads1.c @@ -989,6 +989,8 @@ static ERRCODE adsOrderInfo( ADSAREAP pArea, USHORT uiIndex, LPDBORDERINFO pOrde if( ulRetVal != AE_SUCCESS ) return FAILURE; } + else + phIndex = pArea->hOrdCurrent; switch( uiIndex ) { case DBOI_BAGEXT: @@ -999,18 +1001,25 @@ static ERRCODE adsOrderInfo( ADSAREAP pArea, USHORT uiIndex, LPDBORDERINFO pOrde AdsGetIndexExpr( phIndex, aucBuffer, &pusLen); hb_itemPutC( pOrderInfo->itmResult, aucBuffer ); break; + case DBOI_CONDITION: + AdsGetIndexCondition( phIndex, aucBuffer, &pusLen); + hb_itemPutC( pOrderInfo->itmResult, aucBuffer ); + break; + case DBOI_NAME: + AdsGetIndexName( phIndex, aucBuffer, &pusLen); + hb_itemPutC( pOrderInfo->itmResult, aucBuffer ); + break; + case DBOI_BAGNAME: + AdsGetIndexFilename ( phIndex,ADS_BASENAME , aucBuffer, &pusLen); + hb_itemPutC( pOrderInfo->itmResult, aucBuffer ); + break; case DBOI_NUMBER : { UNSIGNED16 usOrder = 0; - if( IS_STRING( pOrderInfo->itmOrder ) ) + if( phIndex ) AdsGetIndexOrderByHandle(phIndex, &usOrder); - else if( IS_STRING( pOrderInfo->itmOrder ) ) - usOrder = hb_itemGetNI( pOrderInfo->itmOrder ); else - { - if(pArea->hOrdCurrent) /* Take the active index when no index specified*/ - AdsGetIndexOrderByHandle(pArea->hOrdCurrent, &usOrder); - } + usOrder = 0; hb_itemPutNI(pOrderInfo->itmResult, usOrder); break; } @@ -1035,12 +1044,16 @@ static ERRCODE adsRawLock( ADSAREAP pArea, USHORT uiAction, ULONG lRecNo ) switch( uiAction ) { case REC_LOCK: + if( pArea->lpExtendInfo->fExclusive || pArea->lpDataInfo->fFileLocked ) + return SUCCESS; ulRetVal = AdsLockRecord( pArea->hTable, lRecNo ); if ( ulRetVal != AE_SUCCESS ) return FAILURE; break; case REC_UNLOCK: + if( pArea->lpExtendInfo->fExclusive || pArea->lpDataInfo->fFileLocked ) + return SUCCESS; ulRetVal = AdsUnlockRecord( pArea->hTable, lRecNo ); if ( ulRetVal != AE_SUCCESS ) return FAILURE;