* harbour/src/common/hbtrace.c
! fixed to not overwrite user trace settings with default or
environment configuration on 1-st call to hb_tr_level()/
hb_tracelevel() function
* harbour/src/debug/dbgwa.prg
! added missing REQUEST FIELDGET
+ added support for timestamp, hash and NIL values which
can be extracted from fields in some RDDs
* harbour/src/compiler/hbmain.c
! reset function and class declaration between compiling files included
by SET PROCEDUR TO <name> or DO <name> [ WITH <args,...> ]
This behavior is synced with PP rules resetting.
* harbour/contrib/xhb/xhb.hbp
+ added two .ch files
* harbour/contrib/hbct/hbct.hbx
* regenerated with LF EOL.
I think that these files should be declared in SVN as using native
EOLs
* harbour/src/rtl/gtstd/gtstd.c
* updated to compile with WinCE
* harbour/package/harbour.spec
* modified to work with new HBMK2 translations
* harbour/contrib/hbmzip/hbmzip.c
! fixed function order
* harbour/contrib/hbwin/axcore.c
* include <olectl.h>
! fixed buffer sizes in debug function
* removed trailing spaces and tabs
* harbour/contrib/hbwin/hbolesrv.c
* include <tchar.h> - for some compilers which do not make it
with OLE header files
* harbour/contrib/hbwin/tests/pdfcreat.prg
! fixed warning for whose who uses alternatve sample branch #if 0
* harbour/src/rtl/gtstd/gtstd.c
! fixed console input pooling for Windows (you don't need to keep
a key pressed to run application)
* harbour/src/rtl/gttrm/gttrm.c
! added protection against GPF when wrong parameters are
passed to hb_gtInfo( HB_GTI_ADDKEYMAP, ... )
* harbour/src/rtl/hbgtcore.c
! added protection against GPF when wrong parameters are
passed to hb_gtAlert()
* harbour/src/rtl/gtapi.c
* formatting
* harbour/src/rtl/cdpapi.c
! fixed return value in hb_cdpStrAsU16Len()
* harbour/src/rdd/dbf1.c
* harbour/src/rdd/dbffpt/dbffpt1.c
+ added support for UNICODE fields compatible with the one used
by ADS
* harbour/contrib/hbxbp/hbxbp.hbx
+ automatically updated
* harbour/contrib/rddads/ads1.c
* casting
* harbour/doc/xhb-diff.txt
* updated information about PRG level hb_socket*() API
+ added information about serial port support
* harbour/src/lang/msg_tpl.c
! added one missing message
* harbour/src/lang/msgsv.c
* harbour/src/lang/msgsvwin.c
* removed redundant item copied from xHarbour
Thanks to Klas Engwall for the info.
* harbour/src/lang/Makefile
! added Swedish CPs
Thanks to Klas Engwall for the info.
* harbour/src/rtl/hbcom.c
* explicitly set HB_COM_ERR_TIMEOUT and return -1 in all OS-es if
hb_comSend() or hb_comRecv() writes/reads 0 bytes.
It should help in creating portable code eliminating OS dependent
differences.
* harbour/include/hbapi.h
* harbour/src/common/hbstr.c
+ added new C function:
double hb_numExpConv( double dNum, int iExp )
* harbour/src/rdd/dbf1.c
+ added support for decoding exponents part from 'F' fields
* harbour/src/compiler/hbmain.c
* declare automatically created function in code compiled by
HB_COMPILEFROMBUF() with -n2 switch as static.
It eliminates possible conflicts when user tries to register
in single HVM instance many HRB modules with such startup function.
* harbour/src/rtl/gtwvt/gtwvt.c
! fixed possible double font freeing in non UNICODE builds
* harbour/contrib/hbwin/win_misc.c
+ added prg function WIN_UNICODE() which returns logical value
indicating if UNICODE macro was used or not
* harbour/utils/hbrun/hbrun.prg
! fixed typo in my last commit - Thanks to Frank Van Nuffel for
information about the problem
+ harbour/src/lang/msgsv.c
+ harbour/src/lang/msgsvwin.c
+ added Swedish language modules by Klas Engwall
(borrowed from xHarbour with some small modifications - please verify)
* harbour/include/hbapirdd.h
* harbour/src/rdd/workarea.c
+ added new 5-th parameter with pointer to super table ID to
<RDD>_GETFUNCTABLE() function
+ added new C function hb_rddInheritEx() which allows to retrieve
super RDD ID during registration.
+ added new C function:
HB_BOOL hb_rddIsDerivedFrom( HB_USHORT uiRddID,
HB_USHORT uiSupperRddID );
which returns HB_TRUE if one of uiRddID ancestors is uiSupperRddID
* harbour/src/rdd/dbf1.c
* harbour/src/rdd/delim1.c
* harbour/src/rdd/sdf1.c
* harbour/src/rdd/dbffpt/dbffpt1.c
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
* harbour/src/rdd/usrrdd/usrrdd.c
* harbour/src/rdd/usrrdd/rdds/arrayrdd.prg
* harbour/src/rdd/usrrdd/rdds/dbtcdx.prg
* harbour/src/rdd/usrrdd/rdds/fptcdx.prg
* harbour/src/rdd/usrrdd/rdds/hscdx.prg
* harbour/src/rdd/usrrdd/rdds/vfpcdx.prg
* harbour/src/rdd/usrrdd/rdds/logrdd.prg
* harbour/src/rdd/usrrdd/rdds/rlcdx.prg
* harbour/src/rdd/usrrdd/rdds/smtcdx.prg
* harbour/contrib/rddbmcdx/bmdbfcdx.c
* harbour/contrib/rddsql/sqlbase.c
* harbour/contrib/rddsql/sqlmix.c
* harbour/contrib/rddads/adsx.c
* harbour/contrib/rddads/ads1.c
* respect new parameter in <RDD>_GETFUNCTABLE() and use
hb_rddInheritEx() instead of hb_rddInherit()
* harbour/contrib/rddads/ads1.c
* use hb_rddIsDerivedFrom() to recognize RDDs which inherits from
one of ADS* RDDs.
It should resolve some problems with ADS*X RDDs and help to simplify
ADS*X RDDs code.
Please test it and update ADS*X code removing some code which is
not longer necessary.
+ Added to the list of contributors:
Carlos Bacco (carlosbacco gmail.com)
Francesco Perillo (fperillo gmail.com)
Istvan Bisz (istvan.bisz t-online.hu)
Tamas Tevesz (ice extreme.hu)
(I accept recommendation about who else should be added,
it's be a while I updated this list)
* contrib/hbide/ideparseexpr.c
% Using hb_parldef().
* harbour/include/hbcom.ch
+ added new error constant value: HB_COM_ERR_IO
* harbour/src/rtl/hbcom.c
+ added translation for some important OS error code
in *nix builds
+ added translation ERROR_TIMEOUT -> HB_COM_ERR_TIMEOUT
in Windows build.
TODO: check real error codes for it and also for other
operations like opening the same port more then
once and add valid translations
; TODO: add some basic trnaslation for OS2 error codes.
HB_COM_ERR_TIMEOUT seems to be most important for portable
programs.
* harbour/include/hbcom.ch
* updated few comments
* harbour/include/hbapicom.h
* harbour/src/rtl/hbcom.c
+ added new C function:
HB_FHANDLE hb_comGetDeviceHandle( int iPort );
* small cleanup in OS2 flow control setting
* harbour/src/rtl/hbcomhb.c
+ added new PRG function
HB_COMGETDEVICEHANDLE( nPort ) --> nHandle | F_ERROR
* modified HB_COMFLOWCONTROL() to not change existing flow control
when 3-rd parameter is missing:
HB_COMFLOWCONTROL( nPort, @nOldFlow [, nNewFlow] ) --> lSuccess
* harbour/contrib/hbmzip/hbmzip.c
! fixed date setting in HB_ZIPFILECREATE()
* harbour/src/pp/ppcore.c
+ added new PP directive:
#warning <*msg*>
* harbour/include/hbclass.ch
* use #warning instead of #error for class method declaration mismatch
(enabled by -w3 compiler switch)
* harbour/include/hbapicom.h
* harbour/src/rtl/hbcom.c
+ added public C function: void hb_comSetError( int iPort, int iError )
* harbour/src/rtl/hbcomhb.c
+ added PRG function: HB_COMSETERROR( nPort, nError ) --> NIL
* harbour/src/rtl/hbsocket.c
* minor formatting
* harbour/config/doc.mk
* harbour/config/postinst.hbs
* harbour/contrib/make.hbs
* do not install documentation files when HB_INSTALL_DOC=no
* harbour/config/postinst.hbs
! do not install .hbl files for core utils when HB_BUILD_PARTS=lib
+ added support for HB_INSTALL_SCRIPT executed after install step.
It allows to extract some variables set by our GNU make system,
i.e. it's used to retrieve HB_CCPREFIX in win/wince .spec files.
* harbour/package/harbour-win.spec.in
* use HB_INSTALL_DOC=no to disable DOC file installation
* generate hb{w|ce}mk2 scripts as wrappers to hbmk2 with cross
build settings so it can be easy used used by users to create
Windows/WindowsCE binaries.
Temporary solution until we will not have something more general.
* contrib/hbqt/utils/hbqtgen.prg
+ Changed HBQT_TYPE_* constants to be crc32 hashes
derived from component name + type name + "HBQT_TYPE_"
string to guarantee uniqueness (and to make it
possible to generate it dynamically).
[ BTW formerly the base value was derived from
component name with crc16, and the rest was incremented
counter dependent on input file order. ]
Please review hash generation, as it needs to be
constant for a longer time, and hash method should be
possible to extend to other IDs, like QT enums.
* contrib/hbqt/qtgui/g/hbqtgui.h
* contrib/hbqt/qtwebkit/g/hbqtwebkit.h
* contrib/hbqt/qtcore/g/hbqtcore.h
* contrib/hbqt/qtnetwork/g/hbqtnetwork.h
* contrib/hbqt/qscintilla/g/hbqscintilla.h
* contrib/hbqt/qtdesigner/g/hbqtdesigner.h
* Regenerated.
* src/rtl/inkeyapi.c
* src/rtl/inkey.c
! Copyright comments moved/updated.
* harbour/include/hbclass.ch
% small modification to reduce lock time
* harbour/src/common/hbdate.c
! fixed hb_timeUTCOffset() in MS-Windows builds to work in some
countries/windows versions where GetTimeZoneInformation() returns
TIME_ZONE_ID_INVALID but sets correct tzInfo.StandardBias field.
* harbour/package/mpkg_ver.sh
! fixed to set correctly root path after moving build scripts to
./package subdirectory
* harbour/utils/Makefile
! do not build executable files when HB_BUILD_PARTS is set to 'lib'
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/olecore.c
+ implemented WIN_OLEAUTO class overloading
* harbour/contrib/hbwin/legacy.prg
- removed "[]" overloading. It's in the core object now.
* src/rtl/hbjson.c
! fixed long long printf format
* harbour/src/rtl/hbzlib.c
+ added new PRG function:
HB_GZCOMPRESSBOUND( <cData> | <nDataLen> ) -> <nMaxCompressLen>
! fixed compilation with ZLIB versions earlier then 1.2.0 broken by
missing deflateBound() function which I used recently.
* harbour/src/rtl/hbzlib.c
! added our own version of compressBound() function for
ZLIB versions 1.2.0 and earlier. It makes HB_ZCOMPRESSBOUND()
working and fixes code like:
<cResult> := HB_ZCOMPRESS( <cData> )
+ added new PRG function:
HB_GZCOMPRESS( <cData>, [<nDstBufLen>|<@cBuffer>], ;
[<@nResult>], [<nLevel>] )
=> <cCompressedData> or NIL on Error
It works like HB_ZCOMPRESS() but uses GZIP instead of ZLIB
encapsulation for compressed data.
+ added support for GZIP compressed strings to HB_ZUNCOMPRESS() and
HB_ZUNCOMPRESSLEN() functions so they can be used with data compressed
by HB_GZCOMPRESS() function or read from .gz files.
* harbour/src/rdd/dbfcdx/dbfcdx1.c
! save and restore index tag during reindexing when one of tags
with smaller number then the current one is moved to the end of
tag list - Clipper compatibility problem reported by Maurilio.
; Please remember that in Harbour DBFCDX during reindexing adds
new tag at the end of tag list removing the old one. It's CL53
DBFCDX and COMIX compatible behavior but it's different then
CL52 DBFCDX and SIXCDX.
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfntx/dbfntx1.c
! update tag numbers after reindexing
* harbour/src/rtl/filesys.c
* unified hb_fsSeek[Large]() return value when seek operation cannot
be executed for given file handle. Now it's 0 for all platforms.
* harbour/include/hbapicls.h
* harbour/src/vm/classes.c
+ added new public C function
PHB_SYMB hb_clsFuncSym( HB_USHORT uiClass )
It returns class function symbol or NULL.
* harbour/ChangeLog
* harbour/config/os2/gccomf.mk
* harbour/include/hbpcode.h
* harbour/include/hbdebug.ch
* harbour/include/hbmath.ch
* harbour/include/hbgfx.ch
* harbour/src/vm/classes.c
* harbour/utils/hbmk2/hbmk2.prg
* removed dummy trailing spaces at EOLs
+ harbour/src/rtl/hbjson.c
+ added JavaScript Object Notation (JSON) encoder, decoder functions
; C level functions:
char * hb_jsonEncode( PHB_ITEM pValue, HB_SIZE * pnLen );
pValue - value to encode;
pnLen - if pnLen is not NULL, length of returned buffer is
stored to *pnLen;
returns pointer to encoded JSON buffer. buffer must be fried
by the caller.
HB_SIZE hb_jsonDecode( const char * szSource, PHB_ITEM pValue );
szSource - JSON source;
pValue - item to store decoded value. Item value is
undetermined in case of error;
returns number of bytes decoded from the buffer. This allows
to use the remaining part of the buffer for some other
purposes. Returns 0 on error.
Harbour level functions:
hb_jsonDecode( cJSON, @xValue ) --> nLengthDecoded
hb_jsonEncode( xValue ) --> cJSON
Note:
- Harbour types unsupported by JSON (date, timestamp, etc.) are
encoded as null values;
- strings are encoded in UTF-8;
- JSON encode functions are safe for recursive arrays and hashes.
Recursive part of array or hash will be stored as null. JSON
encoder still allows to use same structure in the leaves, in
this case content will be duplicate.
I.e.:
xI := {1, NIL}
xI[2] := xI
? hb_jsonEncode( xI ) // [1,null]
but:
xI := {1, .T.}
xI := {2, xI, xI}
? hb_jsonEncode( xI ) // [2,[1,true],[1,true]]
* harbour/config/c.mk
* harbour/config/rules.mk
* use .sx file extension instead of .S to avoid problems with
non case sensitive filesystems
* harbour/src/rtl/fstemp.c
! fixed DOS version of hb_fsTempDir() - tmpnam() may return pure
file name without path i.e. in OpenWartcom builds
* accept optionally TEMP, TMP and TMPDIR environment variables in
DOS and OS2 build looking for directory with temporary files
* src/compiler/hbcomp.c
! Revisiting non-*nix stdout/stderr usage in compiler.
From now on the Clipper (and old MS-DOS/Windows tool)
compatible behavior is only maintained for MS-DOS Harbour
builds, for the rest error messages are output to stderr,
regular msgs are output to stdout.
* harbour/include/hbatomic.h
* added two new build time macros which can be used to control
using GCC atomic builtin functions changing the default settings.
HB_USE_GCCATOMIC_OFF - disable using atomic builtins
HB_USE_GCCATOMIC - force using atomic builtins
- harbour/src/pp/hbpp.1
+ harbour/examples/pp/pp.1
! moved man files for old harbour preprocessor to correct place
+ harbour/src/pp/hbpp.1
+ added new man file for current hbpp