* harbour/include/dbinfo.ch
+ added DBI_ISTEMPORARY
* harbour/include/hbapirdd.h
* harbour/source/rdd/wafunc.c
+ added hb_rddCreateTableTemp() C function to create temporary
table which are automatically deleted on close. All indexes and
memo files for such tables are also in temporary files and
automatically deleted on close. Please remember that Harbour uses
OS functions to create temporary files so it's installation dependent
how much disk space is available for them. Some RDDs may also do
not create temporary files but keep everything in memory if they
decide it's more efficient.
* harbour/source/rdd/dbcmd.c
+ added .prg function to create temporary files:
dbCreateTemp( <cAlias>, <aStruct>, <cRDD>, ;
<cCodePage>, <nConnection> ) -> <lSuccess>
Not all RDDs have to support it. It's verified by support for
DBI_ISTEMPORARY dbInfo() action.
* harbour/include/hbrdddbf.h
* harbour/include/hbrddnsx.h
* harbour/include/hbrddcdx.h
* harbour/include/hbrddntx.h
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
+ added support for temporary tables in native RDDs.
Most of above modifications were done by Viktor Szakats.
* include/hbapifs.h
* source/rtl/spfiles.c
+ Added hb_spFileExists(). Same as hb_spFile(), but uses
the more efficient (especially on networks) hb_fsFileExists()
call to check for file exitance.
[ not very elegant solution, as I've just copied the
whole function, and changed the file existance call, maybe
a worker function + passing the check function pointer
could help, but the hb_fsFile() and hb_fsFileExists() workings
differ slightly. ]
* source/rdd/dbfntx/dbfntx1.c
* source/rdd/dbfnsx/dbfnsx1.c
* source/rdd/dbfcdx/dbfcdx1.c
* source/rdd/dbf1.c
% Using hb_spFileExists() instead of hb_spFile().
This API also works for dirs where use doesn't have file listing
rights, which may create a slight incompatibility by finding
files which weren't found by former method (and by Clipper).
C:\WINDOWS\TEMP\*.* were such when logged in as non-admin user,
but this dir is only used as a default TEMP dir for DOS programs.
Please speak up if you find this issue (or something else) to
be problem.
* source/rtl/file.c
* File naming standardized.
* doc/whatsnew.txt
* Minor updates.
* harbour/include/hbgtcore.h
* harbour/source/rtl/hbgtcore.c
+ added two new methods:
TOUCHLINE() - marks line as modified
REDRAWDIFF() - it contains REFRESH() from which is now called so
it's possible to overload this method by upper level RDDs without
touching REFRESH() method which can be overloaded by intermediate
RDDs
* harbour/contrib/hbct/ctwin.c
% do not use EXPOSEAREA() and TOUCHCELL() methods but TOUCHLINE()
only and overloaded REDRAWDIFF() - it should gives noticeable
speed improvement in some where cost of screen update is very
big and GT does not calculate minimal update area.
* harbour/source/rdd/dbfnsx/dbfnsx1.c
% minor speed improvement in key decoding
* harbour/source/rtl/gtxwc/gtxwc.c
! added protection against inaccessible character cell value
what could cause accessing uninitialized memory and GPF
* harbour/include/hbrdddbf.h
! fixed HB_DIRTYREAD() macro not updated when RDDI_* settings were
converted from global to thread local
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
% replaced <RDD>NODE_DATA() and <RDD>AREA_DATA() macros defined
in each RDD by common for all DBF bases RDDs DBFNODE_DATA() and
DBFAREA_DATA() macros defined in hbrdddbf.h to reduce possible
mistakes in code updating in the future
* harbour/source/rtl/hbntos.c
* harbour/source/rtl/hbrandom.c
* removed dummy spaces
* harbour/source/rtl/filesys.c
* updated HB_TRACE messages
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* return pure index name without path and extension for DBOI_BAGNAME just
like DBFCDX does. It's not Clipper compatible but looks that people
expects ordBagName() behavior implemented in COMIX CDX driver (CL53).
Full index name can be accessed by DBOI_FULLPATH.
If you think it's wrong and we should keep CL52 DBFNTX behavior then
I can revert it but I will want to also change DBFCDX to keep
ordBagName() compatible core RDDs.
Please let me know your preferences.
* harbour/contrib/hbtpathy/telepath.prg
! replaced ThreadSleep() with hb_idleSleep()
* harbour/source/rdd/dbsql.c
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/contrib/rddads/ads1.c
! reuse the same error object when CANRETRY flag is set for valid
TRIES member update
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* added some missing const in char * declarations
* harbour/contrib/hbtip/sendmail.prg
* cleaned unused assigned detected by new Mindaugas logic
+ harbour/include/hbrddnsx.h
+ harbour/source/rdd/dbfnsx
+ harbour/source/rdd/dbfnsx/dbfnsx1.c
+ harbour/source/rdd/dbfnsx/Makefile
* harbour/config/global.cf
* harbour/make_b32.mak
* harbour/make_vc.mak
* harbour/make_gcc.mak
* harbour/common.mak
+ added new DBFNSX RDD. Those of you who knows SIX3 should also
know NSX index format. It's very interesting format and in some
cases much better then CDX. I hope you will find it interesting.
In hbrddnsx.h you can find detail information about Harbour NSX
implementation.
It's a small gift from me for Christmas ;-)
I would like to wish all of you Marry Christmas and Happy new Year.
best regards,
Przemek