From 7bc80aaf1d9da7a2177bc3d7442381ebbc7a321d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Czerpak?= Date: Wed, 22 Jun 2016 23:58:12 +0200 Subject: [PATCH] 2016-06-22 23:58 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * include/dbinfo.ch * updated few comments * src/rdd/dbf1.c * src/rdd/delim1.c ! fixed dbInfo( DBI_SETHEADER ) and hb_rddInfo( RDDI_SETHEADER ) to not changer previous settings ! set DB_SETHEADER_APPENDSYNC as default update header mode --- ChangeLog.txt | 10 ++++++++++ include/dbinfo.ch | 10 +++++----- src/rdd/dbf1.c | 26 ++++++++++++++++++-------- src/rdd/delim1.c | 13 ++++++++----- 4 files changed, 41 insertions(+), 18 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 03f18ffd77..34bf39ea17 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -10,6 +10,16 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2016-06-22 23:58 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) + * include/dbinfo.ch + * updated few comments + + * src/rdd/dbf1.c + * src/rdd/delim1.c + ! fixed dbInfo( DBI_SETHEADER ) and hb_rddInfo( RDDI_SETHEADER ) + to not changer previous settings + ! set DB_SETHEADER_APPENDSYNC as default update header mode + 2016-06-20 21:59 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * doc/cmpopt.txt * enumeration diff --git a/include/dbinfo.ch b/include/dbinfo.ch index 847edeb3eb..cc908ebfe1 100644 --- a/include/dbinfo.ch +++ b/include/dbinfo.ch @@ -347,17 +347,17 @@ #define FILEPUT_COMPRESS BLOB_IMPORT_COMPRESS #define FILEPUT_ENCRYPT BLOB_IMPORT_ENCRYPT -/* DBF TYPES */ +/* DBF TYPES: RDDI_TABLETYPE, DBI_TABLETYPE */ #define DB_DBF_STD 1 #define DB_DBF_VFP 2 -/* MEMO TYPES */ +/* MEMO TYPES: RDDI_MEMOTYPE, DBI_MEMOTYPE, */ #define DB_MEMO_NONE 0 #define DB_MEMO_DBT 1 #define DB_MEMO_FPT 2 #define DB_MEMO_SMT 3 -/* MEMO EXTENDED TYPES */ +/* MEMO EXTENDED TYPES: RDDI_MEMOVERSION, DBI_MEMOVERSION */ #define DB_MEMOVER_STD 1 #define DB_MEMOVER_SIX 2 #define DB_MEMOVER_FLEX 3 @@ -367,7 +367,7 @@ #define DB_CRYPT_NONE 0 #define DB_CRYPT_SIX 1 -/* LOCK SCHEMES */ +/* LOCK SCHEMES: RDDI_LOCKSCHEME, DBI_LOCKSCHEME */ #define DB_DBFLOCK_DEFAULT 0 #define DB_DBFLOCK_CLIPPER 1 /* default Cl*pper locking scheme */ #define DB_DBFLOCK_COMIX 2 /* COMIX and CL53 DBFCDX hyper locking scheme */ @@ -389,7 +389,7 @@ #define DB_SETHEADER_WRITE 2 /* update in GOCOLD method */ #define DB_SETHEADER_APPEND 0 /* record append sets update header flag (always enabled) */ #define DB_SETHEADER_REPLACE 4 /* record modification sets update header flag */ -#define DB_SETHEADER_YYEAR 16 /* store year() % 100 instead of year - 1900 */ +#define DB_SETHEADER_YYEAR 16 /* store year() % 100 instead of year - 1900, FoxPro compatibility */ /* update in CLOSE after append only */ #define DB_SETHEADER_MINIMAL DB_SETHEADER_CLOSE diff --git a/src/rdd/dbf1.c b/src/rdd/dbf1.c index 79254c5193..51ef4715b6 100644 --- a/src/rdd/dbf1.c +++ b/src/rdd/dbf1.c @@ -3780,10 +3780,15 @@ static HB_ERRCODE hb_dbfInfo( DBFAREAP pArea, HB_USHORT uiIndex, PHB_ITEM pItem } case DBI_SETHEADER: { - int iMode = hb_itemGetNI( pItem ); - hb_itemPutNI( pItem, pArea->uiSetHeader ); - if( ( iMode & ~0xFF ) == 0 ) - pArea->uiSetHeader = iMode; + HB_UINT uiSetHeader = pArea->uiSetHeader; + + if( HB_IS_NUMERIC( pItem ) ) + { + int iMode = hb_itemGetNI( pItem ); + if( ( iMode & ~0xFF ) == 0 ) + pArea->uiSetHeader = iMode; + } + hb_itemPutNI( pItem, uiSetHeader ); break; } case DBI_ROLLBACK: @@ -6536,6 +6541,7 @@ static void hb_dbfInitTSD( void * Cargo ) ( ( LPDBFDATA ) Cargo )->bTableType = DB_DBF_STD; ( ( LPDBFDATA ) Cargo )->bCryptType = DB_CRYPT_NONE; ( ( LPDBFDATA ) Cargo )->uiDirtyRead = HB_IDXREAD_CLEANMASK; + ( ( LPDBFDATA ) Cargo )->uiSetHeader = DB_SETHEADER_APPENDSYNC; } static void hb_dbfDestroyTSD( void * Cargo ) @@ -6654,11 +6660,15 @@ static HB_ERRCODE hb_dbfRddInfo( LPRDDNODE pRDD, HB_USHORT uiIndex, HB_ULONG ulC } case RDDI_SETHEADER: { - int iMode = hb_itemGetNI( pItem ); + HB_USHORT uiSetHeader = pData->uiSetHeader; - hb_itemPutNI( pItem, pData->uiSetHeader ); - if( ( iMode & ~0xFF ) == 0 ) - pData->uiSetHeader = ( HB_USHORT ) iMode; + if( HB_IS_NUMERIC( pItem ) ) + { + int iMode = hb_itemGetNI( pItem ); + if( ( iMode & ~0xFF ) == 0 ) + pData->uiSetHeader = ( HB_USHORT ) iMode; + } + hb_itemPutNI( pItem, uiSetHeader ); break; } case RDDI_DIRTYREAD: diff --git a/src/rdd/delim1.c b/src/rdd/delim1.c index fe71a4fca8..03adddbc29 100644 --- a/src/rdd/delim1.c +++ b/src/rdd/delim1.c @@ -1649,11 +1649,14 @@ static HB_ERRCODE hb_delimRddInfo( LPRDDNODE pRDD, HB_USHORT uiIndex, HB_ULONG u case RDDI_SETHEADER: { LPDELIMDATA pData = DELIMNODE_DATA( pRDD ); - int iMode = hb_itemGetNI( pItem ); - - hb_itemPutNI( pItem, pData->uiSetHeader ); - if( iMode == 0 || iMode == 1 ) - pData->uiSetHeader = ( HB_USHORT ) iMode; + HB_USHORT uiSetHeader = pData->uiSetHeader; + if( HB_IS_NUMERIC( pItem ) ) + { + int iMode = hb_itemGetNI( pItem ); + if( iMode == 0 || iMode == 1 ) + pData->uiSetHeader = ( HB_USHORT ) iMode; + } + hb_itemPutNI( pItem, uiSetHeader ); break; } default: