diff --git a/harbour/ChangeLog b/harbour/ChangeLog index d231474a54..4d7b6ba28d 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,8 @@ +20000415-15:15 DST Paul Tucker + * source/rdd/dbfcdx/dbfcdx1.c + * a number of casts to allow msvc to compile + * added missing entries to workarea struct + 20000415-20:46 GMT+1 Victor Szakats * source/rdd/dbfcdx/dbfcdx1.c diff --git a/harbour/source/rdd/dbfcdx/dbfcdx1.c b/harbour/source/rdd/dbfcdx/dbfcdx1.c index 4f7fed2fde..1b6aa0fd32 100644 --- a/harbour/source/rdd/dbfcdx/dbfcdx1.c +++ b/harbour/source/rdd/dbfcdx/dbfcdx1.c @@ -257,7 +257,15 @@ HB_INIT_SYMBOLS_BEGIN( dbfcdx1__InitSymbols ) { "_DBFCDX", HB_FS_PUBLIC, HB_FUNCNAME( _DBFCDX ), NULL }, { "DBFCDX_GETFUNCTABLE", HB_FS_PUBLIC, HB_FUNCNAME( DBFCDX_GETFUNCTABLE ), NULL } HB_INIT_SYMBOLS_END( dbfcdx1__InitSymbols ) -#if ! defined(__GNUC__) && ! defined(_MSC_VER) +#if defined(_MSC_VER) + #pragma data_seg( INIT$BEG,"DATA" ) + #pragma data_seg( INIT$HRB,"DATA" ) + static HB_$INITSYM hb_vm_auto_dbfcdx1__InitSymbols = dbfcdx1__InitSymbols; + #pragma data_seg() + #if _MSC_VER >= 1000 + #pragma comment( linker, "/Merge:.CRT=.data" ) + #endif +#elif ! defined(__GNUC__) #pragma startup dbfcdx1__InitSymbols #endif @@ -750,12 +758,12 @@ static void hb_cdxTagTagStore( LPTAGINFO pTag ) pHeader.Reserve4 = 1 + ( pTag->KeyExpr == NULL ? 0 : strlen( pTag->KeyExpr ) ); pHeader.KeyExpLen = pHeader.Reserve4; if( pTag->KeyExpr != NULL ) - strcpy( pHeader.KeyPool, pTag->KeyExpr ); + strcpy( ( char * ) pHeader.KeyPool, pTag->KeyExpr ); uiForLen = pTag->ForExpr == NULL ? 0 : strlen( pTag->ForExpr ); if( uiForLen > 0 ) { pHeader.ForExpLen = uiForLen + 1; - strcpy( pHeader.KeyPool + pHeader.KeyExpLen, pTag->ForExpr ); + strcpy( ( char * ) pHeader.KeyPool + pHeader.KeyExpLen, pTag->ForExpr ); } else pHeader.ForExpLen = 1; @@ -1183,12 +1191,12 @@ static void hb_cdxTagTagLoad( LPTAGINFO pTag ) pTag->UniqueKey = ( pTag->OptFlags & 0x01 ); pTag->AscendKey = ( pHeader.AscDesc == 0 ); pTag->KeyExpr = ( char * ) hb_xgrab( CDX_MAX_KEY + 1 ); - hb_strncpyUpper( pTag->KeyExpr, pHeader.KeyPool, CDX_MAX_KEY ); + hb_strncpyUpper( pTag->KeyExpr, ( char * ) pHeader.KeyPool, CDX_MAX_KEY ); if( pTag->OptFlags < 0x80 && pTag->KeyExpr[ 0 ] == 0 ) return; if( pTag->OptFlags & 0x80 ) return; - SELF_COMPILE( pTag->Owner->Owner, pTag->KeyExpr ); + SELF_COMPILE( pTag->Owner->Owner, ( BYTE * ) pTag->KeyExpr ); pTag->pKeyItem = pTag->Owner->Owner->valResult; pTag->Owner->Owner->valResult = NULL; pMacro = ( HB_MACRO_PTR ) hb_itemGetPtr( pTag->pKeyItem ); @@ -1222,9 +1230,9 @@ static void hb_cdxTagTagLoad( LPTAGINFO pTag ) if( pHeader.KeyPool[ strlen( pTag->KeyExpr ) + 1 ] == NULL ) return; pTag->ForExpr = ( char * ) hb_xgrab( CDX_MAX_KEY + 1 ); - hb_strncpyUpper( pTag->ForExpr, pHeader.KeyPool + + hb_strncpyUpper( pTag->ForExpr, ( const char * ) pHeader.KeyPool + strlen( pTag->KeyExpr ) + 1, CDX_MAX_KEY ); - SELF_COMPILE( pTag->Owner->Owner, pTag->ForExpr ); + SELF_COMPILE( pTag->Owner->Owner, ( BYTE * ) pTag->ForExpr ); pTag->pForItem = pTag->Owner->Owner->valResult; pTag->Owner->Owner->valResult = NULL; pMacro = ( HB_MACRO_PTR ) hb_itemGetPtr( pTag->pForItem ); @@ -1981,9 +1989,9 @@ static LPSORTINFO hb_cdxSortNew( LPTAGINFO pTag, BOOL bUnique ) pSort->NodeShift++; } pSort->ChunkSize = pSort->ChunkLimit; - pSort->ChunkList = hb_xgrab( pSort->ChunkSize * sizeof( LONG ) ); + pSort->ChunkList = ( long * ) hb_xgrab( pSort->ChunkSize * sizeof( LONG ) ); memset( pSort->ChunkList, 0, pSort->ChunkSize * sizeof( LONG ) ); - P = hb_xgrab( pSort->SortChunk * sizeof( BYTE ) ); + P = ( BYTE * ) hb_xgrab( pSort->SortChunk * sizeof( BYTE ) ); memset( P, 0, pSort->SortChunk * sizeof( BYTE ) ); pSort->ChunkList[ 0 ] = ( LONG ) P; hb_cdxSortLinkNew( pSort, &pSort->RootLink ); @@ -2060,7 +2068,7 @@ static void hb_cdxSortGetNewChunk( LPSORTINFO pSort ) } P = ( BYTE * ) pSort->ChunkList[ pSort->ChunkCur ]; if( P == NULL ) - P = hb_xgrab( pSort->SortChunk * sizeof( BYTE ) ); + P = ( BYTE * ) hb_xgrab( pSort->SortChunk * sizeof( BYTE ) ); if( pSort->ChunkCur != 0 ) { memset( P, 0, pSort->SortChunk * sizeof( BYTE ) ); @@ -2900,14 +2908,14 @@ static ERRCODE cdxOrderCreate( AREAP pArea, LPDBORDERCREATEINFO pOrderInfo ) pArea->lpIndexInfo = pIndex; /* New file? */ - if( !hb_fsFile( szFileName ) ) + if( !hb_fsFile( ( BYTE * ) szFileName ) ) { - pIndex->DiskFile = hb_fsCreate( szFileName, FC_NORMAL ); + pIndex->DiskFile = hb_fsCreate( ( BYTE * ) szFileName, FC_NORMAL ); bNewFile = TRUE; } else { - pIndex->DiskFile = hb_fsOpen( szFileName, FO_READWRITE | + pIndex->DiskFile = hb_fsOpen( ( BYTE * ) szFileName, FO_READWRITE | ( pArea->lpExtendInfo->fExclusive ? FO_EXCLUSIVE : FO_DENYNONE ) ); bNewFile = FALSE; @@ -2984,14 +2992,14 @@ static ERRCODE cdxOrderCreate( AREAP pArea, LPDBORDERCREATEINFO pOrderInfo ) hb_xfree( szFileName ); - hb_strncpyUpper( szTagName, pOrderInfo->atomBagName, CDX_MAX_TAG_NAME_LEN ); + hb_strncpyUpper( szTagName, ( const char * ) pOrderInfo->atomBagName, CDX_MAX_TAG_NAME_LEN ); uiCount = strlen( szTagName ); while( uiCount > 0 && szTagName[ uiCount - 1 ] == ' ' ) uiCount--; szTagName[ uiCount ] = NULL; hb_cdxIndexAddTag( pIndex, szTagName, pOrderInfo->abExpr->item.asString.value, - pKeyExp, bType, uiLen, pArea->lpdbOrdCondInfo ? pArea->lpdbOrdCondInfo->abFor : - NULL, pForExp, pArea->lpdbOrdCondInfo ? + pKeyExp, bType, uiLen, ( char * ) ( pArea->lpdbOrdCondInfo ? pArea->lpdbOrdCondInfo->abFor : + NULL ), pForExp, pArea->lpdbOrdCondInfo ? !pArea->lpdbOrdCondInfo->fDescending : TRUE , pOrderInfo->fUnique ); hb_xfree( szTagName ); @@ -3263,9 +3271,14 @@ static RDDFUNCS cdxTable = { cdxBof, cdxOrderInfo, cdxClearFilter, cdxClearLocate, + NULL, + NULL, cdxFilterText, + NULL, cdxSetFilter, cdxSetLocate, + NULL, + NULL, cdxCompile, cdxError, cdxEvalBlock,