* include/hbcompdf.h
* src/compiler/cmdcheck.c
* src/compiler/hbmain.c
* src/compiler/hbcomp.c
* src/compiler/hbopt.c
* src/compiler/hbusage.c
* src/compiler/hbgenerr.c
+ Added options to control error/warning output format/style
in Harbour, to make it possible to switch to formats which
are handled by popular IDEs, like Eclipse, Code::Blocks.
Currently these are supported:
-ge[0]: Clipper compatible (default)
-ge1: "IDE friendly". Mimics the one submitted by Lorenzo
for Eclipse.
The goal is to cover the most IDEs with the less options,
so please test them to reach this optimum.
* harbour/include/hbapi.h
* harbour/src/common/hbver.c
+ added BOOL hb_iswin9x( void ) C function
* harbour/src/rtl/version.c
+ added HB_OSISWIN9X() PRG function
* harbour/src/rtl/gttone.c
% simplified the code using hb_iswin9x() function
TODO: Check if WinCE support WinNT file IO functions and if yes then
replace in src/rtl/filesys.c 'if( hb_iswinnt() )' with
'if( !hb_iswin9x() )'
* harbour/contrib/hbwin/win_tprn.prg
* harbour/contrib/hbwin/win_prn1.c
+ added ::AskProperties in WIN_PRN class
If it is assigned .t. prior to calling ::Create(), a DocumentProperties
dialog is displayed. By Budyanto Dj. borrowed from xHarbour.
NOTE: this modification does not contain win9x hack present in
xHarbour. Please make tests and update this code if necessary
* harbour/include/dbinfo.ch
* harbour/include/hbrdddbf.h
* harbour/src/rdd/dbf1.c
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* renamed DB_DBFLOCK_XHB64 => DB_DBFLOCK_HB64
* harbour/contrib/hbwin/win_tprn.prg
* updated some comments and formatting
* harbour/contrib/xhb/Makefile
+ harbour/contrib/xhb/xhw32prn.prg
+ added WIN32PRN class, it inherits from WIN_PRN class hiding some
differences between Harbour and xHarbour in paper size setting and
separated horizontal and vertical alignment setting
* harbour/include/hbclass.ch
* enable strict parameters validation in method declaration and
implementation when warning level (-w?) is 3 or higher
* small modification in error messages
* harbour/contrib/hbwin/win_prn1.c
! fixed WIN_FILLRECT() to return logical value (result of FillRect()
function)
+ extended WIN_SETPEN() to accept previously created by this function
HPEN handles
! fixed WIN_SETCOLOR() to return previously allocated color.
This function is used in such context in WIN_PRN class.
* harbour/contrib/hbwin/win_tprn.prg
+ added PageNumber member
! fixed printer output detection to respect also graphic primitives
! fixed SetColor() not changed to win_SetColor() when code was ported
from xHarbour
* include/hbdefs.h
+ Marked BOOL, TRUE and FALSE as HB_LEGACY_LEVEL3.
This means these types will disappear from Harbour after next
major release.
Please start to migrate to the new, pure Harbour replacement
types for portable Harbour code:
HB_BOOL, HB_TRUE, HB_FALSE.
Notice that you still may (and should) use BOOL, TRUE, FALSE
when dealing with Windows API (and some other 3rd party APIs),
where these are valid types in their own context.
* include/clipdefs.h
+ Added BOOL, TRUE and FALSE as Clipper compatibility type.
TRUE equals to 1 here for better Clipper compatibility
(was: !0)
* harbour/include/hbclass.ch
! fixed compilation with strong typed parameters in method
implementation
* enable strict parameters validation only when method is declared
with (), i.e.:
method open
does not force any parameter validation so it can be implemented
with any parameters but:
method open()
needs open method implementation with only one parameter and:
method open( file )
needs open method implementation with exactly one parameter 'file'
* src/rtl/Makefile
+ src/rtl/strclear.c
* include/hbextern.ch
+ Added HB_STRCLEAR() function to safely clear the content
of a string variable.
Notice that this method by itself can only work if the
string variable has no other references, and generally
you have to code carefully to avoid creating unwanted
copies of the string when passing it around in an app.
So this is no silver bullet, but rather just one component
to solve this problem.
* contrib/hbnetio/utils/netiosrv.prg
+ Added steps to avoid having the password stored in memory,
while the server is running.
* src/rtl/philes.c
% Minor cleanup.
* include/hbsetup.ch
* Disabled HB_LEGACY_LEVEL2 by default.
* HB_LEGACY_OFF now controls HB_LEGACY_LEVEL3 (was HB_LEGACY_LEVEL2).
+ Added HB_LEGACY_LEVEL4
; SVN users notice: This may make your C code INCOMPATIBLE with
this version, please review required changes (documented in older
ChangeLog entries) and update your code. Look for HB_LEGACY_LEVEL2
and INCOMPATIBLE keywords.
* contrib/hbnetio/utils/netiosrv.prg
+ contrib/hbnetio/utils/modules.hbp
+ contrib/hbnetio/utils/modules
+ contrib/hbnetio/utils/modules/test.prg
+ Added simple command line to server.
+ Added list of possible feature as TODO. Most of these will
need backend support from hbnetio lib.
+ Added detailed help screen.
+ Added --version option support.
+ Added support for -rpc=file.hrb option. Although for some
reason (most likely my omission) it doesn't work yet.
+ -DHB_EXTERN will now enable inclusion of all core functions.
+ Added build file for .hrb modules.
+ Added little test module.
+ Added SETCANCEL( .F. ) to avoid irregular shutdown with Ctrl+C.
* src/rtl/memoedit.prg
! Deleted hack which explicitly set lastkey to CTRL_END/W
when exiting with changes saved. The comment said that
it was added to make DBU happy, but it doesn't seem to be
necessary anymore, at least I couldn't spot any problem
without it. Pls check it.
! Fixed MEMOEDIT() not recognizing K_ESC as exit key when
custom function is used.
This fixes DBU not recognizing K_ESC as a way to exit
memo editing. Please review, I'm not MEMOEDIT() user
and this was such an obvious omission that I wonder
if there was some real reason for it. Anyhow it was
wrong before.
* contrib/hbfimage/fi_wrp.c
* contrib/hbclipsm/num.c
* contrib/hbclipsm/numfloor.c
* contrib/hbclipsm/status.c
* contrib/hbclipsm/numceil.c
* Formatting.
* harbour/include/hbapi.h
* harbour/src/vm/hashes.c
+ added new function hb_hashGetCItemPtr() which accepts ASCIIZ string
as index.
* harbour/contrib/hbnetio/netiosrv.c
+ added support for using HASH arrays as RPC filter.
Such hash array should be indexed by function/procedure name set of
codeblocks or function references or even objects which understand
EVAL method.
Please remember that function names passed from client side are case
sensitive so if you do not need it then please disable case matching
in the hash array, i.e. using HB_HSETCASEMATCH( hValue, .F. ).
* renamed NETIO_RPCFUNC() to NETIO_RPCFILTER() it's better name now
because we added support for using hash arrays as RPC filters:
NETIO_RPCFILTER( <pConnectionSocket>,
<sFuncSym> | <hValue> | NIL ) -> NIL
* harbour/contrib/hbnetio/netiomt.prg
+ added support for setting RPC filter in NETIO_MTSERVER() using its
4-th parameter:
NETIO_MTSERVER( [<nPort>], [<cIfAddr>], [<cRootDir>],
[<lRPC> | <sFuncSym> | <hValue>],
[<cPasswd>], [<nCompressionLevel>], [<nStrategy>] )
-> <pListenSocket>
* harbour/contrib/hbclipsm/environ.c
! fixed GPF in FILEDRIVE() function on platforms which do not support
drive letters or when path does not contain drive.
% small optimization in FILEPATH(), FILEBASE(), FILEEXT(), FILEDRIVE()
* harbour/contrib/hbnetio/netiocli.c
* pacified BCC warning
* harbour/include/hbznet.h
* harbour/src/rtl/hbznet.c
+ added support for blowfish encryption in HB_ZNETSTREAM
+ added C function
void hb_znetEncryptKey( PHB_ZNETSTREAM pStream,
const void * keydata, int keylen );
which enables data encryption in HB_ZNETSTREAM
+ added 4-th parameter to <cPass> to .PRG HB_INETCOMPRESS() function:
HB_INETCOMPRESS( <pSocket>, [<nCompressionLevel>], [<nStrategy>],
[<cPass>] )
<cPass> is initial value to create blowfish key.
Please test.
* config/wce/msvcarm.mk
+ Added -nxcompat and -dynamicbase to .dll link command.
(I'm unsure what -dynamicbase is good for in a .dll, but it's
accepted and set)
! Fixed to add -nxcompat/-dynamicbase for MSVC 2008 and upper.
(it's also possible to use it with MSVS 2005 SP1 though, but
build won't detect this case)
* include/hbwince.h
* Formatting.
* src/vm/dlmalloc.c
! Fixed two potentially uninitialized variables, signaled by MSVC.
* src/common/hbgete.c
+ Changed to use native SetEnvironmentVariable() API instead of
forced ANSI one.
* src/common/hbwince.c
* include/hbwince.h
% Deleted unused ANSI Windows API stubs.
+ Added empty SetEnvironmentVariable() stub for WinCE
builds where it's missing.
* Reconfigured these stubs:
SetCurrentDirectory()
GetCurrentDirectory()
GetComputerName()
GetUserName()
* config/win/global.mk
* Comment updated.
* config/win/msvc.mk
+ Added -nxcompat and -dynamicbase to .dll link command.
(I'm unsure what -dynamicbase is good for in a .dll, but it's
accepted and set)
! Fixed to add -nxcompat/-dynamicbase for MSVC 2008 and upper.
(it's also possible to use it with MSVS 2005 SP1 though, but
build won't detect this case)
* INSTALL
+ Added free SVN book link.
* src/vm/extrap.c
% Marked exception filter callback as 'static'
; TOCHECK: Please verify that OS/2 still works this way.
* src/rtl/oemansi.c
! Fixed two tabs.
* src/rtl/gtwvt/gtwvt.c
* contrib/gtwvg/gtwvg.c
* contrib/rddads/adsfunc.c
! Fixed to not use unsafe/ANSI CharToOemBuffA() API.
; Please review me.
* config/win/mingw.mk
+ Added information about MinGW alternatives for MSVC
security features. Unfortunately they need Cygwin
binary plus some depend on MinGW host platform
and/or version.
* include/hbwince.h
* src/common/hbwince.c
- Deleted CharToOemBuffA(), OemToCharBuffA(). No longer
needed by Harbour.
; TODO: Delete rest of not anymore used ANSI WinAPI
functions. Now Harbour never uses ANSI
WinAPI functions in UNICODE mode.
* config/win/global.mk
- Deleted reference to CharToOemBuffA(), OemToCharBuffA().
* harbour/src/rtl/hbznet.c
* harbour/include/hbznet.h
* added new optional parameter to hb_znetWrite() function which allow
to catch result of last hb_socketSend() operation
* removed automatic flushing from hb_znetWrite() function,
it should help in implementing more efficient C code using
hb_znet*() functions
* harbour/src/rtl/hbinet.c
* flush HB_ZNETSTREAM output after write operation
% small optimization in internal inet error setting
* harbour/include/hbvmpub.h
* minor formatting
* harbour/contrib/hbnetio/netio.h
* harbour/contrib/hbnetio/netiosrv.c
+ added new PRG function:
NETIO_RPCFUNC( <pConnectionSocket> [, <sFuncSym> ] ) -> NIL
which allows to set user filter for RPC calls. <sFuncSym> is executed
on each RPC request instead of requested function and receives as
first parameter requested function symbol then function parameters.
A simple wrapper may look like:
static function rpc_filter( sFunc, ... )
? "DO", sFunc:name, "WITH", ...
return sFunc:exec( ... )
and can be activated by:
netio_rpcfunc( pConnectionSocket, @rpc_filter() )
When NETIO_RPCFUNC() is called without valid function symbol then
existing user RPC filter is cleared. Please remember that setting
user RPC filter does not automatically enable RPC support for
given connection socket. RPC support has to be enabled by NETIO_RPC()
function or by 4-th parameter of NETIO_LISTEN() socket.
* harbour/src/rtl/gtwin/gtwin.c
+ added support for HB_GTI_ISUNICODE
* harbour/include/hbapifs.h
* added missing 'extern' in some declarations
* harbour/include/hbzlib.ch
+ added HB_ZLIB_STRATEGY_* constants
+ added HB_ZLIB_COMPRESSION_DISABLE
* harbour/include/Makefile
+ harbour/include/hbznet.h
* harbour/include/hbextern.ch
* harbour/src/rtl/Makefile
* harbour/src/rtl/hbinet.c
+ harbour/src/rtl/hbznet.c
+ added support for ZLIB compression in stream sockets.
+ added .prg function:
HB_INETCOMPRESS( <pSocket>, [<nCompressionLevel>], [<nStrategy>] )
which enables ZLIB compression for given HB_INET*() socket.
<pSocket> is a socket created by one of HB_INET*() functions
<nCompressionLevel> is compression factor between 1 (fastest) and
9 (best) (see HB_ZLIB_COMPRESSION_*)
0 (none) disable compression on output data
but decompression is still working.
<nStrategy> is used to tune compression algorithm,
see HB_ZLIB_STRATEGY_*
The compression must be enabled on both connection sides, i.e.
on the server side:
conn := hb_inetAccept( sock )
hb_inetCompress( conn )
and on the client side:
sock := hb_inetConnect( cServer, nPort )
hb_inetCompress( sock )
in the same moment but it's not necessary to enable it at the
beginning of connection. It can be done later, i.e. when both
sides agree to enable connection using some custom protocol.
The compression has effect only on stream connections, i.e.
TCP and it's ignored in datagram connections like UDP.
This function can be executed more then once changing the compression
parameters but it causes that all data in readahead decompression
buffer is discarded. When called with HB_ZLIB_COMPRESSION_DISABLE
as <nCompressionLevel> then support for stream compression is removed
and sockets works again in raw mode.
The compression level and strategy do not have to be the same on both
connection sides. Each side can chose the best settings for data it's
going to send.
This code was written in a way which allows to easy implement
alternative compression methods or other extensions like encryption
in existing HB_INET*() sockets also by non core code. The public C
functions declared in hbznet.h allows to use this extension with raw
harbour sockets two.
* harbour/include/hbextcdp.ch
* harbour/include/hbextlng.ch
* harbour/src/lang/Makefile
- harbour/src/lang/msghr437.c
+ harbour/src/lang/msghr646.c
- harbour/src/codepage/cphr437.c
+ harbour/src/codepage/cphr646.c
* renamed HR437 CP and LANG modules to HR646 (CROSCII / ISO-646-YU)
* harbour/include/hbextcdp.ch
* harbour/include/hbextlng.ch
* harbour/src/codepage/Makefile
- harbour/src/lang/msgsl437.c
+ harbour/src/lang/msgsl646.c
- harbour/src/codepage/cpsl437.c
+ harbour/src/codepage/cpsl646.c
* renamed CL437 CP and LANG modules to CL646 (SLOSCII / ISO-646-YU)
* harbour/src/lang/msghriso.c
! fixed language ID
+ harbour/src/codepage/cphr646.c
* harbour/src/codepage/cphr852.c
* harbour/src/codepage/cphrwin.c
+ harbour/src/codepage/cpsl646.c
* harbour/src/codepage/cpsliso.c
* harbour/src/codepage/cpslwin.c
* harbour/src/codepage/cpsl852.c
! changed the collation order so X and Y characters are sorted before Z
It's CL5.2 ntxcro.obj compatible behavior. Now HR646 and SL646 Harbour
CPs can be used to share data with Clipper application linked with
ntxcro.obj.
* harbour/include/hbextcdp.ch
* harbour/src/codepage/Makefile
+ harbour/src/codepage/cphriso.c
+ added HRISO (ISO-8859-2) Harbour CP module
Please test all these modifications.
[TOMERGE 2.0]
* harbour/src/nortl/nortl.c
! added hb_xtraced()
* harbour/src/common/hbstr.c
* do not fill unused part of buffer with '\0' bytes in
hb_strncpy(), hb_strncpyLower(), hb_strncpyUpper(),
hb_strncpyUpperTrim(), hb_strncpyTrim()
* harbour/src/common/hbtrace.c
% small optimization in building Unicode OutputDebugString() message
* harbour/src/codepage/Makefile
* harbour/include/hbapicdp.h
+ harbour/src/codepage/ucyuscii.c
+ added YUSCII unicode table
* harbour/src/codepage/cphr437.c
* harbour/src/codepage/cpsl437.c
! fixed unicode table used in HR437 and SL437 Harbour CPs.
It's not CP-437 but YUSCII
- removed my old note "TOFIX: is it really CP-437?"
TOFIX: change Harbour names of above CPs, i.e. to HRYU and SLYU
* harbour/src/codepage/uckam.c
* removed TOFIX note I forgot to remove when committed correct
Kamenicky Unicode table.
* harbour/src/codepage/uckoi8.c
* harbour/src/codepage/uc857.c
* harbour/src/codepage/uc1250.c
* harbour/src/codepage/uc1254.c
* harbour/src/codepage/uc866.c
* harbour/src/codepage/uc850.c
* harbour/src/codepage/uc1251.c
* harbour/src/codepage/ucmaz.c
* harbour/src/codepage/uc1252.c
* harbour/src/codepage/uc8859_1.c
* harbour/src/codepage/uc88591b.c
* harbour/src/codepage/uc852.c
* harbour/src/codepage/uc737.c
* harbour/src/codepage/uc1253.c
* harbour/src/codepage/uc1257.c
* harbour/src/codepage/uc8859_2.c
* updated some of my old copyright messages
* harbour/include/hbapi.h
* harbour/src/common/hbprintf.c
+ added new function 'int hb_printf_params( const char * format )' which
returns number of parameters necessary for format string
* harbour/src/common/hbtrace.c
* added protection against recursive calls when number of parameters
used by HB_TRACE message us bigger then 16 and fm.c module was compiled
with HB_TR_DEBUG macro
% use the same number of characters for unicode and byte string buffers
% use common memory area (union) for unicode and byte messages to reduce
C stack usage
Please test these modifications in real MS-Windows systems.
* src/vm/fm.c
* include/hbapi.h
+ Added hb_xtraced(). Please check it might be wrong.
* src/common/hbtrace.c
- Deleted hack to disable winout to avoid recursive calls.
+ Added TOFIX to avoid recursive calls with some clever
detection on error case (hb_xtracd() && no_of_formatt_strings > 16)
I didn't implement it, pls do so if interested.
! Fixed MultiByteToWideChar sizeof() to HB_SIZEOFARRAY().
* harbour/include/Makefile
* harbour/include/hbmath.h
+ harbour/include/hbmather.h
* harbour/include/hbsetup.h
* harbour/include/hbapi.h
* moved math error handler definitions and settings separate header file
* moved hb_random_num() declaration from hbmath.h to hbapi.h
After above modification hbmath file should be use only by code which
wants to use math functions declared usually in math.h
+ harbour/include/hbfloat.h
+ added header file with test macros for floating point numbers
this file should be included before any other files
* harbour/src/vm/hvmall.c
* harbour/src/vm/itemapi.c
* harbour/src/common/hbprintf.c
* harbour/src/rtl/math.c
* use new macros from hbfloat.h
* harbour/src/rtl/math.c
+ include "hbmather.h"
* harbour/src/rtl/hbrandom.c
* harbour/src/rdd/dbf1.c
* harbour/contrib/xhb/hboutdbg.c
- removed not longer necessary include "hbmath.h"
* harbour/contrib/hbct/ctmath.h
- do not include <float.h> and <limits.h>
* harbour/contrib/hbct/ct.h
- do not include "hbmath.h" and "ctmath.h"
* harbour/contrib/hbct/ctmath.c
* harbour/contrib/hbct/exponent.c
* harbour/contrib/hbct/ctc.c
+ include "ctmath.h"
* harbour/contrib/hbct/trig.c
* harbour/contrib/hbct/finan.c
* harbour/contrib/hbct/ctmath2.c
+ include "ctmath.h"
+ include "hbmather.h"
* harbour/contrib/hbct/num1.c
+ include "ctmath.h"
+ include <float.h>
* harbour/include/hbinit.h
* harbour/src/rtl/hbsocket.c
* added patches from Tamas - thanks
* harbour/bin/hb-func.sh
* harbour/harbour.spec
+ create /etc/ld.so.conf.d/harbour.conf with Harbour shared lib directory
if /etc/ld.so.conf.d directory exists and user has sufficient write
permission or install package is created.
This modification allows to install Harbour anywhere and in modern
distros using /etc/ld.so.conf.d/ harbour shared libraries will be
always available for all programs
[TOMERGE 2.0]
* harbour/include/hbmath.h
! enable HB_MATH_ERRNO in all *unix builds not only in GCC ones
* harbour/src/vm/itemapi.c
! use finite() to check for valid double values - looks that SunCC
does not report iDODO warnings so we were not informed about the
problem
* harbour/include/hbdefs.h
* harbour/src/common/hbprintf.c
% use also _STDC_C99 macro not only _ISOC99_SOURCE to detect C99 mode
and do not reduce such detection to GCC
[TOMERGE 2.0]
* harbour-win-spec
* harbour-wce-spec
* harbour.spec
* include/hbver.h
* config/global.mk
* Changed version to interim version number
2.0.1dev (from 2.0.0)
* harbour-win-spec
* harbour-wce-spec
* harbour.spec
* include/hbver.h
* package/winuni/RELNOTES
* config/global.mk
* Changed version to 2.0.0 (from 2.0.0rc1)
* package/winuni/RELNOTES
* Finalization (djgpp -> watcom)
* package/winuni/mpkg_win_uni.nsi
! Fixed uninstallation of Start Menu on Vista/Win7, at the
same time it won't ask for admin credentials anymore on
these OS versions.
* MS-DOS/OS2/Linux libs are now not selected by default.
* config/dos/watcom.mk
* config/dos/djgpp.mk
* Disabled .dll generation for MS-DOS build for now.
dos/watcom doesn't work, dos/djgpp needs special fixes
in djgpp to work.
In the meantime, for testing purposes they can be
enabled using: HB_BUILD_DLL=dostest
* harbour/config/bsd/gcc.mk
+ added c i s to ar parameters
* harbour/src/vm/estack.c
* formatting
* harbour/include/hbtypes.h
% replaced #ifdef ... / #undef ... with simple #undef
* harbour/include/hbapi.h
* harbour/src/vm/garbage.c
- removed function hb_gcRefDec()
* functions hb_gcRefInc() and hb_gcRefFree() moved to public API
After recent modifications in GC which introduced user defined
mark functions it's reasonable to make these function public to
extend functionality and give GC full interface to user defined
blocks.
* harbour/src/vm/Makefile
* enable HB_HVM_ALL=yes in OpenWatcom C builds - it does not cause such
huge compile time overheads as in C++ mode
* harbour/src/vm/dynlibhb.c
* generate TODO warning also in DOS builds when HB_LIBLOAD()/HB_LIBFREE()
is unsupported
* harbour/include/hbwince.h
! fixed recent modification
* harbour/include/hbgtcore.h
* harbour/include/hbapigt.h
* moved declaration of hb_gtSetDefault() from hbgtcore.h to hbapigt.h
* harbour/include/hbapi.h
* harbour/src/vm/hvm.c
+ added new function hb_vmSetDefaultGT()
* harbour/bin/hb-func.sh
* harbour/utils/hbmk2/hbmk2.prg
* use hb_vmSetDefaultGT() to set default GT
* removed extern declarations for functions defined in hbapi.h
* harbour/src/vm/dynlibhb.c
+ added support for HB_LIBLOAD()/HB_LIBFREE() in DJGPP 2.04 builds
* harbour/config/global.mk
* use 8.3 names for harbour dynamic libraries in all DOS builds
* harbour/config/dos/djgpp.mk
+ added support for dynamic libraries (DXE) in DJGPP builds.
DXE is sth similar to DLL in Windows and can be used with
DJGPP 2.04. I had to make some modifications in DXE header
files to make it working so it will not work in default DJGPP
installation. I'll document these modifications in the future.
* harbour/config/dos/watcom.mk
* enable creating of harbour dynamic libraries only when HB_BUILD_DLL
is explictly set by user to 'yes'. In DOS DJGPP and OpenWatcom builds
DLLs support is not functional yet.
* harbour/config/dyn.mk
* added an option to create harbour dynamic libraries from static
ones instead of .o|.obj files. It's necessary for DXE3GEN which
internally calls LD which has some limited on maximum size of passed
parameters.
TODO: make HB_DYN_LIBS definition common for dyn.mk and lib.mk
* include/hbextern.ch
+ Added new trace functions.
; TODO: Use these new functions in HBQT, HBXBP.
* contrib/hbwin/win_dll.c
! Fix for OpenWatcom. Seems to require LPVOID in asm code.
* contrib/hbqt/hbqt_destruct.cpp
* Minor formatting. ('return( x )' -> 'return x', return is not a function)
+ Added 'TODO:' to todo text.
+ Added TOFIX to hb_parptr() usage. Without reference counting this is
still dangerous.
Probably some mechanisms would be needed to count references when
attaching one GC collected pointer to another object, and decrement
references when disconnecting or deleting holder object. Without
this, there will always be a possibility that some objects refer
to deleted objects. Unless I'm missing some logic which already that.
Probably "delayed release" is the mechanism which is trying to
solve that problem at the moment.
* contrib/hbwin/wapi_winbase_mutex.c
* Minor formatting (superfluous brackets)
* harbour/include/Makefile
+ harbour/include/hbtrace.ch
* harbour/include/hbtrace.h
* harbour/src/rtl/trace.c
* harbour/src/common/hbtrace.c
! fixed hb_tracelevel() C function to change trace filter instead of
last message level. It also fixed .prg function HB_TRACELEVEL().
+ added new C function:
void hb_tracelog( int level, const char * file, int line,
const char * proc, const char * fmt, ... )
+ added new .prg functions:
hb_traceLogLevel( <nNewLevel> ) -> <nPrevLevel>
hb_traceLog( <xMsgItems,...> ) // generate message at
// hb_traceLogLevel()
hb_traceLogAt( <nLevel>, <msg,...> )
+ added support for HB_TRACE() messages in .prg code with the same
functionality as in C code:
HB_TRACE( <level>, <msg,...> )
HB_TRACE() code if filtered at compile time by HB_TR_LEVEL_* macros
i.e. -DHB_TR_LEVEL_INFO used as harbour compiler parameter
and at runtime by HB_TR_LEVEL=<level> envvar (set HB_TR_LEVEL=DEBUG)
or by hb_traceLevel( <nLevel> ) function (hb_traceLevel( HB_TR_DEBUG ))
Default compile time and runtime trace level for C and .prg code
is HB_TR_WARNING.
* harbour/src/vm/thread.c
* added hb_threadOnceInit() to .prg function list
* harbour/include/hbinit.h
* use HB_STATIC_STARTUP as default initialization method of all
C++ compilers
* src/codepage/Makefile
+ src/codepage/cpel437.c
- src/codepage/cpgr437.c
* include/hbextcdp.ch
* Renamed GR437 codepage to EL437. EL is the ISO language code for Greek.