* contrib/hbwin/olecore.c
* pacified false MSVC warning. It's very seldom situation that I'm adding
code to pacify false compiler warnings anyhow in this case it cost in
practice nothing so I decided to do that.
* contrib/xhb/hboutdbg.c
* src/rtl/gtcrs/gtcrs.c
* NULL pointer casting to pacify warning
* src/pp/hbpp.c
% do not created new iLen variable but reuse the one previously declared
* src/vm/classes.c
% allocate puiMsgIdx as array of HB_USHORT items instead of HB_SYMCNT.
This modification only reduces the memory usage and has no effect on
number of accepted symbols.
* changed 'HB_SYMCNT uiHashKey' to 'HB_SIZE nHashKey' to avoid explicit
casting in the code
* contrib/hbcurl/core.c
* contrib/hbcurl/hbcurl.ch
+ added HB_CURLOPT_XFERINFODATA and HB_CURLOPT_XFERINFOFUNCTION
! use CURLOPT_XFERINFO* instead of depreciated CURLOPT_PROGRESS*
to implement HB_CURLOPT_PROGRESSBLOCK
! do not use depreciated CURLOPT_RANDOM_FILE and CURLOPT_EGDSOCKET,
they serve no purpose anymore
+ added macros for new protocols
+ added HB_CURLOPT_PROTOCOLS_STR and HB_CURLOPT_REDIR_PROTOCOLS_STR
! use CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR instead
of depreciated CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS
* emulate CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS using
CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR in new curl
versions
+ added support for HB_CURLOPT_MIMEPOST
! use CURLOPT_MIMEPOST to emulate depreciated in new curl versions
CURLOPT_HTTPPOST
+ added support for HB_CURLOPT_PROXY_SERVICE_NAME
! use CURLOPT_PROXY_SERVICE_NAME to emulate depreciated in new curl
versions CURLOPT_SOCKS5_GSSAPI_SERVICE
+ added HB_CURLINFO_ACTIVESOCKET
! use CURLINFO_ACTIVESOCKET instead of depreciated CURLINFO_LASTSOCKET
+ added HB_CURLINFO_SIZE_UPLOAD_T, HB_CURLINFO_SIZE_DOWNLOAD_T,
HB_CURLINFO_SPEED_DOWNLOAD_T, HB_CURLINFO_SPEED_UPLOAD_T,
HB_CURLINFO_CONTENT_LENGTH_DOWNLOAD_T and
HB_CURLINFO_CONTENT_LENGTH_UPLOAD_T
! use CURLINFO_*_T actions instead of depreciated ones which operate
double as file offset and emulate old actions using new ones in
new curl versions
* contrib/hbssl/evp.c
! Do no use EVP_cleanup() in OpenSSL 1.1.0 and newer.
It no longer has any effect.
* contrib/hbssl/hbssl.h
* set OPENSSL_API_COMPAT to 1.2.0 to pacify OpenSSL 3.0 API.
It hides OpenSSL 3.0 warnings but we should update the code to use
new suggested API.
* contrib/hbwin/olecore.c
! invoke assign methods with DISPATCH_PROPERTYPUTREF instead of
DISPATCH_PROPERTYPUT if assigned value is OLE object. If such
functionality is not implemented by the object (some OLE
implementations do not support it and returns DISP_E_MEMBERNOTFOUND)
then call it again but in previous form with DISPATCH_PROPERTYPUT
* include/hbapirdd.h
* src/rdd/dbcmd.c
! fixed error codes set by DbSetRelations() to be Cl*pper compatible
* src/rdd/dbcmd.c
+ accept symbol items in Select() and DbSelectArea() just like in
( <alias> ) -> <exp>
* include/hbcompdf.h
* include/hbexprb.c
* src/common/funcid.c
+ added compile time optimization for Select() function without parameters
+ added compile time optimization DbSelectArea( <nNum> | <sSym> )
+ added support for hb_PIsByRef( @localVarName ) -> <lPassedByRef>
When the parameter is passed by reference Harbour verifies if it's
existing local variable and change it to its index in parameter list
so effectively it works like hb_IsByRef( @localVarName ) in xHarbour
* contrib/xhb/hbcompat.ch
+ added translations for
hb_PIsByRef( @<localVar> ) <=> hb_IsByRef( @<localVar> )
* *
* partial sync with the 3.4 fork codebase. These are the things
synces for the most part:
- copyright headers
- grammar/typos in comments and some readmes
- comment/whitespace/decorations
- variable scoping in C files
- DO CASE/SWITCH and some other alternate syntax usage
- minimal amount of human readable text in strings
- minor code updates
- HB_TRACE() void * casts for pointers and few other changes to
avoid C compiler warnings
- various other, minor code cleanups
- only Harbour/C code/headers were touched in src, utils, contrib,
include. No 3rd party code, no make files, and with just a few
exceptions, no 'tests' code was touched.
- certain components were not touched were 3.4 diverged too much
already, like f.e. hbmk2, hbssl, hbcurl, hbexpat
- the goal was that no actual program logic should be altered by
these changes. Except some possible minor exceptions, any such
change is probably a bug in this patch.
It's a massive patch, if you find anything broken after it, please
open an Issue with the details. Build test was done on macOS.
The goal is make it easier to see what actual code/logic was changed
in 3.4 compared to 3.2 and to make patches easier to apply in both
ways.
* contrib/hbwin/olecore.c
! reverted order of indexes and dimensions in conversions of
multidimensional arrays.
This modification affects both conversions (1) from Harbour array
to OLE variant SafeArray and (2) from OLE variant SafeArray to Harbour
array. The first one is new Harbour extension of __oleVariantNew() so
here above modification should not create any backward compatibility
problems but the second interacts with code which existed in Harbour
from early OLE implementation so if someone already encoded hacks
to revert array indexes and dimensions at .prg level then now he has
to remove it.
Please not that above modification affects only for multidimensional
OLE typed arrays. It does not change anything for single dimension
arrays or single dimension arrays of variants which contains other
similar arrays in their items.
* contrib/hbwin/olecore.c
+ added support for multidimensional typed OLE arrays, now
__oleVariantNew() accepts the following parameters:
__oleVariantNew( <nVariantType>, [<xInitValue>], [<nDims,...>] )
-> <pVariant>
i.e.:
pOleArray := __oleVariantNew( WIN_VT_VARIANT, aVal, ;
len( aVal ), len( aVal[ 1 ] ) )
pOleArray2 := __oleVariantNew( WIN_VT_I4, ;
{ { 1, 2, 3 }, { 4, 5, 6 } }, 2, 3 )
If initialization array is smaller the declared size then in OLE array
uninitialized items have default value for given type. NIL array items
are ignored other non array values in nodes generate errors. Strings
can be used on last level to initialize OLE arrays with ASCII values of
their characters.
Please test it in real MS-Window environment.
* contrib/hbexpat/3rd/expat/_hbconf.h
! fixed MS-Windows builds
* contrib/hbgs/hbgs.hbp
! respect HB_BUILD_3RDEXT=no
* contrib/hbwin/olecore.c
! fixed updating unnamed parameters passed by reference together
with named parameters
* contrib/hbwin/olecore.c
* changed tagVARIANT member used in hack extracting variant value
address from ullVal to bVal to avoid problems with some old header
files which do not support LONGLONG values
* contrib/hbwin/olecore.c
+ added functions which changes default method of NIL conversion to
OLE variant:
__oleVariantNil2Null( [<lNewNil2NullFlag>] ) -> <lPrevNil2NullFlag>
By default NIL values passed to foreign OLE code are converted to
VT_EMPTY variants. __oleVariantNil2Null( .t. ) changes this behavior
so NIL values are converted to VT_NULL variants.
; Warning: This function was added for tests. Looks that it's expected
behavior for communication with MS-Excel and allows to use
NIL as default parameter value but potentially it may create
problems with some custom OLE interfaces so this modification
should be widely tested in real life before we change the
default behavior.
* contrib/hbwin/olecore.c
- removed support for VT_DECIMAL and VT_PTR arrays from
__oleVariantNew() - I found in MSDN that such types are
unsupported in SAFEARRAYs
! fixed indexes in array conversion in __oleVariantNew()
! fixed conversion to VT_BSTR arrays in __oleVariantNew()
* contrib/hbwin/olecore.c
+ automatically add WIN_VT_ARRAY bit in 1-st parameter of
__oleVariantNew() when 2-nd parameter is an array
+ added support for typed variant arrays to __oleVariantNew()
Now it's possible to create strong typed one dimensional arrays and
pass them as parameters to foreign OLE code, i.e.
oOle:setArrayOfStrings( ;
__oleVariantNew( WIN_VT_BSTR, { "1-st", "2-nd", "3-rd" } ) )
oOle:setArrayOfIntegers( ;
__oleVariantNew( WIN_VT_INT, { 1, 2, 3, 4 } )
+ added support for array of integers initialization from strings
passed to __oleVariantNew() in 2-nd parameter.
Now it's possible to create strong typed one dimensional OLE array
initialized with string bytes ASCII values, i.e.
oOle:setUcharStr( ;
__oleVariantNew( hb_bitOr( WIN_VT_ARRAY, WIN_VT_UI8 ), ;
"ABCDEF" ) )
oOle:setArrayOfIntegers( ;
__oleVariantNew( hb_bitOr( WIN_VT_ARRAY, WIN_VT_INT ), ;
"ABCDEF" ) )
; warning: code not tested at all, written in my Linux box,
please make real life tests in MS-Windows
* contrib/hbwin/olecore.c
* added additional protection to reduce hb_oleSafeArrayToString()
functionality to arrays of VT_I1 and VT_UI1 items so other types
which may also allocate 1 byte for each item are not converted.
* contrib/hbwin/olecore.c
+ added support for named parameters in OLE method calls,
named parameters should be passed inside hash array in
first parameter, i.e.:
oWorksheets:add( { "Before" => oWS, "Count" => 3 } )
next parameters if exist are passed as unnamed ones, i.e.
oOle:add( { "name" => "test", "value" => 12345 }, 1, 2, 3 )
; warning: code not tested at all, written in my Linux box,
please make real life tests in MS-Windows
! fixed __oleGetNameId()
* *
% remove brandings and homepage [1] from copyright header. Pass 1 - using script.
[1] nobody has access to it anymore AFAIK - and it's also just
a redirect since long
! update url in copyright header
; this should make the diff between 3.4 and 3.2 easier to manage
* contrib/hbwin/olecore.c
+ added new PRG function to control empty date conversion to OLE variant:
__oleVariantNullDate( [<lNewNullFlag>] ) -> <lPrevNullFlag>
This is per thread switch and by default initialized to .F. for each
new thread. When set to .T. Harbour empty dates are translated to
VT_NULL.
Warning: it's possible that this function will be removed or replaced
by other solution in the future.
* contrib/gtqtc/gtqtc1.cpp
* emulate CTRL by setting SHIFT + ALT in Android builds
(It's temporary solution - my patch with support for CTRL in
Android QT builds has been accepted so it should be included
in next Qt releases)
% set Qt::WA_NoSystemBackground
* do not change number of rows and cols in maximized and fullscreen mode
when font is changed and resize mode set to HB_GTI_RESIZEMODE_FONT.
It was creating problems when user switched to fullscreen/maximized
mode and application was not ready to dynamically update screen
dimensions.
* activate virtual keyboard on double click instead of click.
It allows to hide virtual keyboard and control program using mouse
and touch events.
* src/rtl/gtwvt/gtwvt.c
+ added support for HB_K_MENU
* src/rtl/gtxwc/gtxwc.c
* use macros instead of constant values
+ added support for HB_K_MENU
* reload font after HB_GTI_FONTSIZE (compatible with other graphic GTs)
* eliminated recursive mutex XLIB locks in HB_GTI_FONTSEL
* discard existing graphics characters and redraw console window contents
after HB_GTI_FONTATTRIBUTE
* tests/gtkeys.prg
+ added support for HB_K_MENU and HB_K_TERMINATE
* contrib/hbwin/olecore.c
+ added some additional error codes to win_oleErrorText() function
* contrib/hbwin/hbole.ch
+ added OLE error code definitions with WIN_* prefix for errors returned
by win_oleErrorText()
* contrib/xhb/xhb.hbx
* contrib/xhb/xhbole.prg
+ aded new function OleDefaultArg()
% minor simplification
* src/rtl/itemseri.c
* do not generate RTE when wrong string is deserialized.
Now RTE 3016 is generated only when compressed data is deserialized
and ZLIB is not linked with final binaries so users can easy locate
the source of problem.
* src/vm/garbage.c
% added missing static in s_gcSpinLock declaration
* src/rtl/hbi18n1.c
* typo in comment
* src/rdd/dbf1.c
* src/rdd/dbffpt/dbffpt1.c
* src/rdd/dbsql.c
* formatting
* src/rdd/usrrdd/rdds/logrdd.prg
* src/rdd/usrrdd/usrrdd.c
* src/rtl/checkbox.prg
* src/rtl/getsys.prg
* src/rtl/listbox.prg
* src/rtl/menuto.prg
* src/rtl/pushbtn.prg
* src/rtl/radiobtn.prg
* src/rtl/radiogrp.prg
* src/rtl/scrollbr.prg
* src/rtl/tbrowse.prg
* src/rtl/tget.prg
* src/rtl/tgetint.prg
* src/rtl/tgetlist.prg
* src/rtl/tmenuitm.prg
* src/rtl/errapi.c
* src/rtl/hbgtcore.c
* src/rtl/hbi18n1.c
* src/rtl/hbinet.c
* src/rtl/idle.c
* src/rtl/math.c
* src/rtl/setkey.c
* src/vm/asort.c
* src/vm/hashfunc.c
* src/vm/thread.c
* accept any EVAL item not only codeblocks. Actually it means that
also SYMBOL items are accepted but in the future we may extend it
and accept also objects of classes with :eval() message.
* src/rtl/tget.prg
! fixed GET default PICTURE for TIMESTAMP type
fixes https://github.com/harbour/core/issues/65
2014-05-11 00:05 UTC+0200 Viktor Szakats
! fixed GET colors when _SET_INTENSITY == .F.
2014-04-22 02:35 UTC+0200 Viktor Szakats
% use Stuff() instead of different combinations of Left() and SubStr()
* include/harbour.hbx
* src/rtl/left.c
+ added new function to replace "=" operator without the SET EXACT ambiguity
in its most common pattern of usage:
hb_LeftEq( <cString1>, <cString2> ) -> <lResult>
it's equivalent to this expression, but faster and shorter:
( Left( <cString1>, Len( <cString2> ) ) == <cString2> )
2014-01-22 03:09 UTC+0100 Viktor Szakáts
+ added hb_LeftEqI(). Same as hb_LeftEq() but case-insensitive.
hb_LeftEqI( <cString1>, <cString2> ) -> <lResult>
2014-02-04 13:38 UTC+0100 Viktor Szakáts
* include/harbour.hbx
* src/rtl/chruni.c
+ added hb_BRAt(). Same as hb_RAt() but for raw/binary strings
2014-06-25 19:54 UTC+0200 Viktor Szakats
* contrib/sddsqlt3/core.c
! fixed missing first record of query
2013-11-08 21:43 UTC+0100 Viktor Szakats
; many of above modification was borrowed directly or try to follow some
changes in Viktor's branch - thanks.
* (all files)
* stripped svn header
* minor cleanups
; use following command to find out the history of files:
git log
git log --follow
git blame
git annotate