* config/dos/global.cf
*restored creation of subdirectiories under plain DOS
* include/hbapi.h
* include/hbcomp.h
* include/hbdefs.h
* include/hbvm.h
* source/compiler/genc.c
* source/compiler/harbour.c
* source/compiler/hbpcode.c
* source/vm/dynsym.c
* source/vm/hvm.c
* source/vm/macro.c
*modified creation of symbols table
*symbol of function name never share a symbol of variable
*symbol for INIT/EXIT procedure has now '$' suffix - this means
that such procedures cannot be called from user code
(Clipper compatible)
See the following code:
PROCEDURE MAIN
aaa()
RETURN
INIT PROCEDURE aaa
? "In INIT procedure", PROCNAME(0)
RETURN
STATIC PROCEDURE aaa
? "In STATIC procedure", PROCNAME(0)
RETURN
It will print:
In INIT procedure aaa$
In STATIC procedure aaa
*fixed access to static functions in a macro compiler (symbols for
static functions never goes into dynamic symbols table)
* source/pp/ppcore.c
*increased numer of nested optional clauses (max 5 currently - work
in progress)
* harbour/source/vm/memvars.c
* fixed public releasing - fix borrowed from xHarbour
Ryszard please check if it doesn't cause any bad side effects.
The following code demonstrate the problem.
===========================================
memvar x, y, z
proc main()
local l := { || x }
public x := "QWE"
private z := "asd"
Errorblock( { | oError | errHandler( oError ) } )
? eval( l )
test()
? x
? z
? eval( l )
return
proc test()
private y := "xyz"
release x, y, z
? x
? y
? z
return
func errHandler( oErr )
local varName := oErr:operation()
public &varName := oErr:description() + ": " + varName
return .t.
===========================================
* xharbour/contrib/rdd_ads/ace.h
* small modification for OpenWatcom on Linux
* xharbour/source/rdd/dbfntx/dbfntx1.c
* minor fix: use *_GOTO( pArea, 0 ) instead
of *_GOTO( pArea, pArea->ulRecCount+1000 )
+ use hb_fsSeekLarge() - for DBFs longer then 2GB
* xharbour/include/hbrddcdx.h
* xharbour/source/rdd/dbfcdx/dbfcdx1.c
+ use hb_fsSeekLarge() - for DBFs longer then 2GB
* my last xHarbour modifications:
improved indexing speed of DBFs with very big number of
records. In small DBFs less then 100'000 records the new
algorithm can even decrease the speed by ~0.5% due to static
costs but in bigger it becomes faster. For 1'000'000 records
DBFs is about 20% faster, for 10'000'000 records about twice
faster. With bigger DBFs more. Please test it. If you will
have any troubles (I hope not) then please comment out in
dbfcdx.c:
#define HB_CDX_NEW_SORT
I should done it before when I was rewriting the indexing but
sorry I was too lazy. Now I've found a while. Current cost of
key comparisons is always n*log2(n) and cannot be more improved.
Some small optimizations still can be done but the static cost
for small database will be bigger then ~0.5% as in this case
so I do not plan to do it in the nearest future.
* harbour/include/dbinfo.ch
* harbour/source/rdd/dbf1.c
+ use hb_fsSeekLarge() - for DBFs longer then 2GB
* synched with xHarbour (added DBRI_RAW*)
* do not call GOCOLD() inside CHILDSYNC() but do it in FORCEREL()
the modification based on CL5.3 NG.
Below is a note I lef in dbf1.c:
/*
* !!! The side effect of calling GOCOLD() inside CHILDSYNC() is
* evaluation of index expressions (index KEY and FOR condition)
* when the pArea is not the current one - it means that the
* used RDD has to set proper work area before eval, DBFCDX does
* but DBFNTX not yet - it should be changed.
* IMHO GOCOLD() could be safely removed from this place but I'm not
* sure it's Clipper compatible - I will have to check it, Druzus.
*/
/*
* I've checked in CL5.3 Technical Reference Guide that only
* FORCEREL() should ensure that the work area buffer is not hot
* and then call RELEVAL() - I hope it describes the CL5.3 DBF* RDDs
* behavior so I replicate it - the GOCOLD() is moved from CHILDSYNC()
* to FORCEREL(), Druzus.
*/
* harbour/source/rdd/dbf0.prg
* harbour/source/rdd/delim0.prg
* harbour/source/rdd/rddsys.prg
* harbour/source/rdd/sdf0.prg
* harbour/source/rdd/dbfntx/dbfntx0.prg
* formatting (adding EOL at EOF)
* harbour/include/hbapifs.h
* harbour/source/rtl/filesys.c
* added hb_fsLockLarge() and hb_fsSeekLarge() which uses 64bit ofsets
* harbour/source/rdd/workarea.c
* set current work area to the used one in EVALBLOCK RDD method
before code block evaluation
* harbour/source/vm/harbinit.prg
* harbour/source/vm/hvm.c
+ added hb_vmDoInitClip() which calls CLIPINIT function to initialize
ErrorBlock() and __SetHelpK()
Because on some platform the execution order of init functions
is out of Harbour control then CLIPINIT has to be called explicitly
in VM initialization process before hb_vmDoInitFunctions() and do not
depends on INIT clause.
* small modification in VM loop which gives noticeable speed-up
* xharbour/source/rtl/mod.c
! fixed mod() function to be Clipper/DBASE III compatible
(not the % operator) for combination of psitive and negative
numbers
+ harbour/include/hbfixdj.h
+ I missed to add this file in my last commit - it's borrowed from
xHarbour.
* harbour/source/rtl/filesys.c
! fixed DJGPP compilation I broke
* harbour/hbgtmk.sh
* harbour/make_rpm.sh
* harbour/harbour.spec
* added flex to dependences
* added --without gpl swich to exclude code which needs 3-rd party
GPL libs (GPM, SLANG) - necessary for people who want to create
commercial closed source application
* harbour/make_gnu.sh
* modified DJGPP detection - try to use env var first
* set HB_GT_LIB depending on platform information
* check PREFIX env var for default installation
* harbour/make_tgz.sh
* modified to work with DJGPP and 8.3 file names
* harbour/bin/hb-func.sh
* DJGPP support
* harbour/bin/pack_src.sh
* autodetect Harbour version number
* harbour/config/linux/gcc.cf
* added small comment
+ harbour/config/linux/owatcom.cf
+ OpenWatcom support on Linux
* harbour/config/w32/global.cf
* harbour/config/w32/mingw32.cf
* small modification in clean procedure
+ added Phil's modification for MINGW cross compilation in Linux and BSD
* harbour/source/compiler/gencobj.c
+ added Phil's modification for MINGW cross compilation in Linux and BSD
* harbour/include/hbsetup.h
* added OS_HAS_DRIVE_LETTER, OS_PATH_DELIMITER_STRING, OS_FILE_MASK,
OS_DRIVE_DELIMITER and HOST_OS_UNIX_COMPATIBLE
* modified for OW on Linux and MINGW cross compilation
* added snprintf macro for compilers which do not support it
* harbour/source/rtl/mod.c
! fixed bug in mod(a,b) when a/b exceeds LONG limit
* harbour/source/rtl/filesys.c
* removed HB_FS_DRIVE_LETTER - use OS_HAS_DRIVE_LETTER
* modified for OW on Linux and MINGW cross compilation
* harbour/contrib/libct/files.c
* harbour/include/hb_io.h
* harbour/include/hbdefs.h
* harbour/source/rtl/diskspac.c
* harbour/source/rtl/disksphb.c
* harbour/source/rtl/fssize.c
* harbour/source/rtl/fstemp.c
* harbour/source/rtl/hbffind.c
* harbour/source/rtl/net.c
* harbour/source/rtl/seconds.c
* harbour/source/rtl/gtcrs/Makefile
* harbour/source/rtl/gtcrs/kbdcrs.c
* harbour/source/rtl/gtpca/gtpca.c
* harbour/source/rtl/gtsln/Makefile
* harbour/source/rtl/gtsln/gtsln.c
* harbour/source/rtl/gtsln/kbsln.c
* harbour/source/rtl/gtstd/gtstd.c
* harbour/source/vm/hvm.c
* harbour/source/vm/mainstd.c
* harbour/source/vm/mainwin.c
* modified for OW on Linux and MINGW cross compilation
* harbour/source/vm/memvars.c
- removed unnecessary checking for s_globalTable == NULL in
hb_memvarValueDecRef() - in Harbour it cannot happen
* harbour/source/vm/itemapi.c
- removed snprintf macros (see hbsetup.h)
* fixed possible GPF in hb_itemCopyC()
* modified hb_itemGetPtr() to check item type
* include/hbexprb.c
* source/compiler/exproptb.c
* source/macro/macrob.c
* fixed to compile with SIMPLEX defined
Notice: Simplex version is not updated for a long time and
it doesn't support all fixes from FLEX version
* include/hbcomp.h
* include/hbexprb.c
* include/hbmacro.h
* source/compiler/exproptb.c
* source/compiler/harbour.c
* source/compiler/hbgenerr.c
* source/macro/macrob.c
* source/vm/macro.c
* compiler reports error on the following syntax now (Clipper
compatibility):
{|| ¯ovar <operator> anysymbol}
"codeblock contains both macro and declared symbol reference"
Notice, that Clipper reports error even in this case:
MEMVAR mvar
{|| &mvar,mvar}
* source/vm/memvars.c
* restored initial and expand sizes for memvars table
* source/pp/ppcore.c
* some empty lines added
* include/hbapi.h
* source/vm/codebloc.c
* source/vm/itemapi.c
* source/vm/memvars.c
* fixed memvars and detached locals handling related to reallocation
of memvar's buffer and detaching of locals in a loop
- thanks to Przemek
* source/vm/debug.c
*removed diagnostic hb_dbgstop()