* contrib/hbnf/popadder.prg
* src/rtl/listbox.prg
* src/rtl/scrollbr.prg
* src/rtl/tmenuitm.prg
* tests/db_brows.prg
! reverted to use plain Chr() for low-ASCII (0-31) drawing chars
(hb_UTF8ToStr*() converts these to "?", which is expected)
* contrib/hbmisc/hbedit.prg
* src/debug/dbghelp.prg
* src/debug/dbgtmenu.prg
* src/debug/dbgtwin.prg
* src/debug/dbgwa.prg
* src/rtl/browse.prg
* src/rtl/listbox.prg
* src/rtl/radiogrp.prg
* src/rtl/tmenuitm.prg
* src/rtl/tpopup.prg
* tests/gtwin.prg
* tests/box.prg
* tests/boxtst2.prg
* tests/scroll.prg
* tests/vidtest.prg
! fixed to use new unicode-compatible box.ch/button.ch macros
For standalone programs (in tests) in only makes any difference
when running them as scripts, now they will work (after
adding hbshell_gtInteracive() call at startup), while
before the drawing chars were scrambled.
* src/rtl/browse.prg
* src/rtl/checkbox.prg
* src/rtl/dbedit.prg
* src/rtl/dbedit.prg
* src/rtl/listbox.prg
* src/rtl/scrollbr.prg
* src/rtl/tmenuitm.prg
! fixed Chr() calls for drawing chars to unicode strings
to be compatible with both unicode and non-unicode (and
any BOXCP) mode.
* src/rtl/browse.prg
! fixed to use '!( hb_keyChar( nKey ) == "" )' instead
of looking for keycode between 32 and 255 (inclusive)
making it unicode compatible
* formatting
* src/rtl/tpersist.prg
* src/rtl/memoedit.prg
* src/debug/debugger.prg
* src/debug/dbgthsh.prg
* src/debug/dbgtarr.prg
* src/debug/tbrwtext.prg
* formatting
* src/rtl/tmenuitm.prg
* src/rtl/tpopup.prg
+ added TOFIXes where drawing chars are used as internal
flags. This may cause problems if switching CPs while
using these objects.
* tests/sbartest.prg
+ unicode compatibility while keeping it Cl*pper compatible
! fixed RTE due to using wrong SCROLLBAR method
* tests/tb1.prg
* changed to use new unicode-compatible box.ch/button.ch macros
while keeping Cl*pper compatibility
* tests/vidtest.prg
! fixed remaining drawing chars using Chr() (Cl*pper
compatibility maintained)
* tests/testsha2.prg
* tests/utf8at.prg
! fixed to use HB_BCHAR() instead of CHR() for unicode compatibility.
; NOTE: After above changes scripts and commands run via hbrun
will display drawing chars properly. Unicode apps as
well, even with BOXCP set to unicode, too.
; TODO: Fix above things also on C level, f.e. DISPBOX() with
numeric box drawing request.
* harbour/src/pp/ppcore.c
! fixed possible GPF when some broken expressions are used as
part of extended expression match marker
* harbour/src/rtl/padr.c
* harbour/src/rtl/padc.c
* harbour/src/rtl/padl.c
! fixed PADR(), PADL() and PADC() to accept pad mulibyte characters
when CPs with such encoding is used, i.e. CP950 or UTF8EX
* harbour/contrib/xhb/xhb.hbx
* updated to follow recent modifications
* include/harbour.hbx
* src/rtl/Makefile
+ src/rtl/cdpbox.prg
+ added HB_UTF8TOSTRBOX( <cUTF8String> ) -> <cStringEncodedIn_GT_BOXCP>
It's needed because HB_UTF8TOSTR() will convert to main CP,
but box drawing CP can be setup differently with HB_GTI_BOXCP,
that function call will take that into account.
* contrib/hbnf/aredit.prg
* contrib/hbnf/clrsel.prg
* contrib/hbnf/dispmsg.prg
* contrib/hbnf/menu1.prg
* contrib/hbnf/pegs.prg
* contrib/hbnf/pickday.prg
* contrib/hbnf/popadder.prg
* contrib/hbnf/tbwhile.prg
* contrib/hbnf/vertmenu.prg
* tests/db_brows.prg
* tests/gtchars.prg
* tests/testbrw.prg
* extras/gtwvw/tests/prog0.prg
* extras/gtwvw/tests/prog1.prg
* extras/gtwvw/tests/prog2.prg
! fixed drawing chars to display properly regardless of HB_GTI_BOXCP
setting.
! some related minor fixes
* tests/tb1.prg
! fixed to compile and build using Clipper after recent
UTF8 compatibility updates (not tested though)
; TOFIX: Pad*() function handle 3rd parameter as binary string,
so it doesn't work properly in UTF8 mode.
* src/lang/sk.c
+ updated Slovak language module.
Patch by Jaroslav Janík. Many thanks.
* contrib/hbnf/calendar.prg
* contrib/hbnf/pegs.prg
* tests/ac_test.prg
* minor formatting.
* harbour/src/compiler/harbour.yyh
* harbour/src/compiler/harbour.yyc
* harbour/src/macro/macro.yyc
* harbour/src/macro/macro.yyh
* regenerated with bison 2.5
* harbour/src/rdd/dbcmd.c
* added note about Cl*pper incompatibility in our implementation of
__dbSkipper() functions
* harbour/src/vm/hvm.c
* allow to overwrite non local function symbols from dynamic libraries
by local ones also loaded from dynamic library if they point to the
same function.
This modification resolves the problem with class defined in
multiple module dynamic libraries.
* harbour/src/rtl/Makefile
- harbour/src/rtl/fieldbl.prg
- removed old PRG level implementation of FIELDBLOCK() and
FIELDWBLOCK() functions
* harbour/src/vm/macro.c
+ created new implementation of FIELDBLOCK() and FIELDWBLOCK()
functions in C. This implementation is strictly Clipper compatible
and allows to create field blocks only for symbols already
registered in HVM so it does not create new symbols in HVM.
When table is open then all field symbols are registered in HVM.
It means that new functions may not create field block if table
is not open yet and field name was never used explicitly in
whole compiled application. It's possible to easy change it
and automatically register new symbols if we decide it's real
limitation and we should drop strict Cl*pper compatibility.
Anyhow it may cause that some code will register big number
of completely unnecessary symbols in HVM so it should be well
thought decision.
This implementation makes exactly the same fied name conversions
as default implementation of ADDFIELD() workarea method so exactly
the same set of symbols is accepted. It means that after opening
table which has field names with spaces or other characters
which are not accepted as PRG identifiers it's possible to create
field blocks for them.
It should be also noticable faster because macrocompiler is not
used at all and is many times faster in codeblock evaluation then
implementation like in xHarbour which uses
fieldget( fieldpos( cFieldName ) )
to support fields with embeded spaces.
* harbour/src/rtl/hbgtcore.c
% small optimization in INKEY() code
* harbour/src/compiler/hbmain.c
! fixed bug intorduced in my last commit when - PCODE ofr empty
strings "" were not generated if -km switch was not used
! fixed possible problem with allocating variable using dynamic
buffer for variable name
* minor code cleanup
* harbour/include/hbexprb.c
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/src/compiler/hbusage.c
* harbour/src/compiler/harbour.yyc
* harbour/src/compiler/harbour.y
* harbour/src/compiler/ppcomp.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/cmdcheck.c
* harbour/doc/cmpopt.txt
* harbour/doc/xhb-diff.txt
+ added new harbour compiler switch:
-kd => accept macros with declared symbols
This switch allows to use declared symbols like LOCALs, STATICs
and FIELDs in macros and macrocodeblocks (every evaluated).
; Please do not confuse different things. Above modification
does not mean to that such variables are visible for macro
compiler. It only allows to write code like:
cbVar := {|| &cLocal + cPrivate }
or:
cbVar := {|| &cLocalPref.func&cPriv1( cPriv2 ) }
or:
? &cLocalPref.func&cPriv1( cPriv2 )
etc.
If possible then for macrocodeblocks Harbour compiler tries to
generate early eval code in which macros are expanded when codeblock
is created. Otherwise macros are expanded each time codeblocks are
evaluated.
For more information look at harbour/doc/xhb-diff.txt section:
MACROS WITH DECLARED SYMBOLS
+ contrib/hbwin/oemansi.c
* contrib/hbwin/hbwin.hbp
* contrib/hbwin/hbwin.hbx
+ added WIN_OEMTOANSI() and WIN_ANSITOOEM(). These are
compatible with current core HB_OEMTOANSI()/HB_ANSITOOEM()
Usage of them is not recommended.
* contrib/hbxpp/oemansix.c
* CONVTOANSICP()/CONVTOOEMCP() changed to use local
implementation instead of relying on now deprecated
core OEM/ANSI functions
* src/rtl/oemansi.c
* HB_OEMTOANSI()/HB_ANSITOOEM() Windows-specific functions
deprecated with HB_LEGACY_LEVEL4 (meaning they will
disappear after next stable release). Either avoid
these calls completely (recommended) or change them to
hbwin or hbxbp equivalents.
* contrib/hbtip/thtml.prg
* contrib/hbtip/hbtip.hbx
* deprecated HtmlToAnsi(), HtmlToOem(), AnsiToHtml(), OemToHtml()
functions with HB_LEGACY_LEVEL4.
+ added TIP_STRTOHTML(), TIP_HTMLTOSTR() functions which cover
major above functionality, but in a portable and CP agnostic
way. Code untested, if you need it, test it and provide feedback
and/or fix.
* harbour/config/dos/watcom.mk
* harbour/utils/hbmk2/hbmk2.prg
! cleaned and synced optimization flags which interacts with calling
convention
* harbour/src/3rd/zlib/zconf.h
! added missing export attribute in OS2 dll builds
* harbour/src/3rd/zlib/zlib.dif
* rediffed
* harbour/src/compiler/hbmain.c
* minor modification to pacify warning generated by some compilers
* harbour/src/rtl/gete.c
! added missing #include "hbapicdp.h" in DOS and OS2 builds
* harbour/src/rtl/gtdos/gtdos.c
! fixed typo
* harbour/contrib/3rd/sqlite3/sqlite3.hbp
! set SQLITE_OS_OTHER in Watcom OS2 builds - it does not support
PTHREAD and some OS extensions used in default SQLite builds
* harbour/src/rdd/workarea.c
! set FOUND flag in child workareas when non index but
record number relation is used - Clipper compatible behavior.
Many thanks to Davor Siklic for information about the problem
and self contain code example.
* 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/src/rtl/fstemp.c
! added protection against possible buffer overflow
* enable mkstemps() for GLIBC 2.12 and higher
* harbour/src/compiler/harbour.y
! added missing ';' at the end of C code - newer bisons
do not add them automatically
* harbour/src/3rd/tiff/LICENSE
! fixed EOLs and set svn:eol-style to native
* harbour/src/3rd/tiff/tiff.dif
* rediffed with
hbmk2 ../../../bin/3rdpatch.hb -rediff
* 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()
* src/lang/fr.c
! old typo in month name, by Guy Roussin
* src/lang/uk.c
! old typo in native language name, by Alexey Myronenko
* src/rtl/langcomp.prg
! recent typo in compatibility UAWIN CP, by Grigory Filatov
; Thanks guys
* contrib/rddads/rddads.hbc
* do not force shared mode for host project if HB_DYNLOAD_RDDADS
is enabled. It should fix hbide forced to be built in
-shared mode unconditionally after enabling rddads
support in hbide in 2012-06-14 12:01 UTC+0200
; please test
* src/lang/hu.c
+ translated rest of strings to Hungarian
(though they seem to make much more sense in English)
* src/rtl/langcomp.prg
* src/rtl/langlgcy.prg
! HB_LANGSELECT() fixed to keep compatibiliy with legacy
language module IDs passed in not fully uppercased.
Only two-letter legacy language module IDs needs to
be passed full uppercase to maintain compatibility.
* changed HB_LEGACY_LEVEL5 to HB_LEGACY_LEVEL4 so these
compatibility hacks disappear quicker
* src/rtl/cdpapi.c
+ Extended to accept real codepage names where Harbour
"codepage" names (which are really codepage + collation
combinations, like "HUWIN") are accepted. It makes it
possible to do:
hb_translate( "stuff", "cp1250", "cp852" )
This mod is implemented on the surface in simple way,
which implies some notices and warnings:
- real codepages are accepted also in places where
you're better to specify a Harbour CP tied to a
collation, f.e. in hb_cdpSelect() or Set( _SET_DBCODEPAGE ).
In such case it's important to see that an arbitrary
Harbour CP will be selected from those linked to the
requested real codepage.
- 'hb_cdpSelect( "iso8859-2" ); ? hb_cdpSelect()'
will not show "iso8859-2", but one of the corresponding
Harbour CPs.
- you cannot REQUEST a specific real codepage,
but you can request all of them which are linked
to a Harbour CPs using '#include "hbextcdp.ch"'.
; NOTE: With more deep rework, which I most probably
won't be able to ever do, Harbour's concept of
CPs should be split into real codepages and
collation modules, than interfaces identified
where a collation is expected vs. real codepages,
or both, question how to do that without break
too much compatibility and question how to fit
current HB_CP_RAW CPs into that model. For former
problem, notation like 'HU.cp852' might be possible
solution, where any of the parts can be omitted,
depending on context: 'HU' or 'cp852'.
* src/codepage/Makefile
+ src/codepage/cphuutf.c
+ added Hungarian collation module in UTF-8. It's an
experiment and will require low-level changes in the
CP subsystem, since it is not yet possible to use
HB_UNITB_UTF8 for HB_CP_UNITB parameter. The idea is
to make it possible to define collation modules in UTF-8,
which would in turn allow to drop the link to a specific
legacy CP, thus allowing to drop the different CP flavours
of them, then finally simplifying the naming, maintenance
and usage of these modules. We could also finally call
them what they are: 'collations' (and not "codepages" like today)
I understand this may need substantial low-level
modifications, by doing automatic translation on each
HVM CP change, etc.
* ChangeLog
+ added compatibility notes to previous (2012-07-24 15:04 UTC+0200)
entry
* src/rtl/langlgcy.prg
* minor cleanup
* 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 */
---