* include/hbstack.h
* include/hbapi.h
! Marked functions as HB_EXPORT (should be HB_EXPORT_INT in the future)
which are used by hbdebug lib. It caused link error when using
'-b -shared' hbmk2 options on non-mingw windows compilers:
hb_stackDebugInfo
hb_macroGetType
hb_macroGetValue
hb_memvarGetValueBySym
* src/common/hbtrace.c
* contrib/xhb/hbsyslog.c
+ Added Android specific logging support. Untested.
* contrib/xhb/hbsyslog.c
! Disabled syslog() call for Symbian.
* include/hbsetup.h
+ Added Android OS platform detection. Untested.
* utils/hbmk2/hbmk2.prg
% Disabled some very old HB_INSTALL_PREFIX autodetection logic,
which supports some obsolete looking scenarios when hbmk2 executable
is not in standard location. Rest of logic and failure detection
rearranged accordingly. After this step hbmk2 no more requires
harbour executable to be present next to it.
IMPORTANT: This is live testing, pls report any problems.
* include/hbapi.h
* include/harbour.hbx
* src/common/hbver.c
* src/rtl/version.c
+ added hb_verHostBitWidth( void ) -> int which retrieves bit width of host OS
+ added HB_OSBITWIDTH() -> <nBits>
; It will currently work on win platform, falling back to target arch bits
for others. Pls extend it for *nixes. For MS-DOS, 32 will be returned with
both currently supported compilers.
* harbour/include/hbapicdp.h
* harbour/include/hbcdpreg.h
* harbour/src/rtl/cdpapi.c
* harbour/src/rtl/cdpapihb.c
+ added support for user defined character encoding.
Now it's possible to easy create and register in HVM CPs using any
encoding so I expected that users interested in adding support for
some exotic character encoding will create such mapping instead
of asking for it.
% moved support for codepages using multibyte characters mapped to
single unicode values to user defined encoding - it nicely simplify
the code and eliminate unnecessary overhead in other CPs.
* allow to chose UTF8 as HVM CP
* harbour/src/rtl/idle.c
! fixed idle mode flag resetting
* harbour/src/rdd/hbsix/sxutil.c
! fixed SX_SLIMFAST() results when nested quoting with (") and (') is
used
+ harbour/tests/big5_gen.prg
+ added code to generate C source with conversion tables between
BIG5 and UCS16 using data defined by Unicode, Inc. in BIG5.TXT
+ harbour/src/codepage/cp_utf8.c
+ added alternative UTF8 Harbour CP (UTF8ASC) as an example Harbour
user defined codapged using multibyte character encoding
* harbour/src/codepage/Makefile
+ harbour/src/codepage/cp_u16le.c
+ added Harbour codepage using UTF16 little endian encoding
* harbour/src/codepage/Makefile
+ harbour/src/codepage/big5.c
+ harbour/src/codepage/cp_big5.c
+ added BIG5 Harbour CP. It can be used with programs using Harbour
STR API with automatic translations.
; This CP needs really big translation tables. I added code which
makes some very simple compression which reduced raw size from
176100 bytes to 77354 but it's still large 77KB so maybe we should
think about moving this CP to other Harbour codpage library which
is not part of harbour shared library harbour*{.dll|.so|.dyn|...}
Alternatively I can try to reduce static size to about 30KB and
then build necessary tables dynamically at runtime when they are
used first time though in such case I will need additional 177KB
of dynamic memory instead of 77KB of static memory used by current
code.
* harbour/include/hbgtinfo.ch
! fixed wrong decimal value defined for HB_GTI_KBD_RALT.
* translated HB_GTI_KBD_* values from decimal to hex numbers
to avoid such mistakes in the future.
* harbour/include/hbapi.h
* harbour/src/rtl/hbrandom.c
added new C functions which fills memory block with random values:
void hb_random_block( void * data, HB_SIZE len )
this function should be used with "good enough" random generator
so in the future it may be changed to use internally sth different
then rand().
* harbour/src/vm/thread.c
* pacified minor warning
* harbour/src/rtl/hbproces.c
! fixed one HB_TRUE wrongly used instead of TRUE
* minor simplification
* harbour/include/hbgtinfo.ch
* harbour/src/rtl/hbgtcore.c
+ added HB_GTI_VERSION - it returns version information just like
hb_gtVersion() - usually the same but can be different in some
multilevel GTs, i.e. when different GT drivers are used locally
and remotely.
* harbour/include/inkey.ch
* harbour/src/rtl/hbgtcore.c
+ added HB_K_CONNECT and HB_K_DISCONNECT inkey codes.
They can be used to signal that remote terminal is connected or
diconnected.
* harbour/tests/gtkeys.prg
+ added HB_K_* keycodes
* harbour/contrib/hbnetio/netiosrv.c
* removed unnecessary casting
* harbour/include/hbgtinfo.ch
+ added HB_GTI_ONLINE - Is terminal connected?
* harbour/src/rtl/hbproces.c
! fixed MS-Windows version of hb_fsProcessRun() to unlock HVM stack
when thread is waiting for child process
* harbour/include/hbthread.h
* harbour/src/vm/thread.c
+ added internal functions hb_threadStateClone() and hb_threadStart()
* modified code to use new functions
* harbour/include/hbvm.h
* harbour/src/vm/hvm.c
+ added public function hb_vmThreadStart() which creates new thread
with HVM stack
+ added protection against executing hb_vmThreadRelease() for
not registered thread state
* harbour/include/hbvm.h
* harbour/src/vm/hvm.c
* added new public C function:
HB_BOOL hb_vmRequestReenterExt( void );
hb_vmRequestReenterExt() checks if given thread has registered HVM
stack and if not it creates new one otherwise it makes the same
operations as hb_vmRequestReenter(). It should be also used with
hb_vmRequestRestore() which checks if new stack was allocated and
if yes then it releases it.
For ST HVM hb_vmRequestReenterExt() works exactly like
hb_vmRequestReenter().
* harbour/include/hbthread.h
! typo in comment
* harbour/contrib/hbwin/win_svc.c
! fixed to work with MT HVM
+ accept function symbol (@func()) as 2-nd parameter of
WIN_SERVICESTART() function
* replaced one HB_TCHAR_*() function by Harbour STR API one.
(for full UNICODE support we should eliminate all HB_TCHAR_*()
functions)
* harbour/include/hbexprb.c
+ enabled o:var += <cString> optimization when -ko switch is used
I added this optimization few years ago but I haven't enabled it
so far.
+ harbour/tests/speedstr.prg
+ added test code for <exp> += <cString> optimization
Try this code compiled with -kc switch (disabled += optimization)
without any -k? switches (default, += optimized for all expressions
except <obj>:<msg>) and finally with -ko switch (+= optimized for
all expressions)
(Warning for larger string non optimized code begins to be _very_
slow, i.e. for '#define N_LOOP 1000000' it needs fee minutes to
pass single test)
* include/hbgtinfo.ch
* src/rtl/gtwin/gtwin.c
* src/rtl/gtwvt/gtwvt.c
+ HB_GTI_ISFULLSCREEN checking and setting inside GTWIN done.
! Minor fix for GTWVT, code patched to work on Windows 95 (tested).
; [Aleksander Czajczynski]
* config/beos/gcc.mk
* config/bsd/clang.mk
* config/bsd/pcc.mk
* config/linux/clang.mk
+ add soname specs to some gnu lds [Tamas Tevesz]
* include/hbgtinfo.ch
* src/rtl/hbgtcore.c
* src/rtl/gtdos/gtdos.c
* src/rtl/gtwin/gtwin.c
* src/rtl/gtxwc/gtxwc.c
* src/rtl/gtcrs/gtcrs.c
* src/rtl/gtstd/gtstd.c
* src/rtl/gttrm/gttrm.c
* src/rtl/gtos2/gtos2.c
* src/rtl/gtsln/gtsln.c
* src/rtl/gtpca/gtpca.c
* src/rtl/gtwvt/gtwvt.c
* contrib/hbct/ctwin.c
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/wvggui.c
* contrib/gtalleg/gtalleg.c
* contrib/hbrun/hbrun.prg
* tests/wvt_fs.prg
* examples/gtwvw/gtwvw.c
* Renamed HB_GTI_FULLSCREEN to HB_GTI_ISSCREENPOS
HB_GTI_FULLSCREEN is now deprecated and will be deleted in future
version of Harbour, use the new name instead.
* Renamed HB_GTI_FULLSCREEN to HB_GTI_ISFULLSCREEN
in context of GT window being fullscreen on physical display
recently added in 2011-02-26 20:07 UTC+0100 Viktor Szakats
; If someone has further name suggestions, pls tell.
* src/rtl/hbgtcore.c
* Setting defaults for HB_GTI_ISFULLSCREEN and HB_GTI_ALTENTER.
* include/hbdefs.h
+ Added HB_EXPORT_INT macro similar to HB_EXPORT, but used for
exported _internal_ functions. (we may easily rename this
to something else if a better idea pops up)
; TODO: Change HB_EXPORT to HB_EXPORT_INT for rest of internal functions.
* include/hbpp.h
* include/hbapi.h
* include/hbcomp.h
* include/hbexprop.h
* include/hbhash.h
+ Using HB_EXPORT_INT to export functions.
* contrib/hbide/hbide.hbp
* contrib/hbrun/hbrun.hbp
! Deleted bad hack linking in hbcplr, hbpp, hbcommon on non-mingw
win compilers.
* include/hbgtinfo.ch
* src/rtl/gtwvt/gtwvt.h
* src/rtl/gtwvt/gtwvt.c
+ tests/wvt_fs.prg
+ Added ability to switch GTWVT screen into fullscreen. See example
for usage. Patch by Aleksander Czajczynski. Many thanks!
Pls test.
* contrib/hbqt/qtcore/hbqt_pointer.cpp
! Fixed bug introed in 2011-02-24 18:03 UTC-0800 Pritpal Bedi
where char array declaration used runtime size value.
Replaced with hb_strdup(). In previous commit I've also fixed
an strcpy() usage. strcpy() is strictly forbidden in Harbour
codebase. Hopefully it fixes MSVC build failure.
* harbour/include/hbthread.h
* harbour/src/vm/hvm.c
* harbour/src/vm/thread.c
* on main thread exit unlock all main thread PRG mutexes before other
thread terminates and EXIT functions are executed.
* wake-up all thread waiting on subscribe operation when main thread
is terminated.
* contrib/hbqt/hbmk2_qt.hbs
* Whitespace.
* include/harbour.hbx
* src/rtl/hbdoc.prg
* tests/stripdoc.hbs
* Added __HBDOC_FILTEROUT( <cFile> ) -> <cFile> internal
function to strip all NG doc content from a file and
return the stripped file.
* contrib/hbide/idedocwriter.prg
+ Use core __HBDOC_TOSOURCE() to generate NG doc source.
(just build tested)
; TOFIX: idedocwriter.prg and ideharbourhelp.prg
still makes direct reference to NG doc physical
format. Pls change these to use __HBDOC_* functions.
* harbour/include/hbapicls.h
* harbour/src/vm/classes.c
+ added new C function
HB_SIZE hb_clsGetVarIndex( HB_USHORT uiClass, PHB_DYNS pVarSym );
which can be used as hack to speedup accessing some object instance
variables
* harbour/include/hbclass.ch
+ added some class(y) compatible commands for delegated messages
* harbour/include/hboo.ch
* harbour/src/vm/classes.c
* harbour/src/rtl/tclass.prg
* native support for delegated messages - work in progress
* harbour/src/rtl/hbsocket.c
! fixed error checking to eliminate possible error code overload
* harbour/ChangeLog
* marked old TODO as [DONE]
* include/harbour.hbx
+ Added HB_SOCKETGETHOSTNAME().
* contrib/hbcurl/hbcurls.hbp
* contrib/hbssl/hbssls.hbp
* Changed to not build dlls against static lib dependencies.
* contrib/hbssl/hbssl.hbp
! Fixed regression (in 2011-02-03 01:44 UTC+0100 Viktor Szakats)
causing implibs to not be generated for openssl.
* include/harbour.hbx
* src/rtl/hbfilehi.prg
! HB_DIRADDPATHSEP() fixed to not add pathsep to plain dirspec.
! HB_DIRDELPATHSEP() fixed to not remove double pathspec from UNC root.
! Fixed to work if HB_OSDRIVESEPARATOR()'s length is not 1:
HB_PATHMAKERELATIVE(), HB_DIRUNBUILD(), HB_DIRDELPATHSEP().
(QUESTION: is this a valid possibility, or is this over-design?)
+ Added TODO to HB_CWD() to also be able to change dir.
This will require adding Harbour versions of DIRCHANGE() and
DISKCHANGE(), or moving the implementation to C level.
(possibly the latter)
- Deleted HB_FNAMEDIREXTSET(). Doesn't satisfy a general need.
* src/rtl/dirdrive.c
+ Added HB_DIRCREATE(), which is same as MAKEDIR() C5.3 function,
but it's always available, not just when HB_COMPAT_C53 is enabled.
+ Added HB_DIRDELETE(), which is same as DIRREMOVE() C5.3 function,
but it's always available, not just when HB_COMPAT_C53 is enabled.
* contrib/hbnetio/tests/netiotst.prg
* contrib/hbnetio/tests/netiot03.prg
* contrib/hbfimage/tests/fitest.prg
* contrib/hbide/idesaveload.prg
* utils/hbmk2/hbmk2.prg
* utils/hbrun/hbrun.prg
* tests/wcecon.prg
* tests/flink.prg
* bin/hb3rdpat.hbs
* examples/hbdoc2/gentpl.prg
* Replaced MakeDir() with universally available hb_DirCreate().
; TODO: same in config/postinst.hbs (delayed to avoid a million
false bug reports)
* src/rtl/Makefile
+ src/rtl/hbfilehi.prg
+ Added generic file/dir/path handling functions.
They are taken from hbmk2 code, added parameter checking,
did two minor change to DirBuild() to be generic,
renamed to have HB_ prefix.
Please note the parameter list and any details are
subject to change yet, IOW these APIs are not yet finalized:
hb_cwd() -> <cPath>
hb_PathNormalize( <cPath> ) -> <cPath>
hb_PathMakeAbsolute( <cPathRel>, <cPathAbs> ) -> <cPath>
hb_PathMakeRelative( <cPathBase>, <cPathTarget>, <lForceRelative> ) -> <cPath>
hb_DirAddPathSep( <cDir> ) -> <cDir>
hb_DirDelPathSep( <cDir> ) -> <cDir>
hb_DirBuild( <cDir> ) -> <lSuccess>
hb_DirUnbuild( <cDir> ) -> <lSuccess>
hb_FNameDirGet( <cFileName> ) -> <cDir>
hb_FNameNameGet( <cFileName> ) -> <cName>
hb_FNameNameExtGet( <cFileName> ) -> <cNameExt>
hb_FNameExtGet( <cFileName> ) -> <cExt>
hb_FNameExtDef( <cFileName>, <cDefExt> ) -> <cFileName>
hb_FNameExtSet( <cFileName>, <cExt> ) -> <cFileName>
hb_FNameDirExtSet( <cFileName>, <cDirNew>, <cExtNew> ) -> <cFileName>
; TODO: Review, clean interface.
; TODO: Use these functions in .hbs files, utils, hbide.
* include/harbour.hbx
* Updated.
* utils/hbmk2/hbmk2.prg
* One internal function renamed.
+ Added HB_EXPORT flag to these functions: (required by xhb, hbfship)
hb_stackBaseOffset()
hb_stackItem()
hb_stackBaseProcOffset()
hb_stackGetRecoverBase()
hb_stackWithObjectOffset()
hb_memvarSaveInArray()
* harbour/include/hbcompdf.h
* harbour/src/compiler/hbmain.c
* save and restore compiler settings when separated .prg files are
compiled as different modules. Files compiled as single module
(i.e. by .clp files, #included, added by DO ... [WITH ...], etc.)
are still compiled using the same settings inheriting any modifications
introduced by #pragma. It's intentional behavior.
* harbour/include/hbapiitm.h
* harbour/src/vm/itemapi.c
+ added new C function hb_itemParamStoreRelease()
* modified hb_itemParamStore*() functions to accept NULL items
+ harbour/contrib/hbnetio/hbnetio.ch
* harbour/contrib/hbnetio/netio.h
* harbour/contrib/hbnetio/netiosrv.c
* harbour/contrib/hbnetio/readme.txt
+ extended NETIO_SRVSTATUS() function so now it can be used to
extract some additional information about connection socket:
NETIO_SRVSTATUS( <pConnectionSocket>
[, <nStreamID> | <nSrvInfo>, @<xData> ] )
-> <nStatus>
<nSrvInfo> can be:
NETIO_SRVINFO_FILESCOUNT
NETIO_SRVINFO_BYTESSENT
NETIO_SRVINFO_BYTESRECEIVED
NETIO_SRVINFO_PEERADDRES
; TODO: please eliminate NETIO_SRVSOCKET() from any code using it.
It's too danger so I'll remove this function from HBNETIO soon.
NETIO_SRVOPENFILESCOUNT() is also redundant now and can be
replaced by:
NETIO_SRVSTATUS( pConnSock, NETIO_SRVINFO_FILESCOUNT, @nCount )
so it can be removed too.
* harbour/include/hbexprb.c
! allow to use variable in parenthesis as lvalue when -kc switch
is used - Clipper compatibility
* harbour/contrib/hbfoxpro/misc.prg
+ __FOX_ARRAY( <dims,...> ) which returns array initialized
with .F. values - it can be used to initialize arrays declared
using FP syntax
* harbour/contrib/hbfoxpro/hbfoxpro.ch
+ added some new PP rules for FP array declarations
+ added DISPLAY FIELDS ... command
! allow to assign to variable in parenthesis in compiler when -kc switch
is used (Clipper compatibility), i.e.:
(var) := 1
Please remember that Clipper does not accept such syntax in
macrocompiler and Harbour replicates this behavior when -kc
compile time switch is used.
* harbour/include/hbapi.h
* harbour/include/hbwmain.c
* harbour/src/vm/cmdarg.c
* moved declaration of hb_winmainArgInit() to header file
* harbour/contrib/hbmxml/3rd/minixml/mxml_fil.c
* harbour/contrib/hbmxml/3rd/minixml/mxml.h
! fixed to compile with WinCE builds
; I cannot regenerate .diff file because
../../../../bin/hb3rdpat.hbs -rediff
generates RT error:
Error BASE/1123 Argument error: HB_ATOKENS
Called from HB_ATOKENS(0)
Called from URL_GETFILENAME(810)
Called from FETCHANDEXTRACT(673)
Called from MAIN(412)
Sorry, probably I'm missing sth what was already discussed
but I was not able to follow all post on the list in last
weeks so I would like to ask Viktor or Tamas for the help.
* include/hbwmain.c
* src/vm/cmdarg.c
! Fixed missing declaration for hb_winmainArgInit()
! Fixed missing HB_EXTERN_* from around hb_winmainArgInit() declaration.
; Patches from Andi. Thank you.
* Added HB_EXPORT to the declaration in hbwmain.c.
* harbour/include/hbcomp.h
* do not inherit in macrocompiler -z compile time switch when -kc is
also used
* harbour/src/common/expropt2.c
* disable logical expression optimization (reduction) in macrocompiler
when -kc compile time switch is used.
* harbour/config/beos/gcc.mk
* harbour/config/qnx/gcc.mk
* harbour/config/bsd/gcc.mk
* harbour/config/wce/mingwarm.mk
* harbour/config/vxworks/gcc.mk
* harbour/config/hpux/gcc.mk
* harbour/config/darwin/gcc.mk
* harbour/config/dos/djgpp.mk
* harbour/config/win/mingw.mk
* harbour/config/linux/gcc.mk
* harbour/config/cygwin/gcc.mk
* harbour/config/symbian/gcc.mk
* harbour/config/os2/gcc.mk
* harbour/config/sunos/gcc.mk
* harbour/utils/hbmk2/hbmk2.prg
* enable some important warnings in GCC builds using -W<name>... instead
of -Wall and -Wno-<name>... for warning level set to low.
It should help in backward compatibility with some older GCC versions.
* package/harbour.spec
* package/harbour-win.spec.in
* package/harbour-wce.spec.in
* include/hbver.h
* config/global.mk
+ Changed version number to:
2.1.0beta3 (from 2.1.0beta2)
* contrib/gtwvg/gtwvg.hbc
! Typo.
* contrib/gtwvg/tests/wvgactivex.prg
* Eliminated WITH OBJECT. Now Harbour doesn't
use this statement except in test code.
* harbour/include/hbapicdp.h
* harbour/include/hbcdpreg.h
* harbour/src/rtl/cdpapi.c
* harbour/tests/cpinfo.prg
+ added support to define CPs using different letter case sorting
in human readable form. Now it's possible to use:
// uppers before lowers: ABCDE...abcde...
#define HB_CP_CSSORT HB_CDP_CSSORT_UPLO
// uppers and lowers are mixed: AaBbCcDdEe....
#define HB_CP_CSSORT HB_CDP_CSSORT_MIXED
// ignore case
#define HB_CP_CSSORT HB_CDP_CSSORT_IGNORE