* harbour/src/3rd/zlib/gzlib.c
! do not use _lseeki64 in MinGWCE builds - such function does not
exists in CTRL
* harbour/contrib/3rd/sqlite3/sqlite3.c
! fixed declaration of 64bit integer constant value in WinCE builds
; TOFIX: in WInCE builds the following error is generated:
implicit declaration of function 'osUnlockFileEx'
and of course such functions does not exists (it's internal
SQLITE3 macro)
* harbour/contrib/3rd/sqlite3/sqlite3.hbp
! fixed declaration of _WIN32_WCE macro - it should be set to
WinCE API version number.
* harbour/contrib/3rd/sqlite3/sqlite3.dif
* rediffed with ../../../bin/hb3rdpat.hbs -rediff
* harbour/contrib/hbzebra/qrcode.c
* pacified warning
* harbour/include/hbcom.ch
* harbour/src/rtl/hbcom.c
+ added new serial error code: HB_COM_ERR_PIPE
It's usable for some devices which use EPIPE error to
signal disconnected state.
* harbour/src/3rd/zlib/zlib.h
+ added missing declarations for exported public functions
* harbour/src/3rd/zlib/gzlib.c
* harbour/src/3rd/zlib/gzguts.h
! fixed POCC and XCC compilation
* enabled support for vsnprintf() in OpenWatcom builds
* harbour/src/3rd/zlib/Makefile
! fixed all non windows and WATCOM builds - critical macro
set by ./configure in ZLIB was not defined
; warning long file support is broken on most of 32bit platforms
so be careful with GZIP functions.
* harbour/contrib/gtwvg/gtwvg.h
+ define WINVER 0x0500 - it's necessary for some macros and
structures used by GTWVG code
* harbour/contrib/gtwvg/wvgwin.c
* removed redundant line with 'break;' instruction
* src/3rd/pcre/Makefile
+ added translation for JIT files from PCRE package
PCRE JIT is work of Zoltan Herczeg (hzmester/at/freemail.hu)
ARM v5/v7/thumb2, MIPS 32, x86/x64, PPC32/64 CPU
platforms are currently supported.
+ enabled PCRE JIT for mingw and msvc/x86/x64 (mainstream)
compilers. Some alternate C compilers like bcc and
watcom are not supported, others not tested. Enable
those which work.
+ enabled PCRE JIT for linux and darwin (EXPERIMENTAL).
Please test and adjust platform/compiler filters as
required.
; fallouts are possible because this is brand new code
never tested on Harbour platforms.
; TODO: to enable JIT on more platforms
(*nixes, MS-DOS, etc). (Cygwin fails)
* src/3rd/pcre/pcrejitc.c
* src/3rd/pcre/pcre.dif
+ manual patch for sjlir.c inclusion
(to be determined why hb3rdpat didn't apply this automatically)
+ src/3rd/pcre/sjmipsc.c
+ src/3rd/pcre/sjexeca.c
+ src/3rd/pcre/sjppcc.c
+ src/3rd/pcre/sjlir.c
+ src/3rd/pcre/sjx86c.c
+ src/3rd/pcre/sjconf.h
+ src/3rd/pcre/sjx8632.c
+ src/3rd/pcre/sjarmv5.c
+ src/3rd/pcre/sjlir.h
+ src/3rd/pcre/sjppc64.c
+ src/3rd/pcre/sjarmth2.c
+ src/3rd/pcre/sjutils.c
+ src/3rd/pcre/sjconfi.h
+ src/3rd/pcre/sjmips32.c
+ src/3rd/pcre/sjppc32.c
+ src/3rd/pcre/sjx8664.c
+ added PCRE JIT sources
* src/vm/set.c
! SET( _SET_DEVICE ) to accept anything starting with "PRIN"
as "PRINTER" for Cl*pper compatibility.
* src/rtl/filesys.c
! use utimes() instead of utime() on non-watcom linux platform
to avoid warning (and to follow the other similar utimes() call).
; lightly tested, review me
* harbour/src/pp/ppcore.c
! added resetting conditional compilation stack in hb_pp_reset()
Before this modification unclosed #if[def] statements were
significant for next PRG files passed to Harbour compiler
as single command (in such way works also HBMK2 with build
in compiler).
* clean stream functions and user operators in hb_pp_reset()
* src/rtl/getsyshb.prg
% optimization
* contrib/hbqt/hbmk2_qt.hbs
! fixed version guards to add complete .prg level
interface when the whole class is unsupported
in the QT version we're building against
* src/rtl/tget.prg
* src/rtl/getsyshb.prg
+ added support for hash GET variables
* utils/hbmk2/hbmk2.prg
+ added REQUESTs to blowfish, md5, sha1 and few sha2 functions
for 3rd party plugins
* contrib/hbhttpd/core.prg
* fmt
* src/vm/hashes.c
* src/vm/hashfunc.c
+ implemented posibility to use hashes a sorted arays with binary search.
Implemented HB_BOOL hb_hashScanSoft( pHash, pKey, &nPos ). Function
if similar to, but returns nPos even if pKey is not found in pHash.
Extended HB_HHASKEY( aHash, xKey [, @nPos ] ) --> lFound
Function optionaly returns position of the item with a largest key
smaller or equal to xKey. If xKey is less than all keys in hash,
zero position is returned. I.e.,
aHash := {10=>, 20=>}
? HB_HHASKEY( aHash, 5, @nPos ), nPos // .F. 0
? HB_HHASKEY( aHash, 10, @nPos ), nPos // .T. 1
? HB_HHASKEY( aHash, 15, @nPos ), nPos // .F. 1
? HB_HHASKEY( aHash, 20, @nPos ), nPos // .T. 2
? HB_HHASKEY( aHash, 25, @nPos ), nPos // .F. 2
- src/rtl/hbdynhb.c
- deleted support to accept raw function pointers. INCOMPATIBLE.
(note the C-level and XBase++ compatibility .prg-level interfaces
continue to offer that option)
; HB_DYNCALL() should be called as follows:
HB_DYNCALL( { <cFunction>, <cLibrary> | <pLibrary> [, <nFuncFlags> [, <nArgFlags1>, ..., <nArgFlagsn> ]] }, ... ) -> <xResult>
where
<nFuncFlags> can be:
hb_bitOr( HB_DYN_CTYPE_*, HB_DYN_ENC_*, HB_DYN_CALLCONV_* )
<nArgFlags*> can be:
hb_bitOr( HB_DYN_CTYPE_*, HB_DYN_ENC_* )
* contrib/hbcairo/core.c
! fixed typo
* contrib/hbssl/ssl.c
! fixed typo in SSL_GET_MODE()
* contrib/hbssl/hbssl.h
* contrib/hbssl/x509.c
* contrib/hbssl/ssl.c
+ implemented release option for X509 collectable pointer
; openSSL increments reference counter for X509 returned
by SSL_get_peer_certificate(), but does not increment it
for SSL_get_certificate(). Unnecessary freeing of X509
pointer caused random GPF later
* src/rtl/hbsockhb.c
* changed .prg level hb_socketSetBlockingIO() return value
type from lSuccess to nSuccess, to have the same return
value meaning precision as C level function
* src/rtl/hbsockhb.c
* include/harbour.hbx
+ hb_socketGetFD( hSocket ) --> nFD
* harbour/include/hbhrb.ch
* harbour/src/vm/runner.c
* disabled access to INIT and EXIT functions in
HB_HRBGETFUNSYM() and HB_HRBGETFUNLIST()
+ added 2-nd parameter <nType> to HB_HRBGETFUNLIST()
HB_HRBGETFUNLIST( <pHRB> [, <nType>] ) -> <aFuncList>
<nType> is defined in hbhrb.ch:
HB_HRB_FUNC_PUBLIC - locally defined public functions
HB_HRB_FUNC_STATIC - locally defined static functions
HB_HRB_FUNC_LOCAL - locally defined functions
HB_HRB_FUNC_EXTERN - external functions used in HRB module
* harbour/src/rdd/dbf1.c
! fixed default initialization value in UNICODE fields after
APPEND BLANK. Many thanks to Phil Krylov for information about
the problem and patch. The fix I committed is slightly different
just to follow idea of this code.
* harbour/src/rtl/filebuf.c
! fixed next three integer overflows exploited by HB64 locking mode.
BTW probably I'll move the lock range to not operate on last positive
offset because such overflow problems can be also exploited in low
level OS or network transport layer code - it happened in the past.
I'll do that when we confirm that current Harbour implementation
is correct.
* harbour/src/rtl/gtwvt/gtwvt.c
* harbour/contrib/gtwvg/gtwvg.c
! always set trailing 0 in the buffer containing font name set
by HB_GTI_FONTNAME - protection against too long strings.
* harbour/contrib/gtwvg/wvgwing.c
! fixed memory leak in last commit - thanks to Mindaugas.
% use HB_ITEMCOPYSTR() in WVG_FONTCREATE() to eliminate memory
allocation.
* harbour/ChangeLog
! fixed typo in file name in my previous commit.
It should be gtwvg.c not gtwvg.h
* harbour/src/rtl/disksphb.c
! fixed variable declaration for strict ANSI C compilers
* src/rdd/usrrdd/rdds/arrayrdd.prg
! formatting/cleanup, removed unncessary e"" string
! replaced '='/'!=' operator on strings with ==. It's most probably
still broken, but at least now consistently so.
* harbour/src/rdd/usrrdd/rdds/arrayrdd.prg
* Cleaned windows xhb debug using HB_TRACE() function and removed old
lines
* harbour/ChangeLog
* formatted previous log entry
* harbour/src/rdd/dbfnsx/dbfnsx1.c
! fixed index header verification when index is loaded.
In Harbour DBFNSX and DBFNTX automatically switch to different
internal format when HB_DBFLOCK_HB64 is used. In this format
they store in index files page numbers instead of page offsets
what effectively increase maximal file size to 4TB (from 4GB).
* harbour/debian/changelog
* harbour/debian/rules
* changed version number to 3.1.0-1
* removed HB_BUILD_DEBUG=yes
* use 'dh_prep' instead of deprecated 'dh_clean -k'
* harbour/src/rtl/gttrm/gttrm.c
! fixed my C&P typo in HB_TRACE() message
+ harbour/doc/locks.txt
+ added descirption of DBF locking schemes
* harbour/include/hbrdddbf.h
* modified DB_DBFLOCK_HB64 locking scheme
- extended RLOCK/FLOCK area from 2^31-2 to 2^32-2
it effectively changes maximum number of records in this
locking scheme to 4'294'967'294
- use COMIX like hyper locking mode
it should increase performance
Warning: INCOMPATIBLE!
all applications using DB_DBFLOCK_HB64 locking mode should
be updated - it is not safe to concurrently access the
same files using programs compiled with older Harbour
versions and current one.
* renamed the following DB_DBFLOCK_* macros:
DB_DBFLOCK_CLIP to DB_DBFLOCK_CLIPPER
DB_DBFLOCK_CL53 to DB_DBFLOCK_COMIX
DB_DBFLOCK_CL53EXT to DB_DBFLOCK_HB32
* added new locking scheme: DB_DBFLOCK_CLIPPER2
This locking scheme is designed to replicate _real_ locking scheme
used by Cl*pper applications linked with NTXLOCK2.OBJ
It's different then the documented one.
; Now Harbour supports the following locking schemes:
DB_DBFLOCK_CLIPPER 1 default Clipper locking scheme
DB_DBFLOCK_COMIX 2 COMIX and CL53 DBFCDX hyper locking scheme
DB_DBFLOCK_VFP 3 [V]FP, CL52 DBFCDX, SIx3 SIXCDX, CDXLOCK.OBJ
DB_DBFLOCK_HB32 4 Harbour hyper locking scheme for 32bit file API
DB_DBFLOCK_HB64 5 Harbour hyper locking scheme for 64bit file API
DB_DBFLOCK_CLIPPER2 6 extended Clipper locking scheme NTXLOCK2.OBJ
* harbour/include/hbrdddbf.h
* harbour/include/hbrddntx.h
* harbour/include/hbrddnsx.h
* harbour/include/hbrddcdx.h
* harbour/src/rdd/dbf1.c
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
+ finished support for COMIX like hyper locking.
This modification enables periodical switch to write locks
by readers to eliminate starvation effect on some systems
where many readers can completely block writer.
By default readers use exclusive lock once per each 16 operations.
+ added optional support for delayed index write locks (flush locks)
in hyper locking modes.
If index RDD can use such locks then write lock can be divided into
two parts:
1) block writers and new readers (write lock)
[prepare index modifications in memory]
2) wait for old readers still active (flush lock)
[write modifications to index file]
[release locks]
This mode reduces time when index is locked exclusively increasing
reader performance and also increase writer performance because
waiting for active readers it can prepare index modifications in
memory.
* harbour/src/rdd/dbfcdx/dbfcdx1.c
+ added support for delayed index write locks (flush locks) in DBFCDX
* harbour/src/rtl/filebuf.c
* automatically change write file locks to read locks when file is
open in readonly mode in POSIX systems.
* harbour/src/vm/classes.c
* disabled inheriting of class variables values from ancestor classes
when new class is dynamically created.
Warning: INCOMPATIBLE!
This modification is not backward compatible and can
interact with some existing code which has to be updated
for new behavior.
==> ChangeLog <==
2011-11-17 09:46 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/rtl/filebuf.c
! fixed silly typo in previous fix: 2011-09-02 14:03 UTC+0200
! fixed race condition in code emulating DOS/Windows file lock
behavior in POSIX systems. The problem could be exploited by
Harbour MT programs using the same files in many threads in
more then on process. Many thanks to Zsolt for the info and
test code example.
[TOMERGE 3.0]