* tests/wvtext.prg
* Updates. Formatting. Show msgbox when MT is not present.
* contrib/hbxbp/Makefile
+ Enabled for mingw64.
* contrib/hbxpp/xppop.prg
* contrib/hbxpp/xppopc.c
+ Added Xbase++ compatible operator overloading for $ on arrays.
* harbour/contrib/xhb/trpc.prg
* harbour/contrib/xhb/trpccli.prg
! fixed xhb_StartThread() -> StartThread()
* harbour/contrib/xhb/xhbgt.c
! removed unnecessary wrapper to CT3 SETLASTKEY() function
* harbour/contrib/hbnf/ftisprn.c
! fixed HB_ISPRINT() -> HB_ISPRINTER()
* harbour/contrib/hbxpp/tbrowsex.prg
! added missing _TBR_COORD() definition
; TOFIX: this code uses _MAXFREEZE() function which do not exists so
it cannot be linked with any application
* contrib/hbxpp/dmlb.ch
+ Added comment that header is also used by C code.
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/gtwvg.h
! Partial revert of previous revert:
There was no reason to revert macro names, so
I kept these in sync with the rest of Harbour,
only colors are kept as non-MS-DOS compatible.
; TOFIX: Palette indexing.
* examples/hbdoc2/gentxt.prg
! Fixed to previous fix to rather delete unused
parameter in definition, than addig it to
declaration and mark it as unused.
* harbour/contrib/hbxpp/hbxpp.ch
+ added TEXT INTO <varname> [WRAP [<cEOL>]] [TRIMMED]
* harbour/contrib/hbct/atrepl.c
! fixed in two places buffer overflow.
Many thanks to Alexandr Okhotnikov for the information
% code optimized to use hb_reclen_buffer() in all cases when new buffer
is dynamically allocated.
* small code simplification and change prefix of HB_SIZE variables from
's' to 'n'
* contrib/hbxpp/Makefile
+ contrib/hbxpp/thread.ch
* contrib/hbxpp/tthreadx.prg
+ Added thread.ch compatibility header.
! Fixed QUIT_* constants to be the same as in real XPP,
also moved them to header.
* contrib/hbxpp/xppop.prg
* contrib/hbxpp/xppopc.c
! Restored stupport for negative indexes in 'string[ n ]' syntax.
* Two reported RTE made XPP compatible regarding 'string[ n ]' syntax.
Left marked as TODO. I hope one day an XPP user will complete them.
! Fixed names of an internal function to not be the same as in xhb lib.
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/gtwvg.h
* Synced color RGB values with GTWVT.
* contrib/hbgd/hbgd.hbc
! Fixed to reference hbct lib. hbgd requires it for
some math functions.
* contrib/hbxpp/Makefile
* contrib/hbxpp/hbxpp.ch
+ contrib/hbxpp/xppopc.c
+ contrib/hbxpp/xppop.prg
+ contrib/hbxpp/tests/opover.prg
+ Added support for 'string[ n ]' syntax.
Note, you have to #include "hbxpp.ch" to activate it.
(of course you can pick the logic and copy it to app
code, it's only two lines)
(copied and adapted from existing xhb lib implementation)
* contrib/xhb/xhbmsgs.c
! Fixed HB_LONG -> HB_ISIZ
* contrib/hbxpp/hbxppext.ch
* Updated.
* harbour/contrib/hbxpp/tthreadx.prg
+ added paramter validation in THREAD:setInterval() and
THREAD:setStartTime()
+ added support for THREAD:startTime
* updated TODO notes
* harbour/src/vm/hvm.c
+ added internal PRG function __QUITCANCEL()
* harbour/contrib/hbxpp/Makefile
+ harbour/contrib/hbxpp/sleepx.prg
+ added xbase++ compatible prg function SLEEP( <nHSeconds> ) -> NIL
* harbour/contrib/hbxpp/tthreadx.prg
! renamed TTHREAD class to THREAD and TSIGNAL to SIGNAL - I had to
wrongly understood xbase++ documentation sent to the least.
! made THREAD:threadSelf() method exported
+ added full support for THREAD:QUIT( [<xResult>] [,<nRestart>] )
! initialize THREAD:startCount and ThreadObject() value before executing
THREAD:atStart[()] method and codeblock
% simplified emulation of xbase++ like behavior of THREAD:atStart[()]
and THREAD:atEnd[()], in such context it's not necessary to use
__ClsMsgType()
% simplified THREAD:execute() method calling
+ added proper THREAD:deltaTime setting
! do not use THREAD:startTime to store thread start time
! fixed thread restarting when THREAD:interval is set to use
calculated THREAD:deltaTime instead of fixed delay defined
by THREAD:interval
* source/contrib/hbxpp/tthreadx.prg
* changed ::start() method to execute ::atStart/::atEnd methods/codeblocks
when present.
* changed ::threadID() from method to iVar
! ::startCount should be incremented at every execution
* ::threadSelf() method moved to HIDDEN section
* harbour/src/vm/task.c
! fixed casting for C++ builds
* harbour/src/lang/msges.c
! added hack for Solaris builds where ES is macro
TODDO: sync names of lang and corresponding code modules.
* harbour/src/vm/dynlibhb.c
* pacified warning
* harbour/contrib/xpp/xppextrn.ch
* harbour/contrib/xpp/dbcmdx.c
* harbour/include/hbextern.ch
* harbour/src/rdd/dbcmd53.c
! moved ordWildSeek() from XPP to HBRDD library.
I have no idea if XPP has such function or if it's or not
compatible with ORDWILDSEEK() functions I created for [x]Harbour
* disable ordCount() and ordWildSeek() functions when HB_CLP_STRICT
macro is set
* harbour/include/hbsocket.ch
+ added macro values interface info flags: HB_SOCKET_IFF_*
+ added macro values for interface info array indexes: HB_SOCKET_IFINFO_*
* harbour/include/hbsocket.h
* harbour/src/rtl/hbsocket.c
+ added new C function:
PHB_ITEM hb_socketGetIFaces( int af, HB_BOOL fNoAliases );
it returns array with existing interfaces description.
This code was added for non MS-Windows based platforms only.
Support for MS-Windows has to be added yet.
Some platforms may not fill all fields in the returned array.
When some fields are not supported by platform or interface then
they can contain NIL value.
On some platforms this code can effectively work only with IP4
interfaces and IP6 ones will need different implementation.
TODO: add support for alternative long interface introduced in some
new systems using 'struct lifreq' with SIOCGLIF* ioctls instead
of 'struct ifreq' and SIOCGIF*
TODO: add support for extracting hardware addreses (i.e. ethernet
macaddresses) for systems which do not support SIOCGIFHWADDR.
Please test this code with OS2 using OpenWatcom and GCC (old and
new socket API). I enabled HB_HAS_SOCKADDR_SA_LEN in OS2 builds.
OpenWatocm OS2 header files have such fields but I do know if it's
also present in GCC socket API.
* harbour/include/hbextern.ch
* harbour/src/rtl/hbinet.c
+ added new PRG function:
hb_inetIfInfo( [<lNoAliases>] [, <nAddrFamily>] ) -> <aInfo>
<lNoAliases> is .F. by default so aliases are included
<nAddrFamily> is HB_SOCKET_AF_INET by default
<aInfo> is an array in which each entry is also array with the
following fields:
HB_SOCKET_IFINFO_FAMILY 1 // adress family
HB_SOCKET_IFINFO_NAME 2 // interface name
HB_SOCKET_IFINFO_FLAGS 3 // flags HB_SOCKET_IFF_*
HB_SOCKET_IFINFO_ADDR 4 // interface address
HB_SOCKET_IFINFO_NETMASK 5 // subnetmask
HB_SOCKET_IFINFO_BROADCAST 6 // broadcast address
HB_SOCKET_IFINFO_P2PADDR 7 // point-to-point address
HB_SOCKET_IFINFO_HWADDR 8 // hardware address
Please use this code on different non MS-Windows platforms:
proc main( noAlias )
local iface
? os(), version()
? "interfaces:"
for each iface in hb_inetIfInfo( !empty( noAlias ), 0 )
? hb_valToExp( iface )
next
?
return
and check if it returns correct information about available
interfaces.