2014-10-24 15:15 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbrddntx.h
* src/rdd/workarea.c
* src/rdd/dbf1.c
* src/rdd/delim1.c
* src/rdd/sdf1.c
* src/rdd/dbfcdx/dbfcdx1.c
* src/rdd/dbfnsx/dbfnsx1.c
* src/rdd/dbfntx/dbfntx1.c
* src/rdd/dbffpt/dbffpt1.c
* contrib/rddads/ads1.c
* contrib/rddads/adsfunc.c
* contrib/rddads/adsx.c
* contrib/rddsql/sqlbase.c
* contrib/rddsql/sqlmix.c
* contrib/sddfb/core.c
* contrib/sddmy/core.c
* contrib/sddoci/core.c
* contrib/sddodbc/core.c
* contrib/sddpg/core.c
* contrib/sddsqlt3/core.c
* cleaned AREAP casting
* unified some variable names
* cleaned some DBOI_* actions
* allow to call ORDERINFO() method without itmResult item.
* few other cleanups
This commit is contained in:
@@ -120,7 +120,7 @@ static HB_ERRCODE hb_memoErrorRT( FPTAREAP pArea, HB_ERRCODE uiGenCode, HB_ERRCO
|
||||
hb_errPutFileName( pError, szFileName );
|
||||
if( uiFlags )
|
||||
hb_errPutFlags( pError, uiFlags );
|
||||
errCode = SELF_ERROR( ( AREAP ) pArea, pError );
|
||||
errCode = SELF_ERROR( &pArea->area, pError );
|
||||
hb_errRelease( pError );
|
||||
}
|
||||
return errCode;
|
||||
@@ -3320,7 +3320,7 @@ static HB_ERRCODE hb_fptLockForRead( FPTAREAP pArea, HB_USHORT uiIndex, HB_BOOL
|
||||
#ifdef HB_MEMO_SAFELOCK
|
||||
if( pArea->lpdbPendingRel )
|
||||
{
|
||||
errCode = SELF_FORCEREL( ( AREAP ) pArea );
|
||||
errCode = SELF_FORCEREL( &pArea->area );
|
||||
if( errCode != HB_SUCCESS )
|
||||
return errCode;
|
||||
}
|
||||
@@ -3336,7 +3336,7 @@ static HB_ERRCODE hb_fptLockForRead( FPTAREAP pArea, HB_USHORT uiIndex, HB_BOOL
|
||||
{
|
||||
PHB_ITEM pRecNo = hb_itemNew( NULL ), pResult = hb_itemNew( NULL );
|
||||
|
||||
errCode = SELF_RECINFO( ( AREAP ) pArea, pRecNo, DBRI_LOCKED, pResult );
|
||||
errCode = SELF_RECINFO( &pArea->area, pRecNo, DBRI_LOCKED, pResult );
|
||||
fLocked = hb_itemGetL( pResult );
|
||||
hb_itemRelease( pRecNo );
|
||||
hb_itemRelease( pResult );
|
||||
@@ -3360,7 +3360,7 @@ static HB_ERRCODE hb_fptLockForRead( FPTAREAP pArea, HB_USHORT uiIndex, HB_BOOL
|
||||
HB_SYMBOL_UNUSED( uiIndex );
|
||||
#endif
|
||||
/* update any pending relations and reread record if necessary */
|
||||
errCode = SELF_DELETED( ( AREAP ) pArea, &fLocked );
|
||||
errCode = SELF_DELETED( &pArea->area, &fLocked );
|
||||
|
||||
return errCode;
|
||||
}
|
||||
@@ -3544,7 +3544,7 @@ static HB_ERRCODE hb_fptGetVarField( FPTAREAP pArea, HB_USHORT uiIndex, PHB_ITEM
|
||||
}
|
||||
else if( pFile == NULL )
|
||||
{
|
||||
return SUPER_GETVALUE( ( AREAP ) pArea, uiIndex, pItem );
|
||||
return SUPER_GETVALUE( &pArea->area, uiIndex, pItem );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3662,7 +3662,7 @@ static HB_ERRCODE hb_fptPutVarField( FPTAREAP pArea, HB_USHORT uiIndex, PHB_ITEM
|
||||
HB_BOOL bDeleted;
|
||||
|
||||
/* update any pending relations and reread record if necessary */
|
||||
errCode = SELF_DELETED( ( AREAP ) pArea, &bDeleted );
|
||||
errCode = SELF_DELETED( &pArea->area, &bDeleted );
|
||||
if( errCode != HB_SUCCESS )
|
||||
return errCode;
|
||||
|
||||
@@ -3672,7 +3672,7 @@ static HB_ERRCODE hb_fptPutVarField( FPTAREAP pArea, HB_USHORT uiIndex, PHB_ITEM
|
||||
/* Buffer is hot? */
|
||||
if( ! pArea->fRecordChanged )
|
||||
{
|
||||
errCode = SELF_GOHOT( ( AREAP ) pArea );
|
||||
errCode = SELF_GOHOT( &pArea->area );
|
||||
if( errCode != HB_SUCCESS )
|
||||
return errCode;
|
||||
}
|
||||
@@ -3689,7 +3689,7 @@ static HB_ERRCODE hb_fptPutVarField( FPTAREAP pArea, HB_USHORT uiIndex, PHB_ITEM
|
||||
if( errCode == HB_SUCCESS )
|
||||
{
|
||||
/* Force writer record to eliminate race condition */
|
||||
SELF_GOCOLD( ( AREAP ) pArea );
|
||||
SELF_GOCOLD( &pArea->area );
|
||||
}
|
||||
#endif
|
||||
hb_fptFileUnLockEx( pArea );
|
||||
@@ -3876,7 +3876,7 @@ static HB_ERRCODE hb_fptPutVarField( FPTAREAP pArea, HB_USHORT uiIndex, PHB_ITEM
|
||||
HB_PUT_LE_UINT32( pFieldBuf + pField->uiLen - 6, ulOldBlock );
|
||||
#if defined( HB_MEMO_SAFELOCK )
|
||||
/* Force writer record to eliminate race condition */
|
||||
SELF_GOCOLD( ( AREAP ) pArea );
|
||||
SELF_GOCOLD( &pArea->area );
|
||||
#endif
|
||||
}
|
||||
hb_fptFileUnLockEx( pArea );
|
||||
@@ -3888,7 +3888,7 @@ static HB_ERRCODE hb_fptPutVarField( FPTAREAP pArea, HB_USHORT uiIndex, PHB_ITEM
|
||||
|
||||
return errCode;
|
||||
}
|
||||
return SUPER_PUTVALUE( ( AREAP ) pArea, uiIndex, pItem );
|
||||
return SUPER_PUTVALUE( &pArea->area, uiIndex, pItem );
|
||||
}
|
||||
|
||||
|
||||
@@ -3942,7 +3942,7 @@ static HB_ERRCODE hb_fptGetVarLen( FPTAREAP pArea, HB_USHORT uiIndex, HB_ULONG *
|
||||
return errCode;
|
||||
}
|
||||
|
||||
return SUPER_GETVARLEN( ( AREAP ) pArea, uiIndex, pLength );
|
||||
return SUPER_GETVARLEN( &pArea->area, uiIndex, pLength );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -4015,7 +4015,7 @@ static HB_ERRCODE hb_fptCreateMemFile( FPTAREAP pArea, LPDBOPENINFO pCreateInfo
|
||||
if( ! pArea->bMemoType )
|
||||
{
|
||||
pItem = hb_itemPutNI( pItem, 0 );
|
||||
if( SELF_INFO( ( AREAP ) pArea, DBI_MEMOTYPE, pItem ) != HB_SUCCESS )
|
||||
if( SELF_INFO( &pArea->area, DBI_MEMOTYPE, pItem ) != HB_SUCCESS )
|
||||
{
|
||||
hb_itemRelease( pItem );
|
||||
return HB_FAILURE;
|
||||
@@ -4045,7 +4045,7 @@ static HB_ERRCODE hb_fptCreateMemFile( FPTAREAP pArea, LPDBOPENINFO pCreateInfo
|
||||
else if( pArea->bMemoType == DB_MEMO_FPT )
|
||||
{
|
||||
pItem = hb_itemPutNI( pItem, 0 );
|
||||
if( SELF_INFO( ( AREAP ) pArea, DBI_MEMOVERSION, pItem ) != HB_SUCCESS )
|
||||
if( SELF_INFO( &pArea->area, DBI_MEMOVERSION, pItem ) != HB_SUCCESS )
|
||||
{
|
||||
hb_itemRelease( pItem );
|
||||
return HB_FAILURE;
|
||||
@@ -4058,7 +4058,7 @@ static HB_ERRCODE hb_fptCreateMemFile( FPTAREAP pArea, LPDBOPENINFO pCreateInfo
|
||||
if( ! pArea->ulMemoBlockSize )
|
||||
{
|
||||
pItem = hb_itemPutNI( pItem, 0 );
|
||||
if( SELF_INFO( ( AREAP ) pArea, DBI_MEMOBLOCKSIZE, pItem ) != HB_SUCCESS )
|
||||
if( SELF_INFO( &pArea->area, DBI_MEMOBLOCKSIZE, pItem ) != HB_SUCCESS )
|
||||
{
|
||||
hb_itemRelease( pItem );
|
||||
return HB_FAILURE;
|
||||
@@ -4073,7 +4073,7 @@ static HB_ERRCODE hb_fptCreateMemFile( FPTAREAP pArea, LPDBOPENINFO pCreateInfo
|
||||
if( ! pFileName->szExtension )
|
||||
{
|
||||
pItem = hb_itemPutC( pItem, NULL );
|
||||
SELF_INFO( ( AREAP ) pArea, DBI_MEMOEXT, pItem );
|
||||
SELF_INFO( &pArea->area, DBI_MEMOEXT, pItem );
|
||||
pFileName->szExtension = hb_itemGetCPtr( pItem );
|
||||
hb_fsFNameMerge( szFileName, pFileName );
|
||||
}
|
||||
@@ -4112,7 +4112,7 @@ static HB_ERRCODE hb_fptCreateMemFile( FPTAREAP pArea, LPDBOPENINFO pCreateInfo
|
||||
hb_errPutFlags( pError, EF_CANRETRY );
|
||||
}
|
||||
hb_errPutOsCode( pError, hb_fsError() );
|
||||
bRetry = ( SELF_ERROR( ( AREAP ) pArea, pError ) == E_RETRY );
|
||||
bRetry = ( SELF_ERROR( &pArea->area, pError ) == E_RETRY );
|
||||
}
|
||||
else
|
||||
bRetry = HB_FALSE;
|
||||
@@ -4236,7 +4236,7 @@ static HB_ERRCODE hb_fptGetValueFile( FPTAREAP pArea, HB_USHORT uiIndex, const c
|
||||
}
|
||||
return HB_SUCCESS;
|
||||
}
|
||||
return SUPER_GETVALUEFILE( ( AREAP ) pArea, uiIndex, szFile, uiMode );
|
||||
return SUPER_GETVALUEFILE( &pArea->area, uiIndex, szFile, uiMode );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -4272,7 +4272,7 @@ static HB_ERRCODE hb_fptOpenMemFile( FPTAREAP pArea, LPDBOPENINFO pOpenInfo )
|
||||
if( ! pFileName->szExtension )
|
||||
{
|
||||
PHB_ITEM pItem = hb_itemPutC( NULL, NULL );
|
||||
SELF_INFO( ( AREAP ) pArea, DBI_MEMOEXT, pItem );
|
||||
SELF_INFO( &pArea->area, DBI_MEMOEXT, pItem );
|
||||
pFileName->szExtension = hb_itemGetCPtr( pItem );
|
||||
hb_fsFNameMerge( szFileName, pFileName );
|
||||
hb_itemRelease( pItem );
|
||||
@@ -4305,7 +4305,7 @@ static HB_ERRCODE hb_fptOpenMemFile( FPTAREAP pArea, LPDBOPENINFO pOpenInfo )
|
||||
hb_errPutFileName( pError, ( char * ) szFileName );
|
||||
hb_errPutFlags( pError, EF_CANRETRY | EF_CANDEFAULT );
|
||||
}
|
||||
bRetry = ( SELF_ERROR( ( AREAP ) pArea, pError ) == E_RETRY );
|
||||
bRetry = ( SELF_ERROR( &pArea->area, pError ) == E_RETRY );
|
||||
}
|
||||
else
|
||||
bRetry = HB_FALSE;
|
||||
@@ -4408,7 +4408,7 @@ static HB_ERRCODE hb_fptPutValueFile( FPTAREAP pArea, HB_USHORT uiIndex, const c
|
||||
PHB_FILE pFile;
|
||||
|
||||
/* update any pending relations and reread record if necessary */
|
||||
errCode = SELF_DELETED( ( AREAP ) pArea, &bDeleted );
|
||||
errCode = SELF_DELETED( &pArea->area, &bDeleted );
|
||||
if( errCode != HB_SUCCESS )
|
||||
return errCode;
|
||||
|
||||
@@ -4416,7 +4416,7 @@ static HB_ERRCODE hb_fptPutValueFile( FPTAREAP pArea, HB_USHORT uiIndex, const c
|
||||
return HB_FAILURE;
|
||||
|
||||
/* Buffer is hot? */
|
||||
if( ! pArea->fRecordChanged && SELF_GOHOT( ( AREAP ) pArea ) == HB_FAILURE )
|
||||
if( ! pArea->fRecordChanged && SELF_GOHOT( &pArea->area ) == HB_FAILURE )
|
||||
return HB_FAILURE;
|
||||
|
||||
pFile = hb_fileExtOpen( szFile, NULL, FO_READ | FO_DENYNONE |
|
||||
@@ -4487,7 +4487,7 @@ static HB_ERRCODE hb_fptPutValueFile( FPTAREAP pArea, HB_USHORT uiIndex, const c
|
||||
if( errCode == HB_SUCCESS )
|
||||
{
|
||||
/* Force writer record to eliminate race condition */
|
||||
SELF_GOCOLD( ( AREAP ) pArea );
|
||||
SELF_GOCOLD( &pArea->area );
|
||||
}
|
||||
#endif
|
||||
hb_fptFileUnLockEx( pArea );
|
||||
@@ -4504,7 +4504,7 @@ static HB_ERRCODE hb_fptPutValueFile( FPTAREAP pArea, HB_USHORT uiIndex, const c
|
||||
return HB_SUCCESS;
|
||||
}
|
||||
|
||||
return SUPER_PUTVALUEFILE( ( AREAP ) pArea, uiIndex, szFile, uiMode );
|
||||
return SUPER_PUTVALUEFILE( &pArea->area, uiIndex, szFile, uiMode );
|
||||
}
|
||||
|
||||
static HB_ERRCODE hb_fptDoPackRec( FPTAREAP pArea )
|
||||
@@ -4532,7 +4532,7 @@ static HB_ERRCODE hb_fptDoPackRec( FPTAREAP pArea )
|
||||
{
|
||||
/* Buffer is hot? */
|
||||
if( ! pArea->fRecordChanged )
|
||||
errCode = SELF_GOHOT( ( AREAP ) pArea );
|
||||
errCode = SELF_GOHOT( &pArea->area );
|
||||
if( ulSize == 0 && errCode == HB_SUCCESS )
|
||||
{
|
||||
if( pArea->bMemoType == DB_MEMO_DBT )
|
||||
@@ -4607,7 +4607,7 @@ static HB_ERRCODE hb_fptDoPackRec( FPTAREAP pArea )
|
||||
{
|
||||
/* Buffer is hot? */
|
||||
if( ! pArea->fRecordChanged )
|
||||
errCode = SELF_GOHOT( ( AREAP ) pArea );
|
||||
errCode = SELF_GOHOT( &pArea->area );
|
||||
if( errCode == HB_SUCCESS )
|
||||
{
|
||||
from = FPT_BLOCK_OFFSET( ulBlock );
|
||||
@@ -4639,7 +4639,7 @@ static HB_ERRCODE hb_fptDoPack( FPTAREAP pArea, HB_ULONG ulBlockSize,
|
||||
errCode = EDBF_READONLY;
|
||||
else if( pArea->fShared )
|
||||
errCode = EDBF_SHARED;
|
||||
else if( SELF_GOCOLD( ( AREAP ) pArea ) != HB_SUCCESS )
|
||||
else if( SELF_GOCOLD( &pArea->area ) != HB_SUCCESS )
|
||||
return HB_FAILURE;
|
||||
else if( pArea->fHasMemo && pArea->pMemoFile && pArea->pDataFile )
|
||||
{
|
||||
@@ -4650,7 +4650,7 @@ static HB_ERRCODE hb_fptDoPack( FPTAREAP pArea, HB_ULONG ulBlockSize,
|
||||
if( pEvalBlock && ! HB_IS_BLOCK( pEvalBlock ) )
|
||||
pEvalBlock = NULL;
|
||||
|
||||
errCode = SELF_RECCOUNT( ( AREAP ) pArea, &ulRecords );
|
||||
errCode = SELF_RECCOUNT( &pArea->area, &ulRecords );
|
||||
if( errCode == HB_SUCCESS && ulRecords )
|
||||
{
|
||||
pArea->ulNewBlockSize = ulBlockSize && pArea->bMemoType != DB_MEMO_DBT
|
||||
@@ -4663,14 +4663,14 @@ static HB_ERRCODE hb_fptDoPack( FPTAREAP pArea, HB_ULONG ulBlockSize,
|
||||
|
||||
pArea->ulMemoBlockSize = pArea->ulNewBlockSize;
|
||||
pArea->pMemoFile = pArea->pMemoTmpFile;
|
||||
errCode = SELF_CREATEMEMFILE( ( AREAP ) pArea, NULL );
|
||||
errCode = SELF_CREATEMEMFILE( &pArea->area, NULL );
|
||||
pArea->pMemoFile = pFile;
|
||||
pArea->ulMemoBlockSize = ulMemoBlockSize;
|
||||
if( errCode == HB_SUCCESS )
|
||||
{
|
||||
if( pEvalBlock )
|
||||
{
|
||||
SELF_GOTO( ( AREAP ) pArea, 0 );
|
||||
SELF_GOTO( &pArea->area, 0 );
|
||||
pArea->area.fEof = HB_FALSE;
|
||||
hb_vmEvalBlock( pEvalBlock );
|
||||
}
|
||||
@@ -4679,7 +4679,7 @@ static HB_ERRCODE hb_fptDoPack( FPTAREAP pArea, HB_ULONG ulBlockSize,
|
||||
{
|
||||
HB_BOOL fDeleted;
|
||||
|
||||
errCode = SELF_GOTO( ( AREAP ) pArea, ulRecNo );
|
||||
errCode = SELF_GOTO( &pArea->area, ulRecNo );
|
||||
if( errCode != HB_SUCCESS )
|
||||
break;
|
||||
if( pEvalBlock )
|
||||
@@ -4692,20 +4692,20 @@ static HB_ERRCODE hb_fptDoPack( FPTAREAP pArea, HB_ULONG ulBlockSize,
|
||||
}
|
||||
|
||||
/* read record into bugger */
|
||||
errCode = SELF_DELETED( ( AREAP ) pArea, &fDeleted );
|
||||
errCode = SELF_DELETED( &pArea->area, &fDeleted );
|
||||
if( errCode != HB_SUCCESS )
|
||||
break;
|
||||
errCode = hb_fptDoPackRec( pArea );
|
||||
if( errCode != HB_SUCCESS )
|
||||
break;
|
||||
errCode = SELF_GOCOLD( ( AREAP ) pArea );
|
||||
errCode = SELF_GOCOLD( &pArea->area );
|
||||
if( errCode != HB_SUCCESS )
|
||||
break;
|
||||
}
|
||||
|
||||
if( errCode == HB_SUCCESS && pEvalBlock )
|
||||
{
|
||||
SELF_GOTO( ( AREAP ) pArea, 0 );
|
||||
SELF_GOTO( &pArea->area, 0 );
|
||||
pArea->area.fBof = HB_FALSE;
|
||||
hb_vmEvalBlock( pEvalBlock );
|
||||
}
|
||||
@@ -4760,7 +4760,7 @@ static HB_ERRCODE hb_fptPackRec( FPTAREAP pArea, HB_ULONG ulRecNo, HB_BOOL * pfW
|
||||
|
||||
if( pArea->fPackMemo )
|
||||
{
|
||||
HB_ERRCODE errCode = SUPER_PACKREC( ( AREAP ) pArea, ulRecNo, pfWritten );
|
||||
HB_ERRCODE errCode = SUPER_PACKREC( &pArea->area, ulRecNo, pfWritten );
|
||||
if( errCode == HB_SUCCESS && *pfWritten )
|
||||
{
|
||||
errCode = hb_fptDoPackRec( pArea );
|
||||
@@ -4773,7 +4773,7 @@ static HB_ERRCODE hb_fptPackRec( FPTAREAP pArea, HB_ULONG ulRecNo, HB_BOOL * pfW
|
||||
return errCode;
|
||||
}
|
||||
|
||||
return SUPER_PACKREC( ( AREAP ) pArea, ulRecNo, pfWritten );
|
||||
return SUPER_PACKREC( &pArea->area, ulRecNo, pfWritten );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -4789,7 +4789,7 @@ static HB_ERRCODE hb_fptPack( FPTAREAP pArea )
|
||||
{
|
||||
char szFile[ HB_PATH_MAX ];
|
||||
|
||||
if( SELF_GOCOLD( ( AREAP ) pArea ) != HB_SUCCESS )
|
||||
if( SELF_GOCOLD( &pArea->area ) != HB_SUCCESS )
|
||||
return HB_FAILURE;
|
||||
|
||||
pArea->pMemoTmpFile = hb_fileCreateTemp( NULL, NULL, FC_NORMAL, szFile );
|
||||
@@ -4801,13 +4801,13 @@ static HB_ERRCODE hb_fptPack( FPTAREAP pArea )
|
||||
pArea->ulNewBlockSize = pArea->ulMemoBlockSize;
|
||||
|
||||
pArea->pMemoFile = pArea->pMemoTmpFile;
|
||||
errCode = SELF_CREATEMEMFILE( ( AREAP ) pArea, NULL );
|
||||
errCode = SELF_CREATEMEMFILE( &pArea->area, NULL );
|
||||
pArea->pMemoFile = pFile;
|
||||
|
||||
if( errCode == HB_SUCCESS )
|
||||
{
|
||||
pArea->fPackMemo = HB_TRUE;
|
||||
errCode = SUPER_PACK( ( AREAP ) pArea );
|
||||
errCode = SUPER_PACK( &pArea->area );
|
||||
pArea->fPackMemo = HB_FALSE;
|
||||
if( errCode == HB_SUCCESS )
|
||||
{
|
||||
@@ -4843,7 +4843,7 @@ static HB_ERRCODE hb_fptPack( FPTAREAP pArea )
|
||||
}
|
||||
}
|
||||
|
||||
return SUPER_PACK( ( AREAP ) pArea );
|
||||
return SUPER_PACK( &pArea->area );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -5078,7 +5078,7 @@ static HB_ERRCODE hb_fptInfo( FPTAREAP pArea, HB_USHORT uiIndex, PHB_ITEM pItem
|
||||
break;
|
||||
|
||||
default:
|
||||
return SUPER_INFO( ( AREAP ) pArea, uiIndex, pItem );
|
||||
return SUPER_INFO( &pArea->area, uiIndex, pItem );
|
||||
}
|
||||
|
||||
return HB_SUCCESS;
|
||||
@@ -5108,7 +5108,7 @@ static HB_ERRCODE hb_fptFieldInfo( FPTAREAP pArea, HB_USHORT uiIndex, HB_USHORT
|
||||
HB_ULONG ulBlock, ulSize, ulType;
|
||||
HB_BOOL bDeleted;
|
||||
|
||||
SELF_DELETED( ( AREAP ) pArea, &bDeleted );
|
||||
SELF_DELETED( &pArea->area, &bDeleted );
|
||||
switch( uiType )
|
||||
{
|
||||
case DBS_BLOB_GET: /* BLOBGet() { <nStart>, <nCount> } */
|
||||
@@ -5172,7 +5172,7 @@ static HB_ERRCODE hb_fptFieldInfo( FPTAREAP pArea, HB_USHORT uiIndex, HB_USHORT
|
||||
return HB_SUCCESS;
|
||||
}
|
||||
}
|
||||
return SUPER_FIELDINFO( ( AREAP ) pArea, uiIndex, uiType, pItem );
|
||||
return SUPER_FIELDINFO( &pArea->area, uiIndex, uiType, pItem );
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user