* contrib/hbhttpd/readme.txt
* doc/dirstruc.txt
* doc/xhb-diff.txt
* include/hbapi.h
* INSTALL
* NEWS
* src/common/hbver.c
* src/main/harbour.c
* src/pp/hbpp.c
* src/rtl/version.c
* src/vm/cmdarg.c
* Avoiding the word "SVN" (use 'source repository',
'repository' or 'repo' for short)
* Added new names that don't refer to SVN:
C level:
- hb_verRevision() (was: hb_verSvnID())
- hb_verChangeLogID() (was: hb_verSvnChangeLogID())
- hb_verChangeLogLastEntry() (was: hb_verSvnLastEntry())
.prg level:
- HB_VER_REVID built-in macro (was: HB_VER_SVNID)
; Old functions/macros will be deleted after next major
revision, start using the new names until then.
* harbour/include/hbcomp.h
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbstripl.c
% eliminate repeated HB_P_LINE pcodes bound by unconditional jump
This optimization is not enabled when debug mode (-b) is used.
* harbour/include/hberrors.h
* harbour/src/compiler/hbgenerr.c
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
+ added new compile time error: "Duplicate case value"
* include/harbour.hbx
* src/rtl/hbdoc.prg
* tests/hbdoctst.prg
+ added __hbdoc_DirLastModified( <cDir> ) -> <tLastModified>
function that returns last modification timestamp for a
given NF doc root directory. It returns empty date if the
directory doesn't exist or is empty.
It can be used to decide whether to update .hbd files f.e.
in an hbmk2 plugin that builds .hbd files automatically.
* harbour/include/hbapifs.h
* harbour/src/rtl/filesys.c
+ added two new C functions:
HB_BOOL hb_fsGetCWD( char * pszBuffer, HB_SIZE nSize );
HB_BOOL hb_fsSetCWD( const char * pszDirName );
* synced some parameters names with declarations in header
* harbour/src/rtl/hbfilehi.prg
* harbour/src/rtl/philes.c
* rewritten HB_CWD() function in C
! fixed to HB_CWD() work with UNC path in MS-Windows and other
systems using drive letters
+ added support for setting new working directory (and drive)
by HB_CWD( <cNewWD> )
* include/box.ch
* include/button.ch
+ added Unicode compatible macros for drawing strings
* contrib/hbmisc/hbedit.prg
* contrib/hbmisc/stringp.prg
* contrib/hbmisc/twirler.prg
* contrib/hbmisc/hbmisc.hbx
* formatted using hbformat and manually
* DEFAULT() made STATIC. It was colliding with xhb
after latest changes. INCOMPATIBLE. Use HB_DEFAULT()
instead.
! DEFAULT() fixed using != on strings
* 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.
* 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
* harbour/include/hbpcode.h
! force PCODEs enumeration from zero - some compilers may
use different value what can cause problems with casting to bytes
* harbour/contrib/xhb/regexrpl.prg
! fixed hb_regexReplace() - hack for older HB_REGEXALL() code
could cause RTE
* 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