2009-01-05 18:20 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/source/rdd/dbsql.c
  * harbour/source/rdd/dbfntx/dbfntx1.c
  * harbour/source/rdd/dbfnsx/dbfnsx1.c
  * harbour/source/rdd/dbfcdx/dbfcdx1.c
  * harbour/contrib/rddads/ads1.c
    ! reuse the same error object when CANRETRY flag is set for valid
      TRIES member update
This commit is contained in:
Przemyslaw Czerpak
2009-01-05 17:17:35 +00:00
parent c2a1acc14c
commit 1b05bdd9b3
6 changed files with 233 additions and 143 deletions

View File

@@ -8,6 +8,15 @@
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
*/
2009-01-05 18:20 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rdd/dbsql.c
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/contrib/rddads/ads1.c
! reuse the same error object when CANRETRY flag is set for valid
TRIES member update
2009-01-05 13:33 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtcore.h
* harbour/source/rtl/hbgtcore.c

View File

@@ -149,24 +149,35 @@ static void adsSetSend( void )
}
static ERRCODE commonError( ADSAREAP pArea, USHORT uiGenCode, USHORT uiSubCode,
USHORT uiOsCode, char * szFileName, USHORT uiFlags )
USHORT uiOsCode, const char * szFileName,
USHORT uiFlags, PHB_ITEM * pErrorPtr )
{
ERRCODE errCode;
PHB_ITEM pError;
ERRCODE errCode = FAILURE;
pError = hb_errNew();
hb_errPutGenCode( pError, uiGenCode );
hb_errPutSubCode( pError, uiSubCode );
hb_errPutDescription( pError, hb_langDGetErrorDesc( uiGenCode ) );
if( uiOsCode )
hb_errPutOsCode( pError, uiOsCode );
if( szFileName )
hb_errPutFileName( pError, szFileName );
if( uiFlags )
hb_errPutFlags( pError, uiFlags );
errCode = SUPER_ERROR( ( AREAP ) pArea, pError );
hb_itemRelease( pError );
if( hb_vmRequestQuery() == 0 )
{
if( pErrorPtr )
{
if( ! *pErrorPtr )
*pErrorPtr = hb_errNew();
pError = *pErrorPtr;
}
else
pError = hb_errNew();
hb_errPutGenCode( pError, uiGenCode );
hb_errPutSubCode( pError, uiSubCode );
hb_errPutDescription( pError, hb_langDGetErrorDesc( uiGenCode ) );
if( uiOsCode )
hb_errPutOsCode( pError, uiOsCode );
if( szFileName )
hb_errPutFileName( pError, szFileName );
if( uiFlags )
hb_errPutFlags( pError, uiFlags );
errCode = SUPER_ERROR( ( AREAP ) pArea, pError );
if( !pErrorPtr )
hb_itemRelease( pError );
}
return errCode;
}
@@ -388,7 +399,7 @@ static ERRCODE hb_adsCheckLock( ADSAREAP pArea )
}
if( !u16Locked )
{
commonError( pArea, EG_UNLOCKED, EDBF_UNLOCKED, 0, NULL, 0 );
commonError( pArea, EG_UNLOCKED, EDBF_UNLOCKED, 0, NULL, 0, NULL );
return FAILURE;
}
}
@@ -860,7 +871,7 @@ static ERRCODE adsGoToId( ADSAREAP pArea, PHB_ITEM pItem )
}
else
{
commonError( pArea, EG_DATATYPE, 1020, 0, NULL, 0 );
commonError( pArea, EG_DATATYPE, 1020, 0, NULL, 0, NULL );
return FAILURE;
}
}
@@ -899,7 +910,7 @@ static ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL bFin
if( ! pArea->hOrdCurrent )
{
commonError( pArea, EG_NOORDER, 1201, 0, NULL, EF_CANDEFAULT );
commonError( pArea, EG_NOORDER, 1201, 0, NULL, EF_CANDEFAULT, NULL );
return FAILURE;
}
@@ -946,7 +957,7 @@ static ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL bFin
}
else
{
commonError( pArea, EG_DATATYPE, 1020, 0, NULL, 0 );
commonError( pArea, EG_DATATYPE, 1020, 0, NULL, 0, NULL );
return FAILURE;
}
@@ -1335,13 +1346,13 @@ static ERRCODE adsAppend( ADSAREAP pArea, BOOL fUnLockAll )
}
else if( u32RetVal == AE_TABLE_READONLY )
{
commonError( pArea, EG_READONLY, EDBF_READONLY, 0, NULL, 0 );
commonError( pArea, EG_READONLY, EDBF_READONLY, 0, NULL, 0, NULL );
}
else
{
/* 1001 and 7008 are standard ADS Open Errors that will usually be sharing issues */
USHORT uiOsCOde = u32RetVal == 1001 || u32RetVal == 7008 ? 32 : 0;
commonError( pArea, EG_APPENDLOCK, ( USHORT ) u32RetVal, uiOsCOde, NULL, EF_CANDEFAULT );
commonError( pArea, EG_APPENDLOCK, ( USHORT ) u32RetVal, uiOsCOde, NULL, EF_CANDEFAULT, NULL );
}
return FAILURE;
@@ -2347,20 +2358,20 @@ static ERRCODE adsPutValue( ADSAREAP pArea, USHORT uiIndex, PHB_ITEM pItem )
if( bTypeError )
{
commonError( pArea, EG_DATATYPE, 1020, 0, NULL, 0 );
commonError( pArea, EG_DATATYPE, 1020, 0, NULL, 0, NULL );
return FAILURE;
}
if( ulRetVal != AE_SUCCESS )
{
if( ulRetVal == AE_LOCK_FAILED || ulRetVal == AE_RECORD_NOT_LOCKED )
commonError( pArea, EG_UNLOCKED, EDBF_UNLOCKED, 0, NULL, 0 );
commonError( pArea, EG_UNLOCKED, EDBF_UNLOCKED, 0, NULL, 0, NULL );
else if( ulRetVal == AE_TABLE_READONLY )
commonError( pArea, EG_READONLY, EDBF_READONLY, 0, NULL, 0 );
commonError( pArea, EG_READONLY, EDBF_READONLY, 0, NULL, 0, NULL );
else if( ulRetVal == AE_DATA_TOO_LONG )
commonError( pArea, EG_DATAWIDTH, EDBF_DATAWIDTH, 0, NULL, 0 );
commonError( pArea, EG_DATAWIDTH, EDBF_DATAWIDTH, 0, NULL, 0, NULL );
else
commonError( pArea, EG_WRITE, ( USHORT ) ulRetVal, 0, NULL, 0 );
commonError( pArea, EG_WRITE, ( USHORT ) ulRetVal, 0, NULL, 0, NULL );
return FAILURE;
}
@@ -2952,12 +2963,13 @@ static ERRCODE adsOpen( ADSAREAP pArea, LPDBOPENINFO pOpenInfo )
}
else
{
commonError( pArea, EG_OPEN, ( USHORT ) u32RetVal, 0, ( char * ) pOpenInfo->abName, 0 );
commonError( pArea, EG_OPEN, ( USHORT ) u32RetVal, 0, ( char * ) pOpenInfo->abName, 0, NULL );
return FAILURE;
}
}
else
{
PHB_ITEM pError = NULL;
BOOL fRetry;
/* Use an Advantage Data Dictionary
@@ -2980,14 +2992,17 @@ static ERRCODE adsOpen( ADSAREAP pArea, LPDBOPENINFO pOpenInfo )
/* 1001 and 7008 are standard ADS Open Errors that will usually be sharing issues */
USHORT uiOsCOde = u32RetVal == 1001 || u32RetVal == 7008 ? 32 : 0;
fRetry = commonError( pArea, EG_OPEN, ( USHORT ) u32RetVal, uiOsCOde,
( char * ) pOpenInfo->abName,
EF_CANRETRY | EF_CANDEFAULT ) == E_RETRY;
( const char * ) pOpenInfo->abName,
EF_CANRETRY | EF_CANDEFAULT, &pError ) == E_RETRY;
}
else
fRetry = FALSE;
}
while( fRetry );
if( pError )
hb_errRelease( pError );
if( u32RetVal != AE_SUCCESS )
return FAILURE;
}
@@ -3226,12 +3241,12 @@ static ERRCODE adsPack( ADSAREAP pArea )
if( pArea->fReadonly )
{
commonError( pArea, EG_READONLY, EDBF_READONLY, 0, NULL, 0 );
commonError( pArea, EG_READONLY, EDBF_READONLY, 0, NULL, 0, NULL );
return FAILURE;
}
if( pArea->fShared )
{
commonError( pArea, EG_SHARED, EDBF_SHARED, 0, NULL, 0 );
commonError( pArea, EG_SHARED, EDBF_SHARED, 0, NULL, 0, NULL );
return FAILURE;
}
@@ -3251,12 +3266,12 @@ static ERRCODE adsZap( ADSAREAP pArea )
if( pArea->fReadonly )
{
commonError( pArea, EG_READONLY, EDBF_READONLY, 0, NULL, 0 );
commonError( pArea, EG_READONLY, EDBF_READONLY, 0, NULL, 0, NULL );
return FAILURE;
}
if( pArea->fShared )
{
commonError( pArea, EG_SHARED, EDBF_SHARED, 0, NULL, 0 );
commonError( pArea, EG_SHARED, EDBF_SHARED, 0, NULL, 0, NULL );
return FAILURE;
}
@@ -3387,7 +3402,8 @@ static ERRCODE adsOrderListAdd( ADSAREAP pArea, LPDBORDERINFO pOrderInfo )
/* 1001 and 7008 are standard ADS Open Errors that will usually be sharing issues */
USHORT uiOsCOde = u32RetVal == 1001 || u32RetVal == 7008 ? 32 : 0;
commonError( pArea, EG_OPEN, ( USHORT ) u32RetVal, uiOsCOde,
( char * ) hb_itemGetCPtr( pOrderInfo->atomBagName ), EF_CANDEFAULT );
( char * ) hb_itemGetCPtr( pOrderInfo->atomBagName ),
EF_CANDEFAULT, NULL );
return FAILURE;
}
if( !pArea->hOrdCurrent && u16ArrayLen > 0 )
@@ -3628,7 +3644,7 @@ static ERRCODE adsOrderCreate( ADSAREAP pArea, LPDBORDERCREATEINFO pOrderInfo )
if( u32RetVal != AE_SUCCESS )
{
commonError( pArea, EG_CREATE, ( USHORT ) u32RetVal, 0, ( char * ) pOrderInfo->abBagName, 0 );
commonError( pArea, EG_CREATE, ( USHORT ) u32RetVal, 0, ( char * ) pOrderInfo->abBagName, 0, NULL );
return FAILURE;
}
else
@@ -4357,7 +4373,7 @@ static ERRCODE adsGetValueFile( ADSAREAP pArea, USHORT uiIndex, BYTE * szFile, U
( UNSIGNED8* ) szFile );
if( u32RetVal != AE_SUCCESS )
{
/* commonError( pArea, EG_READ, ( USHORT ) u32RetVal, 0, NULL, 0 ); */
/* commonError( pArea, EG_READ, ( USHORT ) u32RetVal, 0, NULL, 0, NULL ); */
return FAILURE;
}
return SUCCESS;
@@ -4394,7 +4410,7 @@ static ERRCODE adsPutValueFile( ADSAREAP pArea, USHORT uiIndex, BYTE * szFile, U
( UNSIGNED8* ) szFile );
if( u32RetVal != AE_SUCCESS )
{
commonError( pArea, EG_WRITE, ( USHORT ) u32RetVal, 0, NULL, 0 );
commonError( pArea, EG_WRITE, ( USHORT ) u32RetVal, 0, NULL, 0, NULL );
return FAILURE;
}
return SUCCESS;

View File

@@ -349,24 +349,34 @@ static void hb_cdxErrInternal( const char * szMsg )
/*
* generate Run-Time error
*/
static ERRCODE hb_cdxErrorRT( CDXAREAP pArea, USHORT uiGenCode, USHORT uiSubCode, const char * filename, USHORT uiOsCode, USHORT uiFlags )
static ERRCODE hb_cdxErrorRT( CDXAREAP pArea, USHORT uiGenCode, USHORT uiSubCode,
const char * filename, USHORT uiOsCode,
USHORT uiFlags, PHB_ITEM * pErrorPtr )
{
PHB_ITEM pError;
ERRCODE iRet = FAILURE;
if ( hb_vmRequestQuery() == 0 )
if( hb_vmRequestQuery() == 0 )
{
pError = hb_errNew();
if( pErrorPtr )
{
if( ! *pErrorPtr )
*pErrorPtr = hb_errNew();
pError = *pErrorPtr;
}
else
pError = hb_errNew();
hb_errPutGenCode( pError, uiGenCode );
hb_errPutSubCode( pError, uiSubCode );
hb_errPutOsCode( pError, uiOsCode );
hb_errPutDescription( pError, hb_langDGetErrorDesc( uiGenCode ) );
if ( filename )
if( filename )
hb_errPutFileName( pError, filename );
if ( uiFlags )
if( uiFlags )
hb_errPutFlags( pError, uiFlags );
iRet = SELF_ERROR( ( AREAP ) pArea, pError );
hb_errRelease( pError );
if( !pErrorPtr )
hb_errRelease( pError );
}
return iRet;
}
@@ -1293,7 +1303,7 @@ static BOOL hb_cdxIndexLockRead( LPCDXINDEX pIndex )
ret = hb_dbfLockIdxFile( pIndex->pFile, pIndex->pArea->bLockType,
FL_LOCK | FLX_SHARED | FLX_WAIT, &pIndex->ulLockPos );
if ( !ret )
hb_cdxErrorRT( pIndex->pArea, EG_LOCK, EDBF_LOCK, pIndex->szFileName, hb_fsError(), 0 );
hb_cdxErrorRT( pIndex->pArea, EG_LOCK, EDBF_LOCK, pIndex->szFileName, hb_fsError(), 0, NULL );
if ( ret )
{
@@ -1335,7 +1345,7 @@ static BOOL hb_cdxIndexLockWrite( LPCDXINDEX pIndex )
FL_LOCK | FLX_EXCLUSIVE | FLX_WAIT, &pIndex->ulLockPos );
}
if ( !ret )
hb_cdxErrorRT( pIndex->pArea, EG_LOCK, EDBF_LOCK, pIndex->szFileName, hb_fsError(), 0 );
hb_cdxErrorRT( pIndex->pArea, EG_LOCK, EDBF_LOCK, pIndex->szFileName, hb_fsError(), 0, NULL );
if ( ret )
{
@@ -3467,7 +3477,7 @@ static void hb_cdxTagHeaderStore( LPCDXTAG pTag )
if( uiKeyLen + uiForLen > CDX_HEADEREXPLEN - 2 )
{
hb_cdxErrorRT( pTag->pIndex->pArea, EG_DATAWIDTH, EDBF_KEYLENGTH, NULL, 0, 0 );
hb_cdxErrorRT( pTag->pIndex->pArea, EG_DATAWIDTH, EDBF_KEYLENGTH, NULL, 0, 0, NULL );
}
else
{
@@ -6530,7 +6540,7 @@ static ERRCODE hb_cdxSeek( CDXAREAP pArea, BOOL fSoftSeek, PHB_ITEM pKeyItm, BOO
if ( ! pTag )
{
hb_cdxErrorRT( pArea, EG_NOORDER, EDBF_NOTINDEXED, NULL, 0, EF_CANDEFAULT );
hb_cdxErrorRT( pArea, EG_NOORDER, EDBF_NOTINDEXED, NULL, 0, EF_CANDEFAULT, NULL );
return FAILURE;
}
else
@@ -7180,6 +7190,7 @@ static ERRCODE hb_cdxOrderListAdd( CDXAREAP pArea, LPDBORDERINFO pOrderInfo )
char szFileName[ _POSIX_PATH_MAX + 1 ];
LPCDXINDEX pIndex, * pIndexPtr;
BOOL fProd, bRetry;
PHB_ITEM pError = NULL;
HB_TRACE(HB_TR_DEBUG, ("hb_cdxOrderListAdd(%p, %p)", pArea, pOrderInfo));
@@ -7215,10 +7226,11 @@ static ERRCODE hb_cdxOrderListAdd( CDXAREAP pArea, LPDBORDERINFO pOrderInfo )
{
pFile = hb_fileExtOpen( ( BYTE * ) szFileName, NULL, uiFlags |
FXO_DEFAULTS | FXO_SHARELOCK | FXO_COPYNAME,
NULL, NULL );
NULL, pError );
if( !pFile )
bRetry = ( hb_cdxErrorRT( pArea, EG_OPEN, EDBF_OPEN_INDEX, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT ) == E_RETRY );
bRetry = hb_cdxErrorRT( pArea, EG_OPEN, EDBF_OPEN_INDEX, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT,
&pError ) == E_RETRY;
else
{
if( hb_fileSize( pFile ) <= ( HB_FOFFSET ) sizeof( CDXTAGHEADER ) )
@@ -7226,13 +7238,16 @@ static ERRCODE hb_cdxOrderListAdd( CDXAREAP pArea, LPDBORDERINFO pOrderInfo )
hb_fileClose( pFile );
pFile = NULL;
hb_cdxErrorRT( pArea, EG_CORRUPTION, EDBF_CORRUPT,
szFileName, hb_fsError(), EF_CANDEFAULT );
szFileName, hb_fsError(), EF_CANDEFAULT, NULL );
}
bRetry = FALSE;
}
} while( bRetry );
if( pError )
hb_errRelease( pError );
if( !pFile )
{
return FAILURE;
@@ -7255,7 +7270,7 @@ static ERRCODE hb_cdxOrderListAdd( CDXAREAP pArea, LPDBORDERINFO pOrderInfo )
*pIndexPtr = NULL;
hb_cdxIndexFree( pIndex );
hb_cdxErrorRT( pArea, EG_CORRUPTION, EDBF_CORRUPT,
szFileName, hb_fsError(), EF_CANDEFAULT );
szFileName, hb_fsError(), EF_CANDEFAULT, NULL );
return FAILURE;
}
@@ -7373,12 +7388,12 @@ static ERRCODE hb_cdxOrderListRebuild( CDXAREAP pArea )
if ( pArea->fShared )
{
hb_cdxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pArea->szDataFileName, 0, 0 );
hb_cdxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pArea->szDataFileName, 0, 0, NULL );
return FAILURE;
}
if ( pArea->fReadonly )
{
hb_cdxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pArea->szDataFileName, 0, 0 );
hb_cdxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pArea->szDataFileName, 0, 0, NULL );
return FAILURE;
}
@@ -7440,7 +7455,7 @@ static ERRCODE hb_cdxOrderCreate( CDXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
hb_strlentrim( ( const char * ) pArea->lpdbOrdCondInfo->abFor ) : 0 ) >
CDX_HEADEREXPLEN - 2 )
{
hb_cdxErrorRT( pArea, EG_DATAWIDTH, EDBF_KEYLENGTH, NULL, 0, 0 );
hb_cdxErrorRT( pArea, EG_DATAWIDTH, EDBF_KEYLENGTH, NULL, 0, 0, NULL );
return FAILURE;
}
@@ -7496,13 +7511,13 @@ static ERRCODE hb_cdxOrderCreate( CDXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
{
hb_vmDestroyBlockOrMacro( pKeyExp );
SELF_GOTO( ( AREAP ) pArea, ulRecNo );
hb_cdxErrorRT( pArea, bType == 'U' ? EG_DATATYPE : EG_DATAWIDTH, EDBF_INVALIDKEY, NULL, 0, 0 );
hb_cdxErrorRT( pArea, bType == 'U' ? EG_DATATYPE : EG_DATAWIDTH, EDBF_INVALIDKEY, NULL, 0, 0, NULL );
return FAILURE;
}
#if defined(HB_COMPAT_C53) && defined(HB_C52_STRICT)
else if ( bType == 'C' && uiLen > CDX_MAXKEY )
{
if( hb_cdxErrorRT( pArea, EG_DATAWIDTH, EDBF_INVALIDKEY, NULL, 0, EF_CANDEFAULT ) == E_DEFAULT )
if( hb_cdxErrorRT( pArea, EG_DATAWIDTH, EDBF_INVALIDKEY, NULL, 0, EF_CANDEFAULT, NULL ) == E_DEFAULT )
uiLen = CDX_MAXKEY;
else
{
@@ -7560,7 +7575,7 @@ static ERRCODE hb_cdxOrderCreate( CDXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
hb_vmDestroyBlockOrMacro( pKeyExp );
hb_vmDestroyBlockOrMacro( pForExp );
SELF_GOTO( ( AREAP ) pArea, ulRecNo );
hb_cdxErrorRT( pArea, EG_DATATYPE, EDBF_INVALIDFOR, NULL, 0, 0 );
hb_cdxErrorRT( pArea, EG_DATATYPE, EDBF_INVALIDFOR, NULL, 0, 0, NULL );
return FAILURE;
}
}
@@ -7617,6 +7632,7 @@ static ERRCODE hb_cdxOrderCreate( CDXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
{
PHB_FILE pFile;
BOOL bRetry, fShared = pArea->fShared && !fTemporary && !fExclusive;
PHB_ITEM pError = NULL;
do
{
@@ -7631,11 +7647,12 @@ static ERRCODE hb_cdxOrderCreate( CDXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
( fShared ? FO_DENYNONE : FO_EXCLUSIVE ) |
( fNewFile ? FXO_TRUNCATE : FXO_APPEND ) |
FXO_DEFAULTS | FXO_SHARELOCK | FXO_COPYNAME,
NULL, NULL );
NULL, pError );
}
if( !pFile )
bRetry = ( hb_cdxErrorRT( pArea, EG_CREATE, EDBF_CREATE, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT ) == E_RETRY );
bRetry = hb_cdxErrorRT( pArea, EG_CREATE, EDBF_CREATE, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT,
&pError ) == E_RETRY;
else
{
bRetry = FALSE;
@@ -7645,6 +7662,9 @@ static ERRCODE hb_cdxOrderCreate( CDXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
}
while( bRetry );
if( pError )
hb_errRelease( pError );
if( pFile )
{
pIndex = hb_cdxIndexNew( pArea );
@@ -7667,7 +7687,7 @@ static ERRCODE hb_cdxOrderCreate( CDXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
hb_fileClose( pFile );
pFile = NULL;
hb_cdxErrorRT( pArea, EG_CORRUPTION, EDBF_CORRUPT,
szFileName, hb_fsError(), EF_CANDEFAULT );
szFileName, hb_fsError(), EF_CANDEFAULT, NULL );
*/
hb_cdxIndexFreeTags( pIndex );
fNewFile = TRUE;
@@ -8422,7 +8442,7 @@ static ERRCODE hb_cdxOrderInfo( CDXAREAP pArea, USHORT uiIndex, LPDBORDERINFO pI
}
else
{
hb_cdxErrorRT( pArea, 0, EDBF_NOTCUSTOM, NULL, 0, 0 );
hb_cdxErrorRT( pArea, 0, EDBF_NOTCUSTOM, NULL, 0, 0, NULL );
}
}
break;
@@ -8470,7 +8490,7 @@ static ERRCODE hb_cdxOrderInfo( CDXAREAP pArea, USHORT uiIndex, LPDBORDERINFO pI
}
else
{
hb_cdxErrorRT( pArea, 0, EDBF_NOTCUSTOM, NULL, 0, 0 );
hb_cdxErrorRT( pArea, 0, EDBF_NOTCUSTOM, NULL, 0, 0, NULL );
}
}
break;

View File

@@ -451,14 +451,23 @@ static USHORT hb_nsxLeafPutKey( LPTAGINFO pTag, LPPAGEINFO pPage, USHORT uiOffse
/*
* generate Run-Time error
*/
static ERRCODE hb_nsxErrorRT( NSXAREAP pArea, USHORT uiGenCode, USHORT uiSubCode, const char * szFileName, USHORT uiOsCode, USHORT uiFlags )
static ERRCODE hb_nsxErrorRT( NSXAREAP pArea, USHORT uiGenCode, USHORT uiSubCode,
const char * szFileName, USHORT uiOsCode,
USHORT uiFlags, PHB_ITEM * pErrorPtr )
{
PHB_ITEM pError;
ERRCODE iRet = FAILURE;
if( hb_vmRequestQuery() == 0 )
{
pError = hb_errNew();
if( pErrorPtr )
{
if( ! *pErrorPtr )
*pErrorPtr = hb_errNew();
pError = *pErrorPtr;
}
else
pError = hb_errNew();
hb_errPutGenCode( pError, uiGenCode );
hb_errPutSubCode( pError, uiSubCode );
hb_errPutOsCode( pError, uiOsCode );
@@ -468,7 +477,8 @@ static ERRCODE hb_nsxErrorRT( NSXAREAP pArea, USHORT uiGenCode, USHORT uiSubCode
if( uiFlags )
hb_errPutFlags( pError, uiFlags );
iRet = SELF_ERROR( ( AREAP ) pArea, pError );
hb_errRelease( pError );
if( !pErrorPtr )
hb_errRelease( pError );
}
return iRet;
}
@@ -476,7 +486,7 @@ static ERRCODE hb_nsxErrorRT( NSXAREAP pArea, USHORT uiGenCode, USHORT uiSubCode
static void hb_nsxCorruptError( LPNSXINDEX pIndex )
{
hb_nsxErrorRT( pIndex->pArea, EG_CORRUPTION, EDBF_CORRUPT,
pIndex->IndexName, 0, 0 );
pIndex->IndexName, 0, 0, NULL );
}
/*
@@ -1117,7 +1127,7 @@ static BOOL hb_nsxBlockRead( LPNSXINDEX pIndex, ULONG ulBlock, BYTE *buffer, int
hb_nsxFileOffset( pIndex, ulBlock ) ) != ( ULONG ) iSize )
{
hb_nsxErrorRT( pIndex->pArea, EG_READ, EDBF_READ,
pIndex->IndexName, hb_fsError(), 0 );
pIndex->IndexName, hb_fsError(), 0, NULL );
return FALSE;
}
return TRUE;
@@ -1135,7 +1145,7 @@ static BOOL hb_nsxBlockWrite( LPNSXINDEX pIndex, ULONG ulBlock, BYTE *buffer, in
hb_nsxFileOffset( pIndex, ulBlock ) ) != ( ULONG ) iSize )
{
hb_nsxErrorRT( pIndex->pArea, EG_WRITE, EDBF_WRITE,
pIndex->IndexName, hb_fsError(), 0 );
pIndex->IndexName, hb_fsError(), 0, NULL );
return FALSE;
}
return TRUE;
@@ -2093,7 +2103,7 @@ static BOOL hb_nsxIndexLockRead( LPNSXINDEX pIndex )
}
}
if( !fOK )
hb_nsxErrorRT( pIndex->pArea, EG_LOCK, EDBF_LOCK, pIndex->IndexName, hb_fsError(), 0 );
hb_nsxErrorRT( pIndex->pArea, EG_LOCK, EDBF_LOCK, pIndex->IndexName, hb_fsError(), 0, NULL );
return fOK;
}
@@ -2136,7 +2146,7 @@ static BOOL hb_nsxIndexLockWrite( LPNSXINDEX pIndex, BOOL fCheck )
}
}
if( !fOK )
hb_nsxErrorRT( pIndex->pArea, EG_LOCK, EDBF_LOCK, pIndex->IndexName, hb_fsError(), 0 );
hb_nsxErrorRT( pIndex->pArea, EG_LOCK, EDBF_LOCK, pIndex->IndexName, hb_fsError(), 0, NULL );
return fOK;
}
@@ -4943,7 +4953,7 @@ static void hb_nsxSortBufferFlush( LPNSXSORTINFO pSort )
hb_nsxFileOffset( pIndex, pSort->ulFirstIO ) ) != ulSize )
{
hb_nsxErrorRT( pIndex->pArea, EG_WRITE, EDBF_WRITE,
pIndex->IndexName, hb_fsError(), 0 );
pIndex->IndexName, hb_fsError(), 0, NULL );
}
pSort->ulPagesIO = 0;
pIndex->fFlush = TRUE;
@@ -5077,7 +5087,7 @@ static void hb_nsxSortWritePage( LPNSXSORTINFO pSort )
pSort->hTempFile = hb_fsCreateTemp( NULL, NULL, FC_NORMAL, szName );
if( pSort->hTempFile == FS_ERROR )
hb_nsxErrorRT( pSort->pTag->pIndex->pArea, EG_CREATE, EDBF_CREATE_TEMP,
( const char * ) szName, 0, 0 );
( const char * ) szName, 0, 0, NULL );
else
pSort->szTempFileName = hb_strdup( ( const char * ) szName );
}
@@ -5088,7 +5098,7 @@ static void hb_nsxSortWritePage( LPNSXSORTINFO pSort )
pSort->pSwapPage[ pSort->ulCurPage ].nOffset = hb_fsSeekLarge( pSort->hTempFile, 0, FS_END );
if( hb_fsWriteLarge( pSort->hTempFile, pSort->pStartKey, ulSize ) != ulSize )
hb_nsxErrorRT( pSort->pTag->pIndex->pArea, EG_WRITE, EDBF_WRITE_TEMP,
pSort->szTempFileName, 0, 0 );
pSort->szTempFileName, 0, 0, NULL );
}
else
pSort->pSwapPage[ pSort->ulCurPage ].nOffset = 0;
@@ -5111,7 +5121,7 @@ static void hb_nsxSortGetPageKey( LPNSXSORTINFO pSort, ULONG ulPage,
hb_fsReadLarge( pSort->hTempFile, pSort->pSwapPage[ ulPage ].pKeyPool, ulSize ) != ulSize ) )
{
hb_nsxErrorRT( pSort->pTag->pIndex->pArea, EG_READ, EDBF_READ_TEMP,
pSort->szTempFileName, 0, 0 );
pSort->szTempFileName, 0, 0, NULL );
}
pSort->pSwapPage[ ulPage ].nOffset += ulSize;
pSort->pSwapPage[ ulPage ].ulKeyBuf = ulKeys;
@@ -5809,7 +5819,7 @@ static ERRCODE hb_nsxTagCreate( LPTAGINFO pTag, BOOL fReindex )
default:
hb_nsxErrorRT( pArea, EG_DATATYPE, EDBF_INVALIDKEY,
pTag->pIndex->IndexName, 0, 0 );
pTag->pIndex->IndexName, 0, 0, NULL );
errCode = FAILURE;
pTag->Partial = TRUE;
pEvalItem = NULL;
@@ -5990,7 +6000,7 @@ static ERRCODE hb_nsxSeek( NSXAREAP pArea, BOOL fSoftSeek, PHB_ITEM pItem, BOOL
if( ! pArea->lpCurTag )
{
hb_nsxErrorRT( pArea, EG_NOORDER, EDBF_NOTINDEXED, NULL, 0, EF_CANDEFAULT );
hb_nsxErrorRT( pArea, EG_NOORDER, EDBF_NOTINDEXED, NULL, 0, EF_CANDEFAULT, NULL );
return FAILURE;
}
else
@@ -6555,7 +6565,7 @@ static ERRCODE hb_nsxOrderCreate( NSXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
hb_vmDestroyBlockOrMacro( pKeyExp );
SELF_GOTO( ( AREAP ) pArea, ulRecNo );
hb_nsxErrorRT( pArea, bType == 'U' ? EG_DATATYPE : EG_DATAWIDTH,
1026, NULL, 0, 0 );
1026, NULL, 0, 0, NULL );
return FAILURE;
}
@@ -6606,7 +6616,7 @@ static ERRCODE hb_nsxOrderCreate( NSXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
hb_vmDestroyBlockOrMacro( pKeyExp );
hb_vmDestroyBlockOrMacro( pForExp );
SELF_GOTO( ( AREAP ) pArea, ulRecNo );
hb_nsxErrorRT( pArea, EG_DATATYPE, EDBF_INVALIDFOR, NULL, 0, 0 );
hb_nsxErrorRT( pArea, EG_DATATYPE, EDBF_INVALIDFOR, NULL, 0, 0, NULL );
return FAILURE;
}
}
@@ -6634,7 +6644,7 @@ static ERRCODE hb_nsxOrderCreate( NSXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
hb_vmDestroyBlockOrMacro( pKeyExp );
if( pForExp != NULL )
hb_vmDestroyBlockOrMacro( pForExp );
hb_nsxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pIndex->IndexName, 0, 0 );
hb_nsxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pIndex->IndexName, 0, 0, NULL );
return FAILURE;
}
#if 0 /* enable this code if you want to forbid tag deleting in shared mode */
@@ -6643,7 +6653,7 @@ static ERRCODE hb_nsxOrderCreate( NSXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
hb_vmDestroyBlockOrMacro( pKeyExp );
if( pForExp != NULL )
hb_vmDestroyBlockOrMacro( pForExp );
hb_nsxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pIndex->IndexName, 0, 0 );
hb_nsxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pIndex->IndexName, 0, 0, NULL );
return FAILURE;
}
#endif
@@ -6653,6 +6663,7 @@ static ERRCODE hb_nsxOrderCreate( NSXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
PHB_FILE pFile;
BOOL bRetry, fShared = pArea->fShared && !fTemporary && !fExclusive;
USHORT uiFlags = FO_READWRITE | ( fShared ? FO_DENYNONE : FO_EXCLUSIVE );
PHB_ITEM pError = NULL;
do
{
@@ -6666,11 +6677,12 @@ static ERRCODE hb_nsxOrderCreate( NSXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
pFile = hb_fileExtOpen( ( BYTE * ) szFileName, NULL, uiFlags |
( fNewFile ? FXO_TRUNCATE : FXO_APPEND ) |
FXO_DEFAULTS | FXO_SHARELOCK | FXO_COPYNAME,
NULL, NULL );
NULL, pError );
}
if( !pFile )
bRetry = ( hb_nsxErrorRT( pArea, EG_CREATE, EDBF_CREATE, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT ) == E_RETRY );
bRetry = hb_nsxErrorRT( pArea, EG_CREATE, EDBF_CREATE, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT,
&pError ) == E_RETRY;
else
{
bRetry = FALSE;
@@ -6680,6 +6692,9 @@ static ERRCODE hb_nsxOrderCreate( NSXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
}
while( bRetry );
if( pError )
hb_errRelease( pError );
if( !pFile )
{
hb_vmDestroyBlockOrMacro( pKeyExp );
@@ -6719,7 +6734,7 @@ static ERRCODE hb_nsxOrderCreate( NSXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
if( pForExp != NULL )
hb_vmDestroyBlockOrMacro( pForExp );
/* hb_nsxSetTagNumbers() */
hb_nsxErrorRT( pArea, EG_CORRUPTION, EDBF_CORRUPT, szFileName, 0, 0 );
hb_nsxErrorRT( pArea, EG_CORRUPTION, EDBF_CORRUPT, szFileName, 0, 0, NULL );
return errCode;
}
}
@@ -6747,7 +6762,7 @@ static ERRCODE hb_nsxOrderCreate( NSXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo
if( pForExp != NULL )
hb_vmDestroyBlockOrMacro( pForExp );
/* hb_nsxSetTagNumbers() */
hb_nsxErrorRT( pArea, EG_LIMIT, EDBF_LIMITEXCEEDED, pIndex->IndexName, 0, 0 );
hb_nsxErrorRT( pArea, EG_LIMIT, EDBF_LIMITEXCEEDED, pIndex->IndexName, 0, 0, NULL );
errCode = FAILURE;
}
@@ -6880,13 +6895,13 @@ static ERRCODE hb_nsxOrderDestroy( NSXAREAP pArea, LPDBORDERINFO pOrderInfo )
}
else if( pIndex->fReadonly )
{
hb_nsxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pIndex->IndexName, 0, 0 );
hb_nsxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pIndex->IndexName, 0, 0, NULL );
return FAILURE;
}
#if 0 /* enable this code if you want to forbid tag deleting in shared mode */
else if( pIndex->fShared )
{
hb_nsxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pIndex->IndexName, 0, 0 );
hb_nsxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pIndex->IndexName, 0, 0, NULL );
return FAILURE;
}
#endif
@@ -7287,7 +7302,7 @@ static ERRCODE hb_nsxOrderInfo( NSXAREAP pArea, USHORT uiIndex, LPDBORDERINFO pI
case DBOI_KEYADD:
if( pTag->pIndex->fReadonly )
{
hb_nsxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pTag->pIndex->IndexName, 0, 0 );
hb_nsxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pTag->pIndex->IndexName, 0, 0, NULL );
return FAILURE;
}
if( pTag->Custom )
@@ -7297,14 +7312,14 @@ static ERRCODE hb_nsxOrderInfo( NSXAREAP pArea, USHORT uiIndex, LPDBORDERINFO pI
}
else
{
hb_nsxErrorRT( pArea, 0, 1052, NULL, 0, 0 );
hb_nsxErrorRT( pArea, 0, 1052, NULL, 0, 0, NULL );
return FAILURE;
}
break;
case DBOI_KEYDELETE:
if( pTag->pIndex->fReadonly )
{
hb_nsxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pTag->pIndex->IndexName, 0, 0 );
hb_nsxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pTag->pIndex->IndexName, 0, 0, NULL );
return FAILURE;
}
if( pTag->Custom )
@@ -7314,7 +7329,7 @@ static ERRCODE hb_nsxOrderInfo( NSXAREAP pArea, USHORT uiIndex, LPDBORDERINFO pI
}
else
{
hb_nsxErrorRT( pArea, 0, 1052, NULL, 0, 0 );
hb_nsxErrorRT( pArea, 0, 1052, NULL, 0, 0, NULL );
return FAILURE;
}
break;
@@ -7609,6 +7624,7 @@ static ERRCODE hb_nsxOrderListAdd( NSXAREAP pArea, LPDBORDERINFO pOrderInfo )
if( ! pIndex )
{
PHB_ITEM pError = NULL;
fReadonly = pArea->fReadonly;
fShared = pArea->fShared;
uiFlags = ( fReadonly ? FO_READ : FO_READWRITE ) |
@@ -7618,15 +7634,19 @@ static ERRCODE hb_nsxOrderListAdd( NSXAREAP pArea, LPDBORDERINFO pOrderInfo )
fRetry = FALSE;
pFile = hb_fileExtOpen( ( BYTE * ) szFileName, NULL, uiFlags |
FXO_DEFAULTS | FXO_SHARELOCK | FXO_COPYNAME,
NULL, NULL );
NULL, pError );
if( !pFile )
{
fRetry = ( hb_nsxErrorRT( pArea, EG_OPEN, EDBF_OPEN_INDEX, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT ) == E_RETRY );
fRetry = hb_nsxErrorRT( pArea, EG_OPEN, EDBF_OPEN_INDEX, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT,
&pError ) == E_RETRY;
}
}
while( fRetry );
if( pError )
hb_errRelease( pError );
if( !pFile )
return FAILURE;
@@ -7648,7 +7668,7 @@ static ERRCODE hb_nsxOrderListAdd( NSXAREAP pArea, LPDBORDERINFO pOrderInfo )
if( errCode != SUCCESS )
{
hb_nsxIndexFree( pIndex );
hb_nsxErrorRT( pArea, EG_CORRUPTION, EDBF_CORRUPT, szFileName, 0, 0 );
hb_nsxErrorRT( pArea, EG_CORRUPTION, EDBF_CORRUPT, szFileName, 0, 0, NULL );
return errCode;
}
@@ -7776,12 +7796,12 @@ static ERRCODE hb_nsxOrderListRebuild( NSXAREAP pArea )
if( pArea->fShared )
{
hb_nsxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pArea->szDataFileName, 0, 0 );
hb_nsxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pArea->szDataFileName, 0, 0, NULL );
return FAILURE;
}
if( pArea->fReadonly )
{
hb_nsxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pArea->szDataFileName, 0, 0 );
hb_nsxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pArea->szDataFileName, 0, 0, NULL );
return FAILURE;
}

View File

@@ -252,14 +252,23 @@ static ULONG hb_ntxGetKeyRec( LPPAGEINFO pPage, SHORT iKey )
/*
* generate Run-Time error
*/
static ERRCODE hb_ntxErrorRT( NTXAREAP pArea, USHORT uiGenCode, USHORT uiSubCode, char * szFileName, USHORT uiOsCode, USHORT uiFlags )
static ERRCODE hb_ntxErrorRT( NTXAREAP pArea, USHORT uiGenCode, USHORT uiSubCode,
const char * szFileName, USHORT uiOsCode,
USHORT uiFlags, PHB_ITEM * pErrorPtr )
{
PHB_ITEM pError;
ERRCODE iRet = FAILURE;
if( hb_vmRequestQuery() == 0 )
{
pError = hb_errNew();
if( pErrorPtr )
{
if( ! *pErrorPtr )
*pErrorPtr = hb_errNew();
pError = *pErrorPtr;
}
else
pError = hb_errNew();
hb_errPutGenCode( pError, uiGenCode );
hb_errPutSubCode( pError, uiSubCode );
hb_errPutOsCode( pError, uiOsCode );
@@ -269,7 +278,8 @@ static ERRCODE hb_ntxErrorRT( NTXAREAP pArea, USHORT uiGenCode, USHORT uiSubCode
if( uiFlags )
hb_errPutFlags( pError, uiFlags );
iRet = SELF_ERROR( ( AREAP ) pArea, pError );
hb_errRelease( pError );
if( !pErrorPtr )
hb_errRelease( pError );
}
return iRet;
}
@@ -908,7 +918,7 @@ static BOOL hb_ntxBlockRead( LPNTXINDEX pIndex, ULONG ulBlock, BYTE *buffer, int
hb_ntxFileOffset( pIndex, ulBlock ) ) != ( ULONG ) iSize )
{
hb_ntxErrorRT( pIndex->Owner, EG_READ, EDBF_READ,
pIndex->IndexName, hb_fsError(), 0 );
pIndex->IndexName, hb_fsError(), 0, NULL );
return FALSE;
}
return TRUE;
@@ -929,7 +939,7 @@ static BOOL hb_ntxBlockWrite( LPNTXINDEX pIndex, ULONG ulBlock, BYTE *buffer, in
hb_ntxFileOffset( pIndex, ulBlock ) ) != ( ULONG ) iSize )
{
hb_ntxErrorRT( pIndex->Owner, EG_WRITE, EDBF_WRITE,
pIndex->IndexName, hb_fsError(), 0 );
pIndex->IndexName, hb_fsError(), 0, NULL );
return FALSE;
}
return TRUE;
@@ -1221,7 +1231,7 @@ static LPPAGEINFO hb_ntxPageLoad( LPTAGINFO pTag, ULONG ulPage )
if( !ulPage )
{
hb_ntxErrorRT( pTag->Owner->Owner, EG_CORRUPTION, EDBF_CORRUPT,
pTag->Owner->IndexName, 0, 0 );
pTag->Owner->IndexName, 0, 0, NULL );
return NULL;
}
}
@@ -1321,7 +1331,7 @@ static LPPAGEINFO hb_ntxPageNew( LPTAGINFO pTag, BOOL fNull )
if( pPage->uiKeys != 0 )
{
hb_ntxErrorRT( pTag->Owner->Owner, EG_CORRUPTION, EDBF_CORRUPT,
pTag->Owner->IndexName, 0, 0 );
pTag->Owner->IndexName, 0, 0, NULL );
return NULL;
}
#endif
@@ -1890,7 +1900,7 @@ static ERRCODE hb_ntxIndexHeaderRead( LPNTXINDEX pIndex )
{
#if defined( HB_NTX_NOMULTITAG )
hb_ntxErrorRT( pIndex->Owner, EG_CORRUPTION, EDBF_CORRUPT,
pIndex->IndexName, hb_fsError(), 0 );
pIndex->IndexName, hb_fsError(), 0, NULL );
return FAILURE;
#else
LPCTXHEADER lpCTX = ( LPCTXHEADER ) pIndex->HeaderBuff;
@@ -1928,7 +1938,7 @@ static ERRCODE hb_ntxIndexHeaderRead( LPNTXINDEX pIndex )
if( pIndex->Compound )
{
hb_ntxErrorRT( pIndex->Owner, EG_CORRUPTION, EDBF_CORRUPT,
pIndex->IndexName, hb_fsError(), 0 );
pIndex->IndexName, hb_fsError(), 0, NULL );
return FAILURE;
}
pTag = pIndex->iTags ? pIndex->lpTags[0] : NULL;
@@ -2021,7 +2031,8 @@ static BOOL hb_ntxIndexLockRead( LPNTXINDEX pIndex )
}
}
if( !fOK )
hb_ntxErrorRT( pIndex->Owner, EG_LOCK, EDBF_LOCK, pIndex->IndexName, hb_fsError(), 0 );
hb_ntxErrorRT( pIndex->Owner, EG_LOCK, EDBF_LOCK,
pIndex->IndexName, hb_fsError(), 0, NULL );
return fOK;
}
@@ -2064,7 +2075,8 @@ static BOOL hb_ntxIndexLockWrite( LPNTXINDEX pIndex, BOOL fCheck )
}
}
if( !fOK )
hb_ntxErrorRT( pIndex->Owner, EG_LOCK, EDBF_LOCK, pIndex->IndexName, hb_fsError(), 0 );
hb_ntxErrorRT( pIndex->Owner, EG_LOCK, EDBF_LOCK,
pIndex->IndexName, hb_fsError(), 0, NULL );
return fOK;
}
@@ -2154,7 +2166,7 @@ static BOOL hb_ntxTagLockRead( LPTAGINFO pTag )
{
hb_ntxIndexUnLockRead( pTag->Owner );
hb_ntxErrorRT( pTag->Owner->Owner, EG_CORRUPTION, EDBF_CORRUPT,
pTag->Owner->IndexName, 0, 0 );
pTag->Owner->IndexName, 0, 0, NULL );
}
}
return fOK;
@@ -2174,7 +2186,7 @@ static BOOL hb_ntxTagLockWrite( LPTAGINFO pTag )
{
hb_ntxIndexUnLockWrite( pTag->Owner );
hb_ntxErrorRT( pTag->Owner->Owner, EG_CORRUPTION, EDBF_CORRUPT,
pTag->Owner->IndexName, 0, 0 );
pTag->Owner->IndexName, 0, 0, NULL );
}
}
return fOK;
@@ -4668,7 +4680,7 @@ static void hb_ntxSortBufferFlush( LPNTXSORTINFO pSort )
hb_ntxFileOffset( pIndex, pSort->ulFirstIO ) ) != ulSize )
{
hb_ntxErrorRT( pIndex->Owner, EG_WRITE, EDBF_WRITE,
pIndex->IndexName, hb_fsError(), 0 );
pIndex->IndexName, hb_fsError(), 0, NULL );
}
pSort->ulPagesIO = 0;
pIndex->fFlush = TRUE;
@@ -4750,9 +4762,9 @@ static void hb_ntxSortWritePage( LPNTXSORTINFO pSort )
pSort->hTempFile = hb_fsCreateTemp( NULL, NULL, FC_NORMAL, szName );
if( pSort->hTempFile == FS_ERROR )
hb_ntxErrorRT( pSort->pTag->Owner->Owner, EG_CREATE, EDBF_CREATE_TEMP,
( char * ) szName, 0, 0 );
( const char * ) szName, 0, 0, NULL );
else
pSort->szTempFileName = hb_strdup( ( char * ) szName );
pSort->szTempFileName = hb_strdup( ( const char * ) szName );
}
pSort->pSwapPage[ pSort->ulCurPage ].ulKeys = pSort->ulKeys;
@@ -4761,7 +4773,7 @@ static void hb_ntxSortWritePage( LPNTXSORTINFO pSort )
pSort->pSwapPage[ pSort->ulCurPage ].nOffset = hb_fsSeekLarge( pSort->hTempFile, 0, FS_END );
if( hb_fsWriteLarge( pSort->hTempFile, pSort->pStartKey, ulSize ) != ulSize )
hb_ntxErrorRT( pSort->pTag->Owner->Owner, EG_WRITE, EDBF_WRITE_TEMP,
pSort->szTempFileName, 0, 0 );
pSort->szTempFileName, 0, 0, NULL );
}
else
pSort->pSwapPage[ pSort->ulCurPage ].nOffset = 0;
@@ -4784,7 +4796,7 @@ static void hb_ntxSortGetPageKey( LPNTXSORTINFO pSort, ULONG ulPage,
hb_fsReadLarge( pSort->hTempFile, pSort->pSwapPage[ ulPage ].pKeyPool, ulSize ) != ulSize ) )
{
hb_ntxErrorRT( pSort->pTag->Owner->Owner, EG_READ, EDBF_READ_TEMP,
pSort->szTempFileName, 0, 0 );
pSort->szTempFileName, 0, 0, NULL );
}
pSort->pSwapPage[ ulPage ].nOffset += ulSize;
pSort->pSwapPage[ ulPage ].ulKeyBuf = ulKeys;
@@ -5424,7 +5436,7 @@ static ERRCODE hb_ntxTagCreate( LPTAGINFO pTag, BOOL fReindex )
default:
hb_ntxErrorRT( pArea, EG_DATATYPE, EDBF_INVALIDKEY,
pTag->Owner->IndexName, 0, 0 );
pTag->Owner->IndexName, 0, 0, NULL );
errCode = FAILURE;
pTag->Partial = TRUE;
pEvalItem = NULL;
@@ -5605,7 +5617,7 @@ static ERRCODE ntxSeek( NTXAREAP pArea, BOOL fSoftSeek, PHB_ITEM pItem, BOOL fFi
if( ! pArea->lpCurTag )
{
hb_ntxErrorRT( pArea, EG_NOORDER, EDBF_NOTINDEXED, NULL, 0, EF_CANDEFAULT );
hb_ntxErrorRT( pArea, EG_NOORDER, EDBF_NOTINDEXED, NULL, 0, EF_CANDEFAULT, NULL );
return FAILURE;
}
else
@@ -5885,7 +5897,7 @@ static ERRCODE ntxGoCold( NTXAREAP pArea )
else if( !pTag->Partial && !pTag->UniqueKey )
hb_ntxErrorRT( pTag->Owner->Owner,
EG_CORRUPTION, EDBF_CORRUPT,
pTag->Owner->IndexName, 0, 0 );
pTag->Owner->IndexName, 0, 0, NULL );
}
}
if( fAdd )
@@ -6167,7 +6179,7 @@ static ERRCODE ntxOrderCreate( NTXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo )
hb_vmDestroyBlockOrMacro( pKeyExp );
SELF_GOTO( ( AREAP ) pArea, ulRecNo );
hb_ntxErrorRT( pArea, bType == 'U' ? EG_DATATYPE : EG_DATAWIDTH,
1026, NULL, 0, 0 );
1026, NULL, 0, 0, NULL );
return FAILURE;
}
@@ -6218,7 +6230,7 @@ static ERRCODE ntxOrderCreate( NTXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo )
hb_vmDestroyBlockOrMacro( pKeyExp );
hb_vmDestroyBlockOrMacro( pForExp );
SELF_GOTO( ( AREAP ) pArea, ulRecNo );
hb_ntxErrorRT( pArea, EG_DATATYPE, EDBF_INVALIDFOR, NULL, 0, 0 );
hb_ntxErrorRT( pArea, EG_DATATYPE, EDBF_INVALIDFOR, NULL, 0, 0, NULL );
return FAILURE;
}
}
@@ -6272,7 +6284,7 @@ static ERRCODE ntxOrderCreate( NTXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo )
hb_vmDestroyBlockOrMacro( pKeyExp );
if( pForExp != NULL )
hb_vmDestroyBlockOrMacro( pForExp );
hb_ntxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pIndex->IndexName, 0, 0 );
hb_ntxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pIndex->IndexName, 0, 0, NULL );
return FAILURE;
}
#if 0 /* enable this code if you want to forbid tag deleting in shared mode */
@@ -6281,7 +6293,7 @@ static ERRCODE ntxOrderCreate( NTXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo )
hb_vmDestroyBlockOrMacro( pKeyExp );
if( pForExp != NULL )
hb_vmDestroyBlockOrMacro( pForExp );
hb_ntxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pIndex->IndexName, 0, 0 );
hb_ntxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pIndex->IndexName, 0, 0, NULL );
return FAILURE;
}
#endif
@@ -6291,6 +6303,7 @@ static ERRCODE ntxOrderCreate( NTXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo )
PHB_FILE pFile;
BOOL bRetry, fOld, fShared = pArea->fShared && !fTemporary && !fExclusive;
USHORT uiFlags = FO_READWRITE | ( fShared ? FO_DENYNONE : FO_EXCLUSIVE );
PHB_ITEM pError = NULL;
fOld = fCompound;
do
@@ -6305,20 +6318,24 @@ static ERRCODE ntxOrderCreate( NTXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo )
pFile = hb_fileExtOpen( ( BYTE * ) szFileName, NULL, uiFlags |
( fOld ? FXO_APPEND : FXO_TRUNCATE ) |
FXO_DEFAULTS | FXO_SHARELOCK | FXO_COPYNAME,
NULL, NULL );
NULL, pError );
}
if( !pFile )
bRetry = ( hb_ntxErrorRT( pArea, EG_CREATE, EDBF_CREATE, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT ) == E_RETRY );
bRetry = hb_ntxErrorRT( pArea, EG_CREATE, EDBF_CREATE, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT,
&pError ) == E_RETRY;
else
{
bRetry = FALSE;
if( fOld )
fOld = ( hb_fileSize( pFile ) != 0 );
fOld = hb_fileSize( pFile ) != 0;
}
}
while( bRetry );
if( pError )
hb_errRelease( pError );
if( !pFile )
{
hb_vmDestroyBlockOrMacro( pKeyExp );
@@ -6363,7 +6380,7 @@ static ERRCODE ntxOrderCreate( NTXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo )
if( pForExp != NULL )
hb_vmDestroyBlockOrMacro( pForExp );
/* hb_ntxSetTagNumbers() */
hb_ntxErrorRT( pArea, EG_CORRUPTION, EDBF_CORRUPT, szFileName, 0, 0 );
hb_ntxErrorRT( pArea, EG_CORRUPTION, EDBF_CORRUPT, szFileName, 0, 0, NULL );
return errCode;
}
}
@@ -6384,7 +6401,7 @@ static ERRCODE ntxOrderCreate( NTXAREAP pArea, LPDBORDERCREATEINFO pOrderInfo )
if( pForExp != NULL )
hb_vmDestroyBlockOrMacro( pForExp );
/* hb_ntxSetTagNumbers() */
hb_ntxErrorRT( pArea, EG_LIMIT, EDBF_LIMITEXCEEDED, pIndex->IndexName, 0, 0 );
hb_ntxErrorRT( pArea, EG_LIMIT, EDBF_LIMITEXCEEDED, pIndex->IndexName, 0, 0, NULL );
return FAILURE;
}
@@ -6540,13 +6557,13 @@ static ERRCODE ntxOrderDestroy( NTXAREAP pArea, LPDBORDERINFO pOrderInfo )
}
else if( pIndex->fReadonly )
{
hb_ntxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pIndex->IndexName, 0, 0 );
hb_ntxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pIndex->IndexName, 0, 0, NULL );
return FAILURE;
}
#if 0 /* enable this code if you want to forbid tag deleting in shared mode */
else if( pIndex->fShared )
{
hb_ntxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pIndex->IndexName, 0, 0 );
hb_ntxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pIndex->IndexName, 0, 0, NULL );
return FAILURE;
}
#endif
@@ -6929,7 +6946,8 @@ static ERRCODE ntxOrderInfo( NTXAREAP pArea, USHORT uiIndex, LPDBORDERINFO pInfo
case DBOI_KEYADD:
if( pTag->Owner->fReadonly )
{
hb_ntxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pTag->Owner->IndexName, 0, 0 );
hb_ntxErrorRT( pArea, EG_READONLY, EDBF_READONLY,
pTag->Owner->IndexName, 0, 0, NULL );
return FAILURE;
}
if( pTag->Custom )
@@ -6939,14 +6957,15 @@ static ERRCODE ntxOrderInfo( NTXAREAP pArea, USHORT uiIndex, LPDBORDERINFO pInfo
}
else
{
hb_ntxErrorRT( pArea, 0, 1052, NULL, 0, 0 );
hb_ntxErrorRT( pArea, 0, 1052, NULL, 0, 0, NULL );
return FAILURE;
}
break;
case DBOI_KEYDELETE:
if( pTag->Owner->fReadonly )
{
hb_ntxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pTag->Owner->IndexName, 0, 0 );
hb_ntxErrorRT( pArea, EG_READONLY, EDBF_READONLY,
pTag->Owner->IndexName, 0, 0, NULL );
return FAILURE;
}
if( pTag->Custom )
@@ -6956,7 +6975,7 @@ static ERRCODE ntxOrderInfo( NTXAREAP pArea, USHORT uiIndex, LPDBORDERINFO pInfo
}
else
{
hb_ntxErrorRT( pArea, 0, 1052, NULL, 0, 0 );
hb_ntxErrorRT( pArea, 0, 1052, NULL, 0, 0, NULL );
return FAILURE;
}
break;
@@ -7274,6 +7293,8 @@ static ERRCODE ntxOrderListAdd( NTXAREAP pArea, LPDBORDERINFO pOrderInfo )
if( ! pIndex )
{
PHB_ITEM pError = NULL;
fReadonly = pArea->fReadonly;
fShared = pArea->fShared;
uiFlags = ( fReadonly ? FO_READ : FO_READWRITE ) |
@@ -7283,15 +7304,19 @@ static ERRCODE ntxOrderListAdd( NTXAREAP pArea, LPDBORDERINFO pOrderInfo )
fRetry = FALSE;
pFile = hb_fileExtOpen( ( BYTE * ) szFileName, NULL, uiFlags |
FXO_DEFAULTS | FXO_SHARELOCK | FXO_COPYNAME,
NULL, NULL );
NULL, pError );
if( !pFile )
{
fRetry = ( hb_ntxErrorRT( pArea, EG_OPEN, EDBF_OPEN_INDEX, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT ) == E_RETRY );
fRetry = hb_ntxErrorRT( pArea, EG_OPEN, EDBF_OPEN_INDEX, szFileName,
hb_fsError(), EF_CANRETRY | EF_CANDEFAULT,
&pError ) == E_RETRY;
}
}
while( fRetry );
if( pError )
hb_errRelease( pError );
if( !pFile )
return FAILURE;
@@ -7319,7 +7344,7 @@ static ERRCODE ntxOrderListAdd( NTXAREAP pArea, LPDBORDERINFO pOrderInfo )
{
*pIndexPtr = pIndex->pNext;
hb_ntxIndexFree( pIndex );
hb_ntxErrorRT( pArea, EG_CORRUPTION, EDBF_CORRUPT, szFileName, 0, 0 );
hb_ntxErrorRT( pArea, EG_CORRUPTION, EDBF_CORRUPT, szFileName, 0, 0, NULL );
return errCode;
}
/* hb_ntxSetTagNumbers() */
@@ -7441,12 +7466,12 @@ static ERRCODE ntxOrderListRebuild( NTXAREAP pArea )
if( pArea->fShared )
{
hb_ntxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pArea->szDataFileName, 0, 0 );
hb_ntxErrorRT( pArea, EG_SHARED, EDBF_SHARED, pArea->szDataFileName, 0, 0, NULL );
return FAILURE;
}
if( pArea->fReadonly )
{
hb_ntxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pArea->szDataFileName, 0, 0 );
hb_ntxErrorRT( pArea, EG_READONLY, EDBF_READONLY, pArea->szDataFileName, 0, 0, NULL );
return FAILURE;
}

View File

@@ -388,8 +388,8 @@ HB_FUNC( __DBSQL )
hb_errPutFileName( pError, szFileName );
hb_errPutFlags( pError, EF_CANRETRY | EF_CANDEFAULT );
hb_errPutSubSystem( pError, "DBF2SQL" );
hb_errPutOsCode( pError, hb_fsError() );
}
hb_errPutOsCode( pError, hb_fsError() );
fRetry = hb_errLaunch( pError ) == E_RETRY;
}
else