From c894a7cdd8686ea695602a23a511a3f1b0d047be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Mon, 14 Aug 2023 21:07:46 +0200 Subject: New upstream version 4.1.4 --- docs/misc/AutoUpdate.txt | 54 ++++++++++++++++++++++++ docs/misc/DirectoryStructure.txt | 32 ++++++++++++++ docs/misc/ExpressionNotes.ods | Bin 0 -> 20662 bytes docs/misc/Expressions.txt | 13 ++++++ docs/misc/FileTypeByte.txt | 53 +++++++++++++++++++++++ docs/misc/IndexNotes.ods | Bin 0 -> 23172 bytes docs/misc/RealDelete.txt | 88 +++++++++++++++++++++++++++++++++++++++ docs/misc/Release.txt | 34 +++++++++++++++ docs/misc/Versions.txt | 30 +++++++++++++ docs/misc/xbTmpFiles.txt | 12 ++++++ 10 files changed, 316 insertions(+) create mode 100755 docs/misc/AutoUpdate.txt create mode 100755 docs/misc/DirectoryStructure.txt create mode 100755 docs/misc/ExpressionNotes.ods create mode 100755 docs/misc/Expressions.txt create mode 100755 docs/misc/FileTypeByte.txt create mode 100755 docs/misc/IndexNotes.ods create mode 100755 docs/misc/RealDelete.txt create mode 100755 docs/misc/Release.txt create mode 100755 docs/misc/Versions.txt create mode 100755 docs/misc/xbTmpFiles.txt (limited to 'docs/misc') diff --git a/docs/misc/AutoUpdate.txt b/docs/misc/AutoUpdate.txt new file mode 100755 index 0000000..909bc18 --- /dev/null +++ b/docs/misc/AutoUpdate.txt @@ -0,0 +1,54 @@ + +Auto Update Design / Functionality + + +Auto update functionality in the library is used to automatically update +records in tables, when the user moves off a particular record without +explicitly posting an update for the new data updates. + +The auto Update logic defaults to ON, and there is nothing that the +end user needs to worry about. + +However, if it is desired to change the behavior of the library, the +Auto Update logic can be turned off. + +There are two levels to the Auto Update logic. + +The first level is the DBMS level, which controls how all tables are +handled, if the Auto Update logic is not over ridden at the table level. + +The second level is the table level. The DBMS Auto Update logic can +be over ridden at the table level. + + +For the DBMS level settings, see methods: + xBase::GetDefaultAutoUpdate + xBase::SetDefaultAutoUpdate + +At the DBMS level, there are two settings + xbFalse = AutoUpdate is off + xbTrue = AutoUpdate is on + +For the Table level settings, see methods: + xbDbf::SetAutoUpdate + xbDbf::GetAutoUpdate + +At the table level, there are three settings + -1 = Use the DBMS setting (this is the default) + 0 = Do not use Auto Update on this table + 1 = Use Auto Update on this table. + +These seetings would be for a more advanceed implementation of +XBase64. For the most part, you can ignore these settings and +use the defaults that are already set in the library and you should +be OK. + + +This document is missing some functions + +x:DisableDefaultAutoLock() +x:EnableDefaultAutoLock() + + + + diff --git a/docs/misc/DirectoryStructure.txt b/docs/misc/DirectoryStructure.txt new file mode 100755 index 0000000..9a7ba66 --- /dev/null +++ b/docs/misc/DirectoryStructure.txt @@ -0,0 +1,32 @@ + +6/14/14 - The directory structure was updated with xb64 V4.0.0 + + + +xb64 + xb64 (Source Tree) + include + xb64 + examples + utils + + docs + html + license + misc + + Linux (Build Tree for Linux) + bin + Processor + + Windows (Build Tree for Windows) + bin + Processor + + Mac (Build Tree for Mac) + bin + Processor + + OtherPlatforms (Build tree for other platforms) + bin + Processor \ No newline at end of file diff --git a/docs/misc/ExpressionNotes.ods b/docs/misc/ExpressionNotes.ods new file mode 100755 index 0000000..6817de2 Binary files /dev/null and b/docs/misc/ExpressionNotes.ods differ diff --git a/docs/misc/Expressions.txt b/docs/misc/Expressions.txt new file mode 100755 index 0000000..d6eed0d --- /dev/null +++ b/docs/misc/Expressions.txt @@ -0,0 +1,13 @@ + + + +Expression Date Logic + + + DATE - DATE returns number + DATE - Number returns date + DATE + Number returns date + DATE -= Number returns date + DATE += Number returns date + DATE ++ returns date + DATE -- returns date \ No newline at end of file diff --git a/docs/misc/FileTypeByte.txt b/docs/misc/FileTypeByte.txt new file mode 100755 index 0000000..11d4823 --- /dev/null +++ b/docs/misc/FileTypeByte.txt @@ -0,0 +1,53 @@ + + + +Valid dBASE for Windows table file, bits 0-2 indicate version number: 3 for dBASE Level 5, 4 for dBASE Level 7. +Bit 3 and bit 7 indicate presence of a dBASE IV or dBASE for Windows memo file; +bits 4-6 indicate the presence of a dBASE IV SQL table; +bit 7 indicates the presence of any .DBT memo file (either a dBASE III PLUS type or a dBASE IV or dBASE for Windows memo file). + + +The first byte of the DBF file determines the xbase file version + +76543210 +00000000 + +| - True if any memo file + | - True if Version 4 memo file + || - True for both V3 and V4 files + + + + +00000011 - Could be a version III or version IV file, lib defaults to IV +10000011 - Version III with memo +10001011 - Version IV with memo + + + +Logic for checking for which version + + 3 bit 4 not set, bit 5&6 set, if bit 0 set and bit 3 not set, then V3 + 4 bit 4 not set, bit 5&6 set, if bit 0 set and bit 3 set + 5 bit 4 not set, bit 5&6 set, if bit 0 set and bit 3 set +>=7 bit 4 set + + + + bit 0 bit 3 bit 4 bit 5 bit 6 +V III Optional 0 0 1 1 No field type F +V IV Optional if bit0 then 1 0 1 1 Supports field type F +V V Optional if bit0 then 1 0 1 1 Supports field type F + +V VII ? ? 1 0 0 + + + +pseudocode logic + +if not bit 4, and bit 5 and bit 6 +{ + if V4 compiled in, if not (bit0 and not bit3) return V4 + else + if V3 compiled in and not bit3, and not prod mdx, return V3 +} \ No newline at end of file diff --git a/docs/misc/IndexNotes.ods b/docs/misc/IndexNotes.ods new file mode 100755 index 0000000..0b3cabc Binary files /dev/null and b/docs/misc/IndexNotes.ods differ diff --git a/docs/misc/RealDelete.txt b/docs/misc/RealDelete.txt new file mode 100755 index 0000000..7770afc --- /dev/null +++ b/docs/misc/RealDelete.txt @@ -0,0 +1,88 @@ + + +Earlier versions of the library included an Xbase specific functin called "Real Delete" + +The analysis is as follows: + +Updates to xbdbf.h and xbdbf.cpp + +#ifdef XB_REAL_DELETE + ... +#endif + +Functions included: + + RealDeleteOn() Turns on RealDelete + RealDeleteOff() Turns off RealDelete + GetRealDelete() Returns the status of RealDelete + +Narrative: + +This should be done before creating a database with xbDbf::CreateDatabase() and +thereafter before opening a database with xbDbfCreateDatabase() + + +You can not turn on real deletes once a database has been created and records added + + +In the Table header +bytes 12-15 - FirstFreeRec; +bytes 16-19 - RealNumRecs + + +Updates to the following methods: +WriteHeader() +ReadHeader() + +The first four bytes of the deleted record is the record number to the next +deleted record in the chain + +Append Record will pull next record from the chain and attempt to use that +field, otherwise it will append a new record + +GetFirstRecord will skip over deleted records looking for the first record +which is not deleted + +GetLastRecord will skip backwards to the next previous undeleted record + +GetPrevRecord skips backwards to the the next previous undeleted record + +DeleteRecord + -Deletes the memo data + - Adds the record to the front of the free chain + +UndeleteRecord + - Always returns XB_INVALID_RECORD + +PackDatafiles + - Deleted Records are skipped + +NoOfRecords + - Returns no of records not deleted + +PhysicalNoOfRecords() + - Return NoOfRecs - actual number of records in the file + + + +Conclusions: + +From a campatibility standpoint: + + This setup will only work on the earlier version of the Xbase file format as this would + be library specific code. + + Also, once past Dbase V3, the bytes used in the header file are used by Dbase 4,5,7 + + +Decision: + + In an effort to make the library as portable as possible moving forward, a decision was made to + leave this code out of the basic library. To add this code in the future, a new class can be created + using the xbDbf class as a base class, and override the methods mentioned above. + + + + + + diff --git a/docs/misc/Release.txt b/docs/misc/Release.txt new file mode 100755 index 0000000..f73af11 --- /dev/null +++ b/docs/misc/Release.txt @@ -0,0 +1,34 @@ + +xb64 4.0.0 Release notes + + List of updates with xbase 4.0.0 + 1) Converted from automake/autoconf to cmake + 2) Updated xbstring logic + 3) Created test programs for using in cmake + 4) Tested each method in the following environments + A) Linux Slackware 64 bit + B) Linux Slackware 32 bit + C) Mac OSX Lion, 64 bit build + D) Windows 64 bit build + E) Windows 32 bit build + F) Borland 32 bit build + 5) Updated the Get/Put field methods so they all have a + common look and feel. All the get/put methods now return + a return code indicating success/failure. + 6) Abstracted file i/o activity into xbFile class - used to + isolate the platform specifics out of the main dbms class + and improve portability. Utilized 64 bit functions where + possible + 7) Reworked the Lock logic, tested on various platforms. + Mac OSX supports on locking on NFS shares only. + Mac does not support locking on SMB shares - OS limitation. + Unix based file systems don't support file lock functionality, + if using in combination with sdoftware like DBase, Dbase supports + exclusive locking which is not supported on native Linux file systems + 8) Converted integer field names and checked for correct field lengths + xbInt16 16 bit integer + xbUInt16 16 bit unsigned integer + xbInt32 32 bit integer + xbUInt32 32 bit unsigned integer + xbInt64 64 bit integer + xbUInt64 64 bit unsigned integer diff --git a/docs/misc/Versions.txt b/docs/misc/Versions.txt new file mode 100755 index 0000000..2977341 --- /dev/null +++ b/docs/misc/Versions.txt @@ -0,0 +1,30 @@ + + + + +Differences between Dbase III and Dbase IV + + Dbase IV adds field type "F" Float + Dbase IV adds a more sophisticated DBT memo file, utilizes logic to reclaim disk space on memo field updates + Dbase IV adds support for MDX multi tag indices + + + + +Version III Field Types + + C Char + N Numeric + D Date + M Memo + L Logical + + +Version IV Field Types + + C Char + N Numeric + D Date + M Memo + L Logical + F Float (Similar to numeric) \ No newline at end of file diff --git a/docs/misc/xbTmpFiles.txt b/docs/misc/xbTmpFiles.txt new file mode 100755 index 0000000..f81bee9 --- /dev/null +++ b/docs/misc/xbTmpFiles.txt @@ -0,0 +1,12 @@ + + +At times, the Xbase64 library will create temporary work files with the +following naming pattern: xbtmpNNN.xxx Where NNN is a sequential +number and xxx is either dbf, dbt, ndx, mdx. + +These files should be automatically deleted by the library when +the task is complete. However, if the program crashes in a particular +step, the temp files might not be cleaned up automatically. + +If you run into these files, and they have an older timestamp on them, +it is safe to delete them. \ No newline at end of file -- cgit v1.2.3