* harbour/src/rtl/chruni.c
* harbour/include/harbour.hbx
+ added new functions to operate on unicode and binary strings.
They work like hb_At() but are CP independent.
hb_UAt( <cSubString>, <cString>, [<nFrom>], [<nTo>] ) -> <nAt>
hb_BAt( <cSubString>, <cString>, [<nFrom>], [<nTo>] ) -> <nAt>
* harbour/src/rtl/fstemp.c
! added yet another protection against buffer overflow
% eliminated redundant code
* harbour/include/hbvmpub.h
* harbour/include/hberrors.h
* harbour/src/compiler/hbgenerr.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/genc.c
+ added new warning message:
STATIC Function '????' defined but never used
It's enabled by -w2 and higher.
The idea was inspired by recent modification in xHarbour but
implementation is completely different. BTW I cannot even make
this warning working in xHarbour.
* harbour/src/rtl/cdpdet.prg
! disabled static functions which are unused in different builds
* harbour/src/debug/debugger.prg
! removed unused function StripUntil()
* harbour/utils/hbmk2/hbmk2.prg
! compile hbmk_COMP_Setup() and FindInSamePath() static functions
only for platforms were they are used
! commented out unused static functions: ArrayJoinNoClone(),
AAddNewAtTop(), DepTreeToList()
! commented out unused static functions:
rtlnk_libtrans(), rtlnk_filetrans()
Looks that this functionality is not longer supported.
TOFIX: re-enable it or remove this code and document that automatic
translation for libraries and files defined in Clipper .lank
files is not longer supported~.
* harbour/src/rdd/usrrdd/rdds/arrayrdd.prg
* harbour/contrib/hbtip/cgi.prg
* harbour/contrib/hbide/hbqreportsmanager.prg
* harbour/contrib/hbide/actions.prg
* harbour/contrib/hbide/console.prg
* harbour/contrib/hbide/themes.prg
* harbour/contrib/hbide/editor.prg
* harbour/contrib/hbxbp/browse.prg
* harbour/contrib/hbmysql/tmysql.prg
* harbour/contrib/hbsms/sms.prg
* harbour/contrib/xhb/hterrsys.prg
! commented out unused static functions - please review the code
; Warning: I tested only Linux builds. Please check other builds and
disable unused static functions in the rest of code.
* harbour/include/hbapicls.h
* harbour/src/vm/classes.c
+ added new C function:
PHB_ITEM hb_objGetVarPtr( PHB_ITEM pObject, PHB_DYNS pVarMsg );
it returns pointer to object instance variable
* harbour/src/rtl/tclass.prg
* cleand parameter name
* harbour/contrib/hbmisc/spd.c
* removed unnecessary comment for older version which didn't use
hb_snprintf()
* formatting
* harbour/contrib/hbmxml/3rd/minixml/config.h
% use hb_snprintf() and hb_vsnprintf() instead of local emulation
based on CRTL sprintf()
* harbour/include/hbdefs.h
+ added HB_PF64 definition - it's printf format for HB_[UI]64 type
* harbour/src/3rd/tiff/print.c
* harbour/src/3rd/tiff/tiffconf.h
! use HB_PF64 instead of PFLL
* harbour/src/3rd/tiff/tiffconf.h
+ added TIFF_FILE_HANDLE definition
* harbour/src/3rd/tiff/tiffio.h
! use TIFF_FILE_HANDLE
* harbour/src/3rd/tiff/dirread.c
! fixed typo in TIFF_UINT32_MAX definition
* harbour/src/3rd/tiff/Makefile
! enabled fcntl.h in *unix builds
* harbour/src/3rd/tiff/tiff.dif
* updated
* harbour/include/hbgtinfo.ch
+ added new hb_gtInfo() action: HB_GTI_UNITRANS
It allows to set translation table for UNICODE characters
* harbour/src/rtl/gtwvt/gtwvt.c
* harbour/src/rtl/gtwvt/gtwvt.h
+ added support for HB_GTI_UNITRANS - due to limited support
for unicode vlaues in MS-Windows raster fonts it's necessary
for some custom fonts.
* harbour/src/rtl/tpersist.prg
+ implemented 2-nd parameter <lIgnoreErrors> in ::LoadFromFile()
and ::LoadFromText() methods
* harbour/src/rtl/cdpapi.c
* indenting
* harbour/src/rtl/valtype.c
* modified HB_ISEVALITEM() to use HB_IS_EVALITEM() macro
* harbour/src/pp/ppcore.c
! fixed typo in .ppt file handle - many thanks to Teo Fonrouge
for the information about the problem.
* harbour/include/hbthread.h
* harbour/src/vm/thread.c
+ added new C function:
HB_THREAD_NO hb_threadNO( void )
it returns unique thread number
* harbour/src/vm/classes.c
* cleaned static function names
* harbour/src/rdd/dbffpt/dbffpt1.c
* use RDDINFO() method instead of direct access to RDD TSD data
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* changed initialization method - now RDD TSD data is initialized
by each thread which access it. It resolves the problem with
memo type in NSX and NTX RDDs - it was SMT/DBT in main thread
but in child threads default FPT driver was used.
* harbour/tests/speedtst.prg
! fixed xHarbour compilation - it was broken by HB_EOL()
* doc/en/lang.txt
* include/hblang.hbx
* src/lang/be.c
* src/lang/bg.c
* src/lang/ca.c
* src/lang/cs.c
* src/lang/de.c
* src/lang/el.c
* src/lang/en_tpl.c
* src/lang/eo.c
* src/lang/es.c
* src/lang/eu.c
* src/lang/fr.c
* src/lang/gl.c
* src/lang/he.c
* src/lang/hr.c
* src/lang/hu.c
* src/lang/id.c
* src/lang/is.c
* src/lang/it.c
* src/lang/ko.c
* src/lang/lt.c
* src/lang/nl.c
* src/lang/pl.c
* src/lang/pt.c
* src/lang/ro.c
* src/lang/ru.c
* src/lang/sk.c
* src/lang/sl.c
* src/lang/sr_cyr.c
* src/lang/sr_lat.c
* src/lang/sv.c
* src/lang/tr.c
* src/lang/uk.c
* src/lang/zh_sim.c
* src/lang/zh_tra.c
* src/rtl/langcomp.prg
* src/rtl/langlgcy.prg
* renamed UTF8 language modules internally. The new
names are the two letter ISO language code in
lowercase. With postfixes where required. For
dialects and variants, it's now possible to use
"LLDD", "LLDD_VVV" or "LL_VVV" formats, too.
See the current list in
doc/en/lang.txt
! Ukrainian had an "UE" prefix before, now it got
corrected to "UK", which is it's official ISO code.
+ HB_LANGSELECT() now accepts second parameter: <cCodepage>
to specify the CP into which the translations should
be converted. This parameter works for legacy lang module
IDs, too. The default is hb_cdpSelect() (or legacy CP
for legacy language module IDs).
+ extended the way compatibility is preserved. The
problem is with legacy language modules with a two
character ID only (ie. without CP specification),
this is the list:
CA, DE, EL, EO, ES, EU, FR, GL, IT, PT, RO, SV
If these language IDs are passed in UPPERCASE as above,
they will be handled in compatibility mode and legacy
default CP selected.
Compatibility code is marked with HB_LEGACY_LEVEL5, which
means it will stay in next two stable releases.
To depart from compatibility (recommended), use the new
lowercase flavor: hb_langSelect( "pl" ), hb_langSelect( "pt" ),
hb_langSelect( "sr_cyr" ), or use standard language
IDs: hb_langSelect( "hu-HU" )
Or simply use this code:
---
#include "hbextlng.ch"
hb_langSelect( hb_UserLang() [, <CP> ] ) /* if <CP> is not specified, hb_cdpSelect() will be used */
---
+ src/lang/msgzhsim.c
- src/lang/msgko.c
- src/lang/msgzhgb.c
* include/hblang.hbx
* src/lang/msgzhutf.c
* src/lang/Makefile
* src/rtl/langcomp.prg
* src/rtl/langlgcy.prg
- deleted language module KO (Korean) using CP949, which
CP is not supported by Harbour. INCOMPATIBLE.
+ readded Chinese Traditional language module, along with
legacy language modul "ZHGB". Notice however that the
CP it now uses is BIG5, not the otherwise unsupported
by Harbour, CP936. INCOMPATIBLE.
; Migration of legacy language modules is now finished.
* include/hblang.hbx
* src/lang/Makefile
+ src/lang/msgsrlat.c
* src/lang/msgsrutf.c
* src/rtl/langcomp.prg
+ added Serbian (latin) language module
! fixed SR852 and SRISO legacy lang modules to use latin
Serbian
; NOTE: I'd like to ask everyone to test language files
after these changes. There may be typos,
conversion errors or the original version I did
the conversion from might not have been the best
translation from the multiple ones available.
* include/hblang.hbx
* src/rtl/Makefile
* src/rtl/langcomp.prg
+ src/rtl/langlgcy.prg
+ added emulation for 'REQUEST HB_LANG_<id>' legacy code.
protected with HB_LEGACY_LEVEL5, though until then
probably some more shuffling will be needed to simplify
usage (f.e. remapping UTF-8 language modules to 'LL'
codes as opposed to 'LLUTF' codes used ATM)
% only pull all codepages and base language modules required
for dynamic language modules when user app REQUESTs and
HB_LANG_<id>s.
; TOFIX: HB_LANGMESSAGE() often returns garbage when using
it from hbrun or other dynamic apps. Changing
hb_retc_const() to hb_retc() didn't seem to fix it.
; NOTE: All users are encouraged to use UTF-8 base language
modules and request all CP components manually, then
create their own dynamic language modules, f.e.:
---
REQUEST HB_CODEPAGE_PT850
REQUEST HB_CODEPAGE_UTF8
REQUEST HB_LANG_PTUTF
hb_langNew( "PT", "PT850", "PTUTF", "UTF8" )
hb_langSelect( "PT" )
---
* src/lang/msghuutf.c
! reconverted from a better legacy CP version, fixing
some missing accented chars and translations
+ src/codepage/cphe862.c
+ src/codepage/cphewin.c
- src/lang/msghe862.c
- src/lang/msghewin.c
- src/lang/msgsr852.c
- src/lang/msgsriso.c
- src/lang/msguados.c
* ChangeLog
* include/hbcpage.hbx
* include/hblang.hbx
* src/codepage/Makefile
* src/lang/Makefile
* src/rtl/langcomp.prg
+ added HE862 and HEWIN codepage modules. Only to for
CP conversion, so they do not feature a collation table
yet. Please add it.
+ using HE862 and HWIN to dynamically create Hebrew language
modules for legacy CPs from UTF-8 one.
+ mapped SR852 and SRISO lang modules to CPs, and deleted
old modules
+ mapped USDOS lang module to CP and deleted old module
- src/lang/msghucwi.c
* doc/en/lang.txt
* include/hblang.hbx
* src/lang/Makefile
* src/rtl/langcomp.prg
- deleted support for HUCWI which used a long-time
dead CP. If you use it, it's probably time to switch
to something more recent, or submit a patch for a
CWI CP in Harbour (or implement your translation
locally).
- src/lang/msgzhb5.c
* include/hblang.hbx
* src/lang/Makefile
* src/rtl/langcomp.prg
% deleted ZHB5 language module, which is now converted
dynamically from UTF8 version
* contrib/hbgt/doc/en/hbgt.txt
* doc/en/gtslang.txt
* extras/gfspell/spell.prg
* tests/mousetst.prg
* tests/testdbf.prg
* tests/testrdd2.prg
* contrib/hbmisc/numtxthu.prg
* contrib/hbqt/tests/wvtqt.prg
* contrib/hbxbp/tests/wvtqt.prg
* include/hbapigt.h
* tests/db_brows.prg
* tests/gtchars.prg
* tests/tb1.prg
* tests/testbrw.prg
* tests/wcecon.prg
! fixing high 8-bit chars (using various methods)
(finished)
; NOTE: Some sources have been converted to UTF-8,
so from now on make sure to use an UTF-8 enabled
editor and use only UTF-8 chars when typing
non-ASCII (7-bit) characters.
* contrib/hbide/projectpropertiesex.ui
! HBMK2 -> hbmk2 to be consistent with everywhere else
* contrib/hbqt/hbmk2_qt.hb
! fixed misleading RTE subsystem
* include/hbver.ch
+ added HB_VERSION_MAX_ to denote the highest valid
paramater. Please note that the valid values start
at 0
* harbour/include/hbclass.ch
+ added support for
DESTRUCTOR FUNCTION <FuncName>[()]
in class declaration. It allows to define as object
destructors external functions, i.e. defined in C
* harbour/src/rtl/valtype.c
* harbour/include/harbour.hbx
+ added new PRG function HB_ISEVALITEM()
It returns true if item can be evaluated by EVAL() function,
i.e. for codeblocks and function symbols.
In the future it can be extended to accept objects with :EVAL()
methods.
* contrib/hbamf/hbamfobj.prg
* made it more friendly with grep when finding undocumented functions
by removing #translate.
* src/vm/hvm.c
! added HB_STACK_TLS_PRELOAD
* include/harbour.hbx
! added __ITEMSETREF(), __VMITEMID()
* src/rtl/valtoexp.prg
* hb_setItemRef() -> __itemSetRef(). Please tell if it's meant to
be a user-accessible, public core API
* utils/hbmk2/hbmk2.prg
! fixed to ignore HB_INSTALL_PREFIX variable in runner mode.
This points to invalid places while running as part of GNU
Make and prevents autodetection.
TODO: Recheck if it now works without embedded headers.
TODO: Obsolete HB_INSTALL_PREFIX also in hbmk2 mode.
* harbour/include/hbexprb.c
! fixed hb_arrayToParams() used in array index context
( var[ hb_arrayToParams() ] ) unintentionally disabled by
2010-11-08 23:37 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/hvm.c
+ added __vmItemId() function.
* harbour/src/rtl/valtoexp.prg
+ added support for array, object and hash references to hb_valToExp().
Now this function works correctly also for items with cyclic
references.
* harbour/include/hbset.h
* harbour/src/vm/set.c
% removed HB_SET_OSCODEPAGE
% replaced HB_SET_DBCODEPAGE with hb_set_dbcp
* generate RTE when wrong parameter type (not string or NIL) is
passed to HB_SET_LANGUAGE, HB_SET_CODEPAGE, HB_SET_OSCODEPAGE,
HB_SET_DBCODEPAGE
* harbour/src/rtl/langapi.c
* generate RTE 1303 when not existing lang module name is passed to
hb_langSelectID() C function. It affects on all upper level
code using this function. NULL is accepted as valid parameter.
* harbour/src/rtl/cdpapi.c
* generate RTE 1302 when not existing codepage name is passed to
hb_cdpFindExt() C function. It affects on all upper level
code using this function. NULL is accepted as valid parameter.
If programmer does not want to generate RTE when wrong codepage
name is passed then he should use hb_cdpFind() instead.
* harbour/src/rtl/cdpapihb.c
* use hb_cdpFindExt() instead if hb_cdpFind() in HB_CDPUNIID()
function.
* harbour/src/rtl/cdpapihb.c
* harbour/contrib/hbexpat/internal.c
! use hb_parc() instead of hb_parcx() to get codepage name
from optional parameter.
* harbour/utils/hbmk2/Makefile
! fixed build process, now hbmk2 need HB_LIBS_MT_RDD
* harbour/src/rtl/tpersist.prg
% optimized decoding code which could be two slow with UTF8EX or
similar CPs.
* harbour/contrib/hbct/misc1.c
% optimized XTOC()
* harbour/doc/xhb-diff.txt
* added some additional description to the section
OOP AND CLASS OBJECT/CLASS MESSAGES
* harbour/doc/Makefile
* added xhb-diff.txt
* harbour/include/hbapi.h
* harbour/src/vm/arrays.c
+ added new C function hb_arrayFromId()
* harbour/contrib/hbqt/qtcore/hbqt_bind.cpp
* use hb_arrayFromId() instead of local hb_arrayCreateClone()
with hb_arrayPushBase() inside
* do not use hbvmint.h
! fixed few bugs in this code. I haven't analyzed this code deeply
and how it's used so I cannot say it's correct. I only fixed few
completly wrong places which caused HVM stack corruption, internal
GC item list corruption or were completly dummy calls.
* include/harbour.hbx
* src/vm/dynsym.c
+ added HB_ISFUNCTION( <cName> ) -> <lExists>
uses Przemek's code from hbfship/ISFUNCTION() with minor
adaptation for VM.
Use it instead of __DYNSISFUN() and TYPE( <cName> ) == "UI".
* include/harbour.hbx
* formatted HB_IS*() functions used for type checking
* contrib/hbfship/isfunc.c
% converted ISFUNCTION() to wrapper for HB_ISFUNCTION()
* contrib/hbide/ideplugins.prg
* contrib/hbrun/hbrun.prg
* contrib/hbxpp/xppop.prg
* contrib/xhb/xhbcomp.prg
* contrib/xhb/xhberr.prg
* examples/hbdoc/hbdoc.prg
% Using HB_ISFUNCTION() instead of __DYNSISFUN() and TYPE( <cName> ) == "UI"
* include/harbour.hbx
* src/rtl/Makefile
+ src/rtl/cdpdet.prg
+ src/rtl/cdpdetc.c
+ moved terminal and OS detection logic from hbmk2 to RTL
with changes necessary to fit into core. New functions are:
hb_cdpOS() -> <cCP | NIL>
hb_cdpTerm() -> <cCP | NIL>
it means these functions can be used in any apps now.
Example:
hb_SetTermCP( hb_cdpTerm() )
Set( _SET_OSCODEPAGE, hb_cdpOS() )
* contrib/hbrun/hbrun.prg
* utils/hbmk2/Makefile
- utils/hbmk2/hbmk2c.c
* utils/hbmk2/hbmk2.hbp
* utils/hbmk2/hbmk2.prg
* using hb_cdpOS() and hb_cdpTerm() to automatically
configure OS and terminal CP
* include/Makefile
* include/common.ch
+ include/hbhash.ch
+ moved hash-related constants from common.ch to new hbhash.ch
; common.ch include hbhash.ch for compatibility, protected by
HB_LEGACY_LEVEL4 so it will stop being included automatically.
If you use HB_HAUTOADD_* or HB_HMERGE_* constants, make sure
to #include "hbhash.ch".
* contrib/hbrun/headers.prg
* utils/hbmk2/hbmk2.prg
+ include hbhash.ch
* src/rdd/hbsix/sxini.prg
* use hbhash.ch instead of common.ch
* include/hbapi.h
- deleted unused old HB_BASEARRAY_PTR type. INCOMPATIBLE.
Same as PHB_BASEARRAY, use this instead.
* include/hbtypes.h
* src/vm/maindllp/dllext.c
+ added hb_macroTextValue() to hbmaindllp.
; TODO: rename all HB_ITEM_PTR to PHB_ITEM and delete former.
pls shout if there is any difference in usage between
these two.
* contrib/hbrun/hbrun.prg
* contrib/hbrun/pullext.prg
+ changed to use '//#require' syntax.
! filter empty dynamic modules
+ display error when trying to load dynamic modules in static
hbrun build
* include/hbver.ch
* src/rtl/version.c
+ added hb_Version( HB_VERSION_SHARED ) to query whether
the app was built in shared mode or static.
* include/harbour.hbx
* src/rtl/Makefile
+ src/rtl/hbdef.c
+ added HB_DEFAULT( @<xVariable>, <xDefaultValue> )
it can replace DEFAULT ... TO ... command. In addition
it will set the value to the default one even when the
variable has any other type, not only NIL.
* harbour/src/vm/arrays.c
* allow to call hb_arrayId() with NULL parameter
* harbour/include/hbapiitm.h
* harbour/src/vm/itemapi.c
+ added internal HVM function hb_itemPutPtrRawGC() - it's
necessary for blocks allocated with hb_gcAllocRaw().
* harbour/src/vm/thread.c
! use hb_itemPutPtrRawGC() instead of hb_itemPutPtrGC()
It fixes internal errors (i.e. reported in build process)
after my previous commit.
* harbour/include/hbgtinfo.ch
+ added new HB_GTI_FONTATTRIBUTE value: HB_GTI_FONTA_CTRLCHARS
When used it forces using CTRL characters (from chr(0) to chr(31))
directly without translation to CP437 unicode values.
In windows some fonts need it to correctly display them.
* harbour/src/rtl/gtwvt/gtwvt.h
* harbour/src/rtl/gtwvt/gtwvt.c
+ added support for
hb_gtInfo( HB_GTI_FONTATTRIBUTE, HB_GTI_FONTA_CTRLCHARS )
* harbour/src/rtl/hbgtcore.c
! do not replace CTRL chars with '?' in HB_GTSELF_GETUC() method
* harbour/include/hbstack.h
* harbour/src/vm/codebloc.c
* harbour/src/vm/estack.c
* harbour/src/vm/hvm.c
% split hb_stackLocalVariable( int * ) macro and function into
two different actions:
hb_stackLocalVariable( int ) // access/assign local var
hb_stackLocalVariableAt( int * ) // create reference to local var
* include/hbcompdf.h
* include/hbexprop.h
* include/hbexprb.c
* src/common/funcid.c
* src/common/expropt2.c
+ added compile-time optimization for HB_BCHAR()
and HB_BCODE().
* contrib/hbct/hbct.hbp
* contrib/hbct/hbct.hbx
+ contrib/hbct/ctscan.ch
+ contrib/hbct/kxlat.prg
* contrib/hbct/ctdummy.prg
* contrib/hbct/dummy.c
+ added CT compatiblity functions: SETKXLAT(), GETKXLAT(),
SETKXTAB(), GETKXTAB(). Former two replaces existing
dummy implementations. Check CT documentation for syntax.
NOTES: - KS_PAD[0-9] and KS_PAD_DECIMAL are not supported in
Harbour, because they have no corresponding inkey.ch
value.
- Harbour uses HB_GTI_INKEYFILTER to implement these
functions, and due to this, they will gracefully
fail if the application has already set
HB_GTI_INKEYFILTER to a custom value.
+ added:
HBCT_GETKXLAT( <nOrgKey>[, <nNewKey> ] ) -> <lAccepted>
HBCT_GETKXTAB( <nOrgKey> ) -> <nNewKey>
HBCT_SETKXLAT( <hTrs> ) -> <lAccepted>
HBCT_SETKXTAB() -> <hTrs>
Same as above, but they use standard inkey() values.
; USE AT YOUR OWN RISK. NO GUARANTEES.
* contrib/hbct/showtime.prg
* contrib/hbct/screen2.c
* internal fn renamed: _HB_CTDSPTIME() -> __HBCT_DSPTIME()
* include/hbver.h
* package/harbour.spec
* package/harb_win.mft
* package/harbour-win.spec.in
* package/harbour-wce.spec.in
* package/winuni/mpkg_win_uni.bat
* harbour/debian/changelog
* trunk version bump. 3.1.0dev -> 3.2.0dev
this is to make it easy to create conditional code
for new features and the few incompatibilities after
introducing unicode in Harbour. May be bumped further
when FOR EACH is decided.
* contrib/hbexpat/tests/tohash.prg
+ enabled UTF8EX for testing