From f3ac5e10e4dc0642c631197e5a6e5b70c3d5dcfc Mon Sep 17 00:00:00 2001 From: Przemyslaw Czerpak Date: Thu, 13 Sep 2007 17:50:35 +0000 Subject: [PATCH] 2007-09-13 19:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/contrib/rdd_ads/ads1.c * harbour/source/rdd/dbf1.c * variable name clean-up --- harbour/ChangeLog | 5 ++ harbour/contrib/rdd_ads/ads1.c | 105 +++++++++++++++++---------------- harbour/source/rdd/dbf1.c | 69 +++++++++++----------- 3 files changed, 95 insertions(+), 84 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 98af031b0b..4970c64ae9 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,11 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2007-09-13 19:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/contrib/rdd_ads/ads1.c + * harbour/source/rdd/dbf1.c + * variable name clean-up + 2007-09-13 16:40 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/include/Makefile + harbour/include/hbsxdef.ch diff --git a/harbour/contrib/rdd_ads/ads1.c b/harbour/contrib/rdd_ads/ads1.c index 03506044e7..453962cfcd 100644 --- a/harbour/contrib/rdd_ads/ads1.c +++ b/harbour/contrib/rdd_ads/ads1.c @@ -1347,7 +1347,7 @@ static ERRCODE adsAppend( ADSAREAP pArea, BOOL fUnLockAll ) static ERRCODE adsCreateFields( ADSAREAP pArea, PHB_ITEM pStruct ) { USHORT uiItems, uiCount, uiLen, uiDec; - DBFIELDINFO pFieldInfo; + DBFIELDINFO dbFieldInfo; PHB_ITEM pFieldDesc; char *szFieldType; int iData; @@ -1357,20 +1357,22 @@ static ERRCODE adsCreateFields( ADSAREAP pArea, PHB_ITEM pStruct ) uiItems = ( USHORT ) hb_arrayLen( pStruct ); SELF_SETFIELDEXTENT( ( AREAP ) pArea, uiItems ); + memset( &dbFieldInfo, 0, sizeof( dbFieldInfo ) ); + for( uiCount = 0; uiCount < uiItems; uiCount++ ) { - pFieldInfo.uiTypeExtended = 0; + dbFieldInfo.uiTypeExtended = 0; pFieldDesc = hb_arrayGetItemPtr( pStruct, uiCount + 1 ); - pFieldInfo.atomName = ( BYTE * ) hb_arrayGetCPtr( pFieldDesc, 1 ); + dbFieldInfo.atomName = ( BYTE * ) hb_arrayGetCPtr( pFieldDesc, 1 ); iData = hb_arrayGetNI( pFieldDesc, 3 ); if( iData < 0 ) iData = 0; - uiLen = pFieldInfo.uiLen = ( USHORT ) iData; + uiLen = dbFieldInfo.uiLen = ( USHORT ) iData; iData = hb_arrayGetNI( pFieldDesc, 4 ); if( iData < 0 ) iData = 0; uiDec = ( USHORT ) iData; - pFieldInfo.uiDec = 0; + dbFieldInfo.uiDec = 0; szFieldType = hb_arrayGetCPtr( pFieldDesc, 2 ); iData = toupper( szFieldType[ 0 ] ); switch( iData ) @@ -1378,15 +1380,15 @@ static ERRCODE adsCreateFields( ADSAREAP pArea, PHB_ITEM pStruct ) case 'C': if( strlen( szFieldType ) == 1 || ! hb_stricmp( szFieldType, "char" ) ) { - pFieldInfo.uiType = HB_IT_STRING; - pFieldInfo.uiLen = uiLen + uiDec * 256; + dbFieldInfo.uiType = HB_IT_STRING; + dbFieldInfo.uiLen = uiLen + uiDec * 256; } else if( ! hb_stricmp( szFieldType, "curdouble" ) && pArea->iFileType == ADS_ADT ) { - pFieldInfo.uiType = HB_IT_LONG; - pFieldInfo.uiTypeExtended = ADS_CURDOUBLE; - pFieldInfo.uiLen = 8; - pFieldInfo.uiDec = uiDec; + dbFieldInfo.uiType = HB_IT_LONG; + dbFieldInfo.uiTypeExtended = ADS_CURDOUBLE; + dbFieldInfo.uiLen = 8; + dbFieldInfo.uiDec = uiDec; } else { @@ -1395,27 +1397,27 @@ static ERRCODE adsCreateFields( ADSAREAP pArea, PHB_ITEM pStruct ) break; case 'L': - pFieldInfo.uiType = HB_IT_LOGICAL; - pFieldInfo.uiLen = 1; + dbFieldInfo.uiType = HB_IT_LOGICAL; + dbFieldInfo.uiLen = 1; break; case 'M': - pFieldInfo.uiType = HB_IT_MEMO; - pFieldInfo.uiLen = ( pArea->iFileType == ADS_ADT ) ? 9 : 10; + dbFieldInfo.uiType = HB_IT_MEMO; + dbFieldInfo.uiLen = ( pArea->iFileType == ADS_ADT ) ? 9 : 10; break; case 'D': if( strlen( szFieldType ) == 1 || ! hb_stricmp( szFieldType, "date" ) ) { - pFieldInfo.uiType = HB_IT_DATE; - pFieldInfo.uiLen = ( pArea->iFileType == ADS_ADT ) ? 4 : 8; + dbFieldInfo.uiType = HB_IT_DATE; + dbFieldInfo.uiLen = ( pArea->iFileType == ADS_ADT ) ? 4 : 8; } else if( ! hb_stricmp( szFieldType, "double" ) ) { - pFieldInfo.uiType = HB_IT_LONG; - pFieldInfo.uiTypeExtended = ADS_DOUBLE; - pFieldInfo.uiLen = 8; - pFieldInfo.uiDec = uiDec; + dbFieldInfo.uiType = HB_IT_LONG; + dbFieldInfo.uiTypeExtended = ADS_DOUBLE; + dbFieldInfo.uiLen = 8; + dbFieldInfo.uiDec = uiDec; } else { @@ -1424,7 +1426,7 @@ static ERRCODE adsCreateFields( ADSAREAP pArea, PHB_ITEM pStruct ) break; case 'N': - pFieldInfo.uiType = HB_IT_LONG; + dbFieldInfo.uiType = HB_IT_LONG; if( uiLen > 32 ) { @@ -1432,15 +1434,15 @@ static ERRCODE adsCreateFields( ADSAREAP pArea, PHB_ITEM pStruct ) } else { - pFieldInfo.uiDec = uiDec; + dbFieldInfo.uiDec = uiDec; } break; case 'A': if( pArea->iFileType == ADS_ADT ) { - pFieldInfo.uiType = HB_IT_LONG; - pFieldInfo.uiTypeExtended = ADS_AUTOINC; + dbFieldInfo.uiType = HB_IT_LONG; + dbFieldInfo.uiTypeExtended = ADS_AUTOINC; } else { @@ -1449,21 +1451,21 @@ static ERRCODE adsCreateFields( ADSAREAP pArea, PHB_ITEM pStruct ) break; case 'B': - pFieldInfo.uiType = HB_IT_MEMO; - pFieldInfo.uiTypeExtended = ADS_BINARY; - pFieldInfo.uiLen = ( pArea->iFileType == ADS_ADT ) ? 9 : 10; + dbFieldInfo.uiType = HB_IT_MEMO; + dbFieldInfo.uiTypeExtended = ADS_BINARY; + dbFieldInfo.uiLen = ( pArea->iFileType == ADS_ADT ) ? 9 : 10; break; case 'V': - pFieldInfo.uiType = HB_IT_MEMO; - pFieldInfo.uiTypeExtended = ADS_VARCHAR; + dbFieldInfo.uiType = HB_IT_MEMO; + dbFieldInfo.uiTypeExtended = ADS_VARCHAR; break; case 'R': if( pArea->iFileType == ADS_ADT ) { - pFieldInfo.uiType = HB_IT_STRING; - pFieldInfo.uiTypeExtended = ADS_RAW; + dbFieldInfo.uiType = HB_IT_STRING; + dbFieldInfo.uiTypeExtended = ADS_RAW; } else { @@ -1474,15 +1476,15 @@ static ERRCODE adsCreateFields( ADSAREAP pArea, PHB_ITEM pStruct ) case 'S': if( !hb_stricmp( szFieldType, "shortdate" ) ) { - pFieldInfo.uiType = HB_IT_DATE; - pFieldInfo.uiTypeExtended = ADS_COMPACTDATE; - pFieldInfo.uiLen = 4; + dbFieldInfo.uiType = HB_IT_DATE; + dbFieldInfo.uiTypeExtended = ADS_COMPACTDATE; + dbFieldInfo.uiLen = 4; } else if( !hb_stricmp( szFieldType, "shortint" ) && pArea->iFileType == ADS_ADT ) { - pFieldInfo.uiType = HB_IT_LONG; - pFieldInfo.uiTypeExtended = ADS_SHORTINT; - pFieldInfo.uiLen = 2; + dbFieldInfo.uiType = HB_IT_LONG; + dbFieldInfo.uiTypeExtended = ADS_SHORTINT; + dbFieldInfo.uiLen = 2; } else { @@ -1493,15 +1495,15 @@ static ERRCODE adsCreateFields( ADSAREAP pArea, PHB_ITEM pStruct ) case 'T': if( ! hb_stricmp( szFieldType, "timestamp" ) && pArea->iFileType == ADS_ADT ) { - pFieldInfo.uiType = HB_IT_LONG; - pFieldInfo.uiTypeExtended = ADS_TIMESTAMP; - pFieldInfo.uiLen = 8; + dbFieldInfo.uiType = HB_IT_LONG; + dbFieldInfo.uiTypeExtended = ADS_TIMESTAMP; + dbFieldInfo.uiLen = 8; } else if( !hb_stricmp( szFieldType, "time" ) && pArea->iFileType == ADS_ADT ) { - pFieldInfo.uiType = HB_IT_LONG; - pFieldInfo.uiTypeExtended = ADS_TIME; - pFieldInfo.uiLen = 4; + dbFieldInfo.uiType = HB_IT_LONG; + dbFieldInfo.uiTypeExtended = ADS_TIME; + dbFieldInfo.uiLen = 4; } else { @@ -1512,15 +1514,15 @@ static ERRCODE adsCreateFields( ADSAREAP pArea, PHB_ITEM pStruct ) case 'I': if( !hb_stricmp( szFieldType, "integer" ) ) { - pFieldInfo.uiType = HB_IT_LONG; - pFieldInfo.uiTypeExtended = ADS_INTEGER; - pFieldInfo.uiLen = 4; + dbFieldInfo.uiType = HB_IT_LONG; + dbFieldInfo.uiTypeExtended = ADS_INTEGER; + dbFieldInfo.uiLen = 4; } else if( !hb_stricmp( szFieldType, "image" ) ) { - pFieldInfo.uiType = HB_IT_MEMO; - pFieldInfo.uiTypeExtended = ADS_IMAGE; - pFieldInfo.uiLen = ( pArea->iFileType == ADS_ADT ) ? 9 : 10; + dbFieldInfo.uiType = HB_IT_MEMO; + dbFieldInfo.uiTypeExtended = ADS_IMAGE; + dbFieldInfo.uiLen = ( pArea->iFileType == ADS_ADT ) ? 9 : 10; } else { @@ -1534,7 +1536,7 @@ static ERRCODE adsCreateFields( ADSAREAP pArea, PHB_ITEM pStruct ) } } /* Add field */ - if( SELF_ADDFIELD( (AREAP)pArea, &pFieldInfo ) == FAILURE ) + if( SELF_ADDFIELD( (AREAP)pArea, &dbFieldInfo ) == FAILURE ) { return FAILURE; } @@ -2866,6 +2868,7 @@ static ERRCODE adsOpen( ADSAREAP pArea, LPDBOPENINFO pOpenInfo ) SELF_SETFIELDEXTENT( ( AREAP ) pArea, uiFields ); + memset( &dbFieldInfo, 0, sizeof( dbFieldInfo ) ); pArea->maxFieldLen = 0; for( uiCount = 1; uiCount <= uiFields; uiCount++ ) diff --git a/harbour/source/rdd/dbf1.c b/harbour/source/rdd/dbf1.c index cd337c36da..af6f5d9435 100644 --- a/harbour/source/rdd/dbf1.c +++ b/harbour/source/rdd/dbf1.c @@ -3146,7 +3146,7 @@ static ERRCODE hb_dbfOpen( DBFAREAP pArea, LPDBOPENINFO pOpenInfo ) PHB_FNAME pFileName; BYTE * pBuffer; LPDBFFIELD pField; - DBFIELDINFO pFieldInfo; + DBFIELDINFO dbFieldInfo; BYTE szFileName[ _POSIX_PATH_MAX + 1 ]; char szAlias[ HARBOUR_MAX_RDD_ALIAS_LENGTH + 1 ]; @@ -3406,38 +3406,41 @@ static ERRCODE hb_dbfOpen( DBFAREAP pArea, LPDBOPENINFO pOpenInfo ) } } + /* Clear dbFieldInfo structure */ + memset( &dbFieldInfo, 0, sizeof( dbFieldInfo ) ); + /* Size for deleted flag */ pArea->uiRecordLen = 1; for( uiCount = 0; uiCount < uiFields + uiSkip; uiCount++ ) { pField = ( LPDBFFIELD ) ( pBuffer + uiCount * sizeof( DBFFIELD ) ); - pFieldInfo.atomName = pField->bName; - pFieldInfo.atomName[10] = '\0'; - /* hb_strUpper( (char *) pFieldInfo.atomName, 11 ); */ - pFieldInfo.uiLen = pField->bLen; - pFieldInfo.uiDec = 0; - pFieldInfo.uiTypeExtended = 0; + dbFieldInfo.atomName = pField->bName; + dbFieldInfo.atomName[10] = '\0'; + /* hb_strUpper( (char *) dbFieldInfo.atomName, 11 ); */ + dbFieldInfo.uiLen = pField->bLen; + dbFieldInfo.uiDec = 0; + dbFieldInfo.uiTypeExtended = 0; switch( pField->bType ) { case 'C': - pFieldInfo.uiType = HB_IT_STRING; - pFieldInfo.uiLen = pField->bLen + pField->bDec * 256; + dbFieldInfo.uiType = HB_IT_STRING; + dbFieldInfo.uiLen = pField->bLen + pField->bDec * 256; break; case 'L': - pFieldInfo.uiType = HB_IT_LOGICAL; - pFieldInfo.uiLen = 1; + dbFieldInfo.uiType = HB_IT_LOGICAL; + dbFieldInfo.uiLen = 1; break; case 'M': - pFieldInfo.uiType = HB_IT_MEMO; + dbFieldInfo.uiType = HB_IT_MEMO; pArea->fHasMemo = TRUE; break; case 'V': - pFieldInfo.uiType = HB_IT_ANY; - if( pFieldInfo.uiLen >= 6 ) + dbFieldInfo.uiType = HB_IT_ANY; + if( dbFieldInfo.uiLen >= 6 ) { pArea->uiMemoVersion = DB_MEMOVER_SIX; pArea->fHasMemo = TRUE; @@ -3445,29 +3448,29 @@ static ERRCODE hb_dbfOpen( DBFAREAP pArea, LPDBOPENINFO pOpenInfo ) break; case 'D': - pFieldInfo.uiType = HB_IT_DATE; - if( pFieldInfo.uiLen != 3 && pFieldInfo.uiLen != 4 ) - pFieldInfo.uiLen = 8; + dbFieldInfo.uiType = HB_IT_DATE; + if( dbFieldInfo.uiLen != 3 && dbFieldInfo.uiLen != 4 ) + dbFieldInfo.uiLen = 8; break; case 'I': case 'Y': - pFieldInfo.uiType = HB_IT_INTEGER; - if( ( pFieldInfo.uiLen > 4 && pFieldInfo.uiLen != 8 ) || - pFieldInfo.uiLen == 0 ) - pFieldInfo.uiLen = 4; - pFieldInfo.uiDec = pField->bDec; + dbFieldInfo.uiType = HB_IT_INTEGER; + if( ( dbFieldInfo.uiLen > 4 && dbFieldInfo.uiLen != 8 ) || + dbFieldInfo.uiLen == 0 ) + dbFieldInfo.uiLen = 4; + dbFieldInfo.uiDec = pField->bDec; break; case '2': case '4': - pFieldInfo.uiType = HB_IT_INTEGER; - pFieldInfo.uiLen = pField->bType - '0'; + dbFieldInfo.uiType = HB_IT_INTEGER; + dbFieldInfo.uiLen = pField->bType - '0'; break; case 'N': case 'F': - pFieldInfo.uiType = HB_IT_LONG; + dbFieldInfo.uiType = HB_IT_LONG; /* DBASE documentation defines maximum numeric field size as 20 * but Clipper allows to create longer fields so I removed this * limit, Druzus @@ -3477,30 +3480,30 @@ static ERRCODE hb_dbfOpen( DBFAREAP pArea, LPDBOPENINFO pOpenInfo ) errCode = FAILURE; else */ - pFieldInfo.uiDec = pField->bDec; + dbFieldInfo.uiDec = pField->bDec; break; case '8': case 'B': - pFieldInfo.uiType = HB_IT_DOUBLE; - pFieldInfo.uiLen = 8; - pFieldInfo.uiDec = pField->bDec; + dbFieldInfo.uiType = HB_IT_DOUBLE; + dbFieldInfo.uiLen = 8; + dbFieldInfo.uiDec = pField->bDec; break; /* types which are not supported by VM - mapped to different ones */ case 'T': case '@': - pFieldInfo.uiType = HB_IT_INTEGER; + dbFieldInfo.uiType = HB_IT_INTEGER; break; default: if( pArea->bTableType == DB_DBF_VFP && pField->bFieldFlags & 0x01 ) { - if( memcmp( pFieldInfo.atomName, "_NullFlags", 10 ) == 0 ) + if( memcmp( dbFieldInfo.atomName, "_NullFlags", 10 ) == 0 ) { /* TODO: NULLABLE and VARLENGTH support */ } - pArea->uiRecordLen += pFieldInfo.uiLen; + pArea->uiRecordLen += dbFieldInfo.uiLen; continue; } errCode = FAILURE; @@ -3509,7 +3512,7 @@ static ERRCODE hb_dbfOpen( DBFAREAP pArea, LPDBOPENINFO pOpenInfo ) /* Add field */ if( errCode == SUCCESS ) - errCode = SELF_ADDFIELD( ( AREAP ) pArea, &pFieldInfo ); + errCode = SELF_ADDFIELD( ( AREAP ) pArea, &dbFieldInfo ); /* Exit if error */ if( errCode != SUCCESS )