* bin/commit.hb
! fixed UTC offset formatting
* contrib/hbwin/win_os.prg
* updated win_osNetRegOk() for modern MS-Windows versions:
- on Win7 and upper set
System\CurrentControlSet\Services\LanmanServer\Parameters\DisableLeasing
to disable opportunistic locks.
- do not force SMB1 to disable oplocks on Win7 and upper - new MS-Win10
does not support SMB1 at all so this setting on the server with
such system completely disables SMB network and forcing SMB1 on the
client side blocks access to new Win10 servers.
Warning! this setting is still activated on Vista so it cannot
connect work with new Win10 but I do not know any other
working method to disable oplocks in Windows Vista.
* synced with Viktor's branch
* contrib/xhb/hbserv.c
! added missing return
* include/harbour.hbx
* src/harbour.def
* src/rtl/version.c
+ added new PRG functions:
hb_osIsWin7(), hb_osIsWin8(), hb_osIsWin81(), hb_osIsWin10()
* src/rtl/gttrm/gttrm.c
+ added autodetection for few other XTerm compatible terminals
+ respect color extension in TERM name of all XTerm compatible
terminals
* utils/hbmk2/hbmk2.prg
+ added support for -cpp=isoXX borowed from Viktor's branch
* contrib/gtqtc/gtqtc.hbc
* contrib/gtqtc/gtqtc.hbp
* use -cpp=iso11 required for QT 5.7.0 or upper
* extended QT detection and partial syncing with Viktor's branch
* contrib/sddsqlt3/core.c
! fix DBUSEAREA() operation with SQLITE3 SDD to return empty result
when query conditions are false or the source table has no rows.
Previously an logically correct example caused RTE:
DBUSEAREA(,, "SELECT * FROM existing_table WHERE FALSE")
! fix double-free error in sqLite3Disconnect(), looks like the
sqlite3_close() return value checking was reverted, SQLITE_OK is 0
* use CDP API to get UTF8 string length
* use new sqlite3_prepare_v3() when built against
sqlite 3.20.0 or upper (change borrowed from Viktor's 3.4 fork)
+ add HB_SQLT3_MAP_DECLARED_EMULATED define (not yet enabled by default)
which make this SDD additionally parse SQLite column declarations.
Right now it can make HB_FT_DATE fields working using standard
ISO 8601 "yyyy-mm-dd" syntax. Also declarations not significant for
SQLite, but useful in xBase-style programming - SQL numeric(len,dec)
columns are detected in this mode and will be reflected in dbStruct().
+ add support for alternative StoD() like syntax for HB_FT_DATE columns
+ add support for ISO 8601 "YYYY-MM-DD HH:MM:SS.FFF" timestamp declared
columns, SQLite stored strings are converted to proper HB_FT_TIMESTAMP
fields
+ added HB_SQLT3_FIELDNAME_STRICT define, which enables shortening
of field to "name" if SQLite returns "table.name". Such fields are
not completly usable in xBase code - WA->T.FIELD syntax is not
valid, but FieldPos("t.field") is OK. I think it should be default
behaviour or some runtime setting should be introduced for convenience
when working with specific SQL queries.
* contrib/rddsql/sqlbase.c
* contrib/rddsql/sqlmix.c
+ added ZAP functionality to SQLBASE and SQLMIX RDDs,
index tags are preserved while ZAP-ing SQLMIX area.
They are cleaned, no REINDEX is needed
* changed to allow values of any type in "V" SIX3 / HB_FT_ANY fields
in SQLBASE/SQLMIX RDD workareas
* contrib/hbfoxpro/relfunc.c
! fix InList() FoxPro compatible function not looking at the last
parameter passed. Thanks to Attila Szabo for the information
posted on the developers list.
* README.md
* verified links to referenced libraries, go https where applicable.
Thanks to Pawel Wojciechowski for the location of ADS client
library.
* src/rtl/arc4.c
! fix builds on Alpine Linux and possibly others using musl libc,
which in turn doesn't expose deprecated sysctl() anymore.
* contrib/hbdoc/hbdoc.prg
* contrib/hbformat/utils/hbformat.prg
* contrib/hbnetio/utils/hbnetio/hbnetio.prg
* package/harbour.mft
* package/harbour.rc
* src/compiler/hbusage.c
* utils/hbi18n/hbi18n.prg
* utils/hbtest/hbtest.prg
* bumped copyright year to 2019
* contrib/gtwvg/wnd.prg
! Fixed: x,y,w,h values if aPos and aSize parameters were
containing negatve values.
* contrib/gtwvg/paint.prg
! Fixed to return proper color index if a compound color string
is supplied to wvt_GetRGBColorByString().
; Above patch provided by Jose Quintas - many thanks.
* contrib/gtwvg/wnd.prg
* contrib/gtwvg/activex.prg
! modified to honor plain hWnd as container window instead of an
WvgWnd() object.
* contrib/gtwvg/gtwvgd.c
+ added - HB_GTI_VIEWPORTHEIGHT and HB_GTI_VIEWPORTWIDTH handelling.
! Pacified some warnings reported by BCC-720.
* contrib/gtwvg/wvgcore.c
* contrib/gtwvg/wvgcuig.c
! Pacified some warnings reported by BCC-720.
* contrib/hbssl/hbssl.hbc
* made compliant also for Windows static builds
* ChangeLog.txt
* restored UTF-8 encoding after previous wrong commit (Sorry!!!)
* contrib/hbssl/hbssl.hbp
* added import libraries to link with OpenSSL current version
* contrib/hbcurl/hbcurl.hbp
* added import libraries to link with cUrl current version
* contrib/hbwin/wapi_winuser_1.c
* contrib/hbwin/hbwin.hbx
* added wapi_ShowWindow() wrapper
* contrib/xhb/hbxml.c
! fixed the lacking of correct settings of previous node in
mxml_node_insert_before(), that was causing the omitting
of the inserted nodes in saves and searches.
* include/harbour.hbx
* include/hbchksum.h
* src/harbour.def
* src/rtl/hbmd5.c
+ added new C function
void hb_hmac_md5( const void * key, HB_SIZE nKeyLen,
const void * message, HB_SIZE nMsgLen,
char * digest );
+ added new PRG function
HB_HMAC_MD5( <cMessage>, <cKey> ) -> <cMAC>
; HMAC MD5 is used in some authentication methods i.e. CRAM-MD5
authentication in SMTP protocol
* src/rtl/gttrm/gttrm.c
+ enable extended XTERM colors automatically when xterm-16color,
xterm-256color, xterm+256color, xterm-88color, rxvt-16color,
rxvt-256color, rxvt-98color or putty terminal is detected
+ added support for HB_GTI_SCREENDEPTH
* contrib/gtqtc/gtqtc1.cpp
+ set clipboard data also into selection buffer on platforms which
support it
+ when main clipboard buffer is empty retrieve clipboard data from
selection buffer and if it's empty too from find buffer
* include/harbour.hbx
* src/harbour.def
* src/vm/memvars.c
+ added new PRG function
__mvGetDef( <cMemvar> [, <xDefault> ] ) -> <xValue>
it works in similar way to __mvGet() but if <cMemvar> does
not exist then it returns <xDefault> or NIL instead of RTE
* contrib/hbwin/hbwin.hbx
+ added missing declarations for win_osIs10() and win_osIs81()
* contrib/hbssl/ssl.c
! fixed compilation with OpenSSL < 0.9.8k
* contrib/sddodbc/core.c
* pacified warning
* contrib/xhb/hbxml.c
* contrib/xhb/hbxml.h
! fixed CDATA terminator, it should be "]]>" instead of " ]]>"
+ added support for HBXML_STYLE_NONEWLINE flag
* src/3rd/pcre/Makefile
! typo wince -> wce
* src/main/Makefile
* use harbour.rc only in MS-Windows builds - it fixes OS2 OpenWatcom
builds
* config/global.mk
! in DOS builds check if the 'uname' exists before running it
* include/hbapigt.h
* include/hbgtcore.h
* src/rtl/hbgtcore.c
* src/rtl/inkey.c
* src/rtl/inkeyapi.c
* contrib/xhb/xhbfunc.c
+ added 3-rd parameter to hb_inkeySetText() function. When this parameter
is true then ';' is not translated to Chr( 13 ) but DOS and UNIX EOLs
are translated to Chr( 13 )
+ added logical parameter to HB_GTI_CLIPBOARDPASTE which allows to set
text without ';' translation but with platform independent EOLs
* src/rtl/memoedit.prg
* utils/hbmk2/hbmk2.prg
* contrib/hbnetio/utils/hbnetio/_console.prg
* extras/dbu/dbu52.patch
* extras/dbu/dbu53.patch
* use hb_gtInfo( HB_GTI_CLIPBOARDPASTE, .T. ) instead of
hb_gtInfo( HB_GTI_CLIPBOARDPASTE ) for pasting data from clipboard
with platform independent EOLs and ';' characters
* contrib/hbssl/hbssl.hbx
* contrib/hbssl/ssl.c
+ Added function SSL_set_tlsext_host_name() which is needed to access
a virtual host when using HTTPS.
See https://en.wikipedia.org/wiki/Server_Name_Indication
+ Added function SSL_set_verify().
* src/rtl/fstemp.c
! hb_fsTempName() was not returning a valid temp name on OS/2
* include/hbapi.h
* src/common/hbver.c
* src/harbour.def
* contrib/hbwin/win_osc.c
* synced Windows version detection code with Viktor's work in 3.4
* src/main/Makefile
+ src/main/harbour.rc
* include Windows manifest in standalone compiler - "harbour.exe /build"
should now correctly report Windows 10. "yourapp.exe //build" plus
in-app results still depend on manual manifest inclusion within .rc
* package/harbour.mft
+ added version manifest to Harbour compiler binaries, which is more
important on Windows 10 builds, to not include false Windows version
in build info.
This doesn't affect programs built with Harbour, where similar manifest
should be included or not, according to your needs.
* utils/hbmk2/hbmk2.prg
* define _UNICODE (activates unicode C RTL functions in OpenWatcom
and some MS C compilers) together with UNICODE in -winuni mode.
Similar change was done in Viktor's forked Harbour 3.4. Harbour
core/contrib code doesn't use any of these C RTL, but in most 3rd
party code it's expected that these are enabled both.
* README.md
* config/global.mk
* contrib/gtwvw/doc/gtwvw.txt
* contrib/hbwin/tests/ole.prg
* contrib/hbzebra/tests/cairo.prg
* contrib/hbzebra/tests/harupdf.prg
* contrib/hbzebra/tests/wingdi.prg
* package/harbour-wce.spec.in
* package/harbour-win.spec.in
* package/harbour.rb
* package/harbour.spec
* package/mpkg_win.nsi
* package/winuni/mpkg_win_uni.nsi
* src/3rd/zlib/ChangeLog.txt
* src/compiler/hbusage.c
* src/pp/hbpp.c
* tests/html.prg
* changed Harbour Project website URL references to
https://harbour.github.io/
This change is very symbolic mark of time passing, but it had to be
done. Original harbour-project.org domain went out from reach
together with Phil Barnett passing away on April 16, 2015.
Respect Phil, RIP.
Phil's efforts are directly tied to The Harbour Project origins.
To memorize him, please take a tour to archived The Oasis
https://harbour.github.io/the-oasis/
* contrib/hbnetio/netiocli.c
! fix spontaneous Error 1003 in NETIO client code failing to receive
full length of incoming data packet. Such odd behaviour was spotted
on Windows.
* include/hbapiitm.h
* src/rtl/hbdef.c
* src/vm/itemapi.c
* src/harbour.def
+ added new public C function
HB_BOOL hb_itemTypeCmp( PHB_ITEM pItem1, PHB_ITEM pItem2 );
which uses low level item type comparison code taken from hb_default()
and hb_defaultValue() PRG functions
* include/harbour.hbx
* src/harbour.def
* src/vm/hashfunc.c
+ added new PRG function
hb_HSetDef( <hVal>, <xKey> [, <xDefVal> ] )
it checks if <xKey> exists and if not then adds it to hash array
and optionally sets key value to <xDefVal> otherwise (the key
exists in hash array) and <xDefVal> is given then it checks if
the type of key's value is compatible with <xDefVal> and if not
then replaces key's value with <xDefVal>.
In other words it's combination of hb_HGetDef() and hb_default()
and works like this PRG code:
FUNCTION hb_HSetDef( hVal, xKey, xDefVal )
IF xKey $ hVal
hb_default( @hVal[ xKey ], xDefVal )
ELSE
hVal[ xKey ] := xDefVal
ENDIF
RETURN hVal
but much faster.
* src/rtl/dirscan.prg
* remove READONLY attribute from deleted directories.
Be careful. Now this function allows to recursively remove
all directories even if they have READONLY attribute.
* contrib/hbexpat/3rd/expat/loadlibr.c
! define _UNICODE macro when UNICODE is also defined - it should be fixed
in EXPAT core code. It fixes Windows builds.
* contrib/hbexpat/3rd/expat/xmlparse.c
! restored fix for WINCE builds
* contrib/hbtip/client.prg
! restored #undef __HBEXTREQ__ before #include "hbssl.hbx".
It fixes non SSL builds and binding HBTIP with all HBSSL
functions.
* contrib/hbexpat/hbexpat.hbc
* added /usr/local/opt/expat/lib library path to darwin builds
(synced with Viktor's 3.4 branch)
* config/darwin/clang.mk
* config/darwin/gcc.mk
* config/darwin/global.mk
* config/darwin/icc.mk
* config/darwin/libs.mk
* utils/hbmk2/hbmk2.prg
* synced with Viktor's modifications in 3.4 branch:
; 2017-11-11 13:14 UTC Viktor Szakats:
* switch to call the C compiler to link dynamic libs on darwin,
which is the recommended way to do this, as suggested by Apple.
This also aligns the platform better with other *nix platforms.
'libtool' was used before, but that started having intermittent
issues around Sierra (mitigated by disabling parallel build),
which returned and got worse in High Sierra (with no remedy).
The symptom was 'ld: file not found: ' errors with the filename
not shown or appearing as garbage, then a 'libtool: internal link
edit command failed'. This was reported and will be fixed in a
future Xcode release.
Ref: Apple Radar 34944562
* config/global.mk
* config/rules.mk
+ added new user build envvar HB_USER_DCFLAGS
It allows to set C compiler parameters to compile .c code for
dynamic libraries.
* src/rtl/hbsocket.c
! fixed fcntl(F_SETFL) 3-rd parameter in hb_socketSetBlockingIO(),
By mistake I used long instead of int. it created problem on big
endian 64 bit machines.
* include/hbgtcore.h
* src/rtl/hbgtcore.c
+ added new C functions for GT programmers:
void hb_gt_BaseUnlock( PHB_GT pGT );
void hb_gt_BaseLock( PHB_GT pGT );
void hb_gtSleep( PHB_GT pGT, double dSeconds );
* src/rtl/hbgtcore.c
* src/rtl/gtcrs/gtcrs.c
* src/rtl/gtdos/gtdos.c
* src/rtl/gtgui/gtgui.c
* src/rtl/gtos2/gtos2.c
* src/rtl/gtpca/gtpca.c
* src/rtl/gtsln/gtsln.c
* src/rtl/gtstd/gtstd.c
* src/rtl/gttrm/gttrm.c
* src/rtl/gtwin/gtwin.c
* src/rtl/gtwvt/gtwvt.c
* src/rtl/gtxwc/gtxwc.c
* use new functions to unblock GT when low level TONE() code is
executed. It allows other threads to access shared GT driver
when one of them executes TONE()
* contrib/hbexpat/hbexpat.hbx
* regenerated automatically
* contrib/hbamf/amfenc.c
* update amf3_Encode() serialize function with great idea of Przemek
implemented recenly in hb_Serialize(). Checking garbage collector
reference count can save time here too, unique arrays and hashes won't
be indexed as references.
* contrib/hbexpat/3rd/expat/*
! updated to 2.2.5 (from 2.2.1) using 3rdpatch.hb, expat.diff from
Viktor's 3.4 fork was used - but (again) adapted for DOS 8.3 naming
scheme. Also i've kept local patches for WinCE, OpenWatcom DOS/OS2,
please test. Compilation in CPP mode is explicitly disabled for libexpat
now, as upstream decided to ignore such use cases completly.
* contrib/hbexpat/*
* synced with Viktor's 3.4 fork
+ include/hbarc4.h
* src/harbour.def
+ export ARC4 core routines like in 3.4 fork, updated expat lib reuses it.
* contrib/hbtip/hbtip.hbp
! adapt *.hbx file specifier to hbmk2 3.2 syntax
* contrib/hbnf/fttext.c
* contrib/hbnf/hbnf.hbx
* synced with Viktor's modifications:
- use FILE API instead of FS API
- protection against GPF when FT area has no valid file handle
- alternative function names which exceeds 10 character Cl*pper limit
! fixed handle and memory leak when new file is open in FT area which
already has open file
* include/harbour.hbx
* src/harbour.def
* src/vm/hvm.c
+ added new PRG function: __vmItemRefs( <xVal> ) -> <nRefs>
Please remember that passed <xVal> parameter increases the counter so
if you want to eliminate it then pass it by reference, i,e.:
aVal := {}
? __vmItemRefs( aVal ), __vmItemRefs( @aVal )
* include/hbapi.h
* src/harbour.def
* src/vm/arrays.c
* src/vm/codebloc.c
* src/vm/hashes.c
+ added new C functions:
HB_COUNTER hb_arrayRefs( PHB_ITEM pArray );
HB_COUNTER hb_hashRefs( PHB_ITEM pHash );
HB_COUNTER hb_codeblockRefs( PHB_ITEM pItem );
* src/rtl/itemseri.c
* added new internal function to replace 3 times repeated code for
resizing array of references.
% use new functions to check number of references to hashes, arrays and
objects to ignore in system detecting multiple references the items
which have reference counter smaller then 2. Such items cannot have
multiple references.
In practice this modification resolves the time problem when very big
items are serialized to the level comparable to HB_SERIALIZE_IGNOREREF
so now this flag is useless though I'll keep it because only in such
mode serialization code can be used as filter in streams.
I also created binary tree to store references but after this
modifications it is not necessary so I decided to not commit it yet.
Please only remember that practice limit of such serialization code
is created by physical memory attached by OS to the process. When this
limit is exceed then swap is actively used what completely kill the
performance. The CPU usage is reduced to less then 1% because it waits
for restoring swapped memory pages by extremely heavy used disks. In
such case I cannot help.
* contrib/rddads/ads1.c
* src/rdd/workarea.c
* generate RTE code when SELF_ADDFIELD() used in SELF_CREATEFIELDS()
(dbCreate() backend) returns HB_FAILURE. It fixes silent dbCreate()
exit when some wrong table structure arrays are passed to this
function.
* src/rdd/dbf1.c
! added protection against too long unicode character and fields defined
in dbCreate() table structure array - fix problem reported by KevinC -
thanks
* change RTE number from EDBF_DATATYPE to EDBF_DATAWIDTH record size is
exceed
+ added additional protection when corrupted table with unicode fields
is open
* include/hbjson.h
* src/rtl/hbjson.c
* changed 3-rd parameter 'HB_BOOL fHuman' in hb_jsonEncode() and
hb_jsonEncodeCP() C functions to 'int iIndent'
char * hb_jsonEncode( PHB_ITEM pValue, HB_SIZE * pnLen,
int iIndent );
char * hb_jsonEncodeCP( PHB_ITEM pValue, HB_SIZE * pnLen,
int iIndent, PHB_CODEPAGE cdp );
Positive iIndent value defines number of spaces used for indenting,
0 disables indenting and -1 means TAB ( ASCII:9 ) indenting.
This modification is binary compatible though in C code using HB_TRUE
as 3-rd parameter it changes indenting from 2 spaces to 1 so please
update the code if it's significant.
+ added optional support for numeric value in 2-nd parameter of
hb_jsonEncode() PRG function. Current syntax is:
hb_jsonEncode( <xValue>, [ <lHuman> | <nIndent> ], [ <cDestCP> ] )
-> <cJSONString>
* contrib/rddads/ads1.c
* minor simplification
* include/hbapigt.h
* formatting
* src/rdd/dbf1.c
! fixed typo in index used inside DBS_ISNULL
! fixed blanking new record for variable length unicode fields (Q:U)
; above fix problems reported by KevinC - many thanks for information
about the problems and self contain examples - such support really
helps
* added protection against possible GPF when corrupted Q:U fields are
read from DBF file
* contrib/hbwin/hbwin.ch
* contrib/hbwin/hbwin.hbx
* contrib/hbwin/wapi_winuser_2.c
+ added PRG wrapper
wapi_MessageBoxTimeout( <phWnd>, <cText>, <cCaption>, ;
<nType>, <nLangId>, <nTimeout> )
-> <messageBox_results> | WIN_MB_TIMEDOUT
to undocumented MS-Windows function MessageBoxTimeout().
This function exists in all MS-Windows versions and is used internally
by MessageBox() and MessageBoxEx() with 0xFFFFFFFF timeout.
* contrib/hbwin/win_svc_2.c
* src/common/hbfopen.c
! fixed POCC and XCC builds
* src/pp/ppcore.c
! fixed line numbering in unclosed extended block
* interrupt extended block processing if it contains internal
FUNCTION or PROCEDURE declaration
* include/hbcompdf.h
* src/compiler/complex.c
* src/compiler/harbour.y
* src/compiler/hbmain.c
! fixed possible GPF when FUNCTION/PROCEDURE starts in unclosed
control structure - thanks to Abe Buchinger for information
about the problem
* report all unclosed control structures when FUNCTION/PROCEDURE starts
* src/compiler/harbour.yyc
* src/compiler/harbour.yyh
* regenerated
* contrib/hbmemio/memio.c
! fixed FO_TRUNC attribute in MEM: file IO - thanks to Miroslav Georgiev
for information about the problem
* include/hbgtinfo.ch
* src/rtl/gtwvt/gtwvt.h
* src/rtl/gtwvt/gtwvt.c
+ added new hb_gtInfo() action HB_GTI_SYSMENUADD
It allows to add new items to window system menu which
selected add defined by user key code into keyboard queue, i.e.
hb_gtInfo( HB_GTI_SYSMENUADD, HB_K_MENU, "Settings" )
* In WinCE builds use DeleteMenu() + AppendMenu() instead of
missing ModifyMenu()
! pacified warning in non UNICODE builds
* src/compiler/hbcomp.c
! revert an accidental sync with 3.4 resulting in .prg source
filenames being included in the compiled source only in debug mode.
It's now restored to have these at all times.
The comment typo in the same line remains synced.
Ref: https://groups.google.com/d/msg/harbour-devel/7c-EyPWxjfg/ei84cbsvAQAJ