* harbour/include/hbxvm.h
* harbour/source/vm/hvm.c
* harbour/source/compiler/gencc.c
+ added finished by mistake support for hidden strings in -gc3 mode
* include/hbextern.ch
* source/vm/cmdarg.c
+ Added HB_CMDLINE() .prg level function to return
the full command line. Currently it does reassemble
it from hb_argc/hb_argv.
* contrib/rddsql/mysqldd.c
! Fixed MSVC casting errors in C++ mode.
* include/hbwmain.c
* source/vm/cmdarg.c
* Moved argv[ 0 ] generation on Windows platform, so
that it now gets properly filled with the full
executable file path for console mode (GTWIN)
apps in all situations (f.e. when run from a
batch file using '%~n1.exe' macro).
* source/rtl/hbinet.c
! Fixed to use safe strerror() (named strerror_s())
under MSVS 2005 and upper.
Please test.
* source/hbzlib/gzio.c
+ Added _CRT_SECURE_NO_DEPRECATE locally to suppress
various MSVC unsafe CRT API usage warnings. Maybe it'd
be better to fix these by using Harbour APIs.
* utils/hbdoc/gentrf.prg
! Fixed missing "common.ch"
* tests/db_brows.prg
* contrib/hbmysql/tmysql.prg
* contrib/hbnf/miltime.prg
* contrib/hbnf/mouse1.prg
* contrib/hbnf/sleep.prg
* contrib/hbnf/d2e.prg
* contrib/hbnf/easter.prg
* '&&' comments changed to '//' for all Harbour SVN.
* contrib/gtwvg/wvgclass.prg
* source/rdd/hbsix/sxcompat.prg
! Fixed '&&' being used instead of '.AND.' in code.
; NOTE: This '&&' comment compatibility is a lot more
dangerous than it's useful. It'd vote for
a compiler warnings switch for any of it's
occurences.
* source/rtl/tbcolumn.prg
* source/rtl/tget.prg
* source/rtl/tbrowse.prg
* contrib/xhb/hbcompat.ch
! Fixed '&&' being used instead of '.AND.' in #ifs.
* source/rdd/hbsix/sxini.prg
* source/rdd/hbsix/sxcompat.prg
* source/rdd/hbsix/sxtrig.prg
* 'end' -> 'endswitch'
% 'ValType() == "x"' -> 'IS*()'
; TODO: Reformat to Harbour standards.
* harbour/include/hbdefs.h
+ added HB_PRINTF_FORMAT() macro to declare functions with printf()
like formatting parameters - now it works only for GCC compilers.
* harbour/include/hbapi.h
* declare hb_snprintf() with HB_PRINTF_FORMAT() attribute
* harbour/source/rtl/philes.c
+ set FERROR() in HB_FLOCK()/HB_FUNLOCK()
+ accept extended lock attributes (WAIT/SHARE) in HB_FLOCK()
* source/rtl/tbrowse.prg
* source/debug/debugger.prg
! Cleaned hb_AINS()/hb_ADEL() usage after changing the
default of the last parameter.
Should fix the recent TBrowse() crash.
; NOTE: I'll rethink the defaulting situation at least
for hb_AINS().
* include/hbextern.ch
* source/rtl/philes.c
+ Added HB_FLOCK() / HB_FUNLOCK() file locking
functions.
[TOMERGE 1.0]
* source/rtl/tget.prg
! Accessing of Get() variables below made
C5.x compatible when a new value was
assigned to them as function call, rather
then normal assigment.
:buffer, :changed, :clear, :col, :colorSpec
:minus, :pos, :row, :subScript, :postBlock,
:preBlock, :cargo, :exitState, :reader.
; NOTE: Please report if any of the side cases
still don't work.
[TOMERGE 1.0]
* make_vc.mak
* contrib/mtpl_vc.mak
- Removed no longer necessary '-D_CRT_SECURE_NO_DEPRECATE'
for MSVS 2005 and upper.
* include/hbsetup.h
* Mapping snprintf() calls to hb_snprintf().
; TODO: Replace the calls in source code.
* source/common/hbstr.c
! Fixed hb_snprintf(). Please verify on your platforms.
; TODO: It may need further tweaking to smooth out the
platform implementation differences.
* source/common/hbstr.c
* Some tweaks to hb_snprintf(). It still doesn't work
for some reason.
* include/hbapi.h
+ Added hb_snprintf() to header.
* source/debug/dbgentry.c
* Changed strcpy() to hb_strncpy(). Chances are high
this is wrong. Please review and test.
* source/pp/ppcore.c
+ Added '#pragma TEXTHIDDEN=<ON | OFF>' to control the
existing -texthidden option to add light encoding to
strings embedded in code. Since this goes with a slight
performance hit and it's rarely used, it might be useful
to turn it on only for code parts that really needs this.
* source/rtl/tget.prg
* Corrected an assigment to follow official syntax.
* source/common/hbver.c
* Changed to include bitness even for DJGPP.
* Changed "(* bit)" to "(*-bit)"
; NOTE: We have __ARCH*BIT__ but this macro is misleading
and cannot be used properly on platforms where the
compiler is able to generate multiple targets in
one build pass. Such system is Darwin/OSX.
I'd suggest to consider removing this macro, and
rather adding a function to return bitness.
Any opininons?
* source/common/hbfopen.c
* Changed hb_fopen() to use fopen_s(), secure version of
fopen() for MSVS 2005 and upper.
* source/common/hbstr.c
+ Added hb_snprintf() Harbour wrapper for snprintf() which
terminates the buffer with a '\0' char for CRTLs that
need this (like MSVC).
MSVC _snprintf() doesn't do so.
* hb_snprintf() used _snprintf_s(), secure version of
_snprintf() for MSVS 2005 and upper.
; TOFIX: There is still one strcpy() marked as non-secure
in debug lib. Could someone please take a look
at it and replace it with hb_strncpy() or something
else secure? The code is cryptic and as someone
not using the debugger, I didn't dare to touch it,
and this is the only one such call left.
; TODO: Change all snprintf() calls to hb_snprintf().
When that happens, Harbour will no more use anything
depicted as "non-secure" by MSVS 2005/2008.
; NOTE: This function may need tweaking, pls review and
fix if/where needed.
* source/vm/dlmalloc.c
! Fixed MSVC C++ mode compile error. This fix also exists
as part of the next dlmalloc version (2.8.4b).
2008-10-26 07:27 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/hbdbgfx/dbgfx.prg
* Minor cleanup.
* contrib/hbdbgfx/dbgfxc.c
! Fixed GPF when non-string parameter passed to
hb_outdebug().
* harbour/rtl/gtwvt/gtwvt.h
+ Added <ResizeMode> member to HB_GTWVT
* harbour/include/hbgtinfo.ch
+ Added HB_GTI_RESIZEMODE
+ Added HB_GTI_RESIZEMODE_FONT
+ Added HB_GTI_RESIZEMODE_ROWS
* harbour/include/inkey.ch
+ Added K_HB_RESIZE 1101
* harbour/rtl/gtwvt/gtwvt.c
! Updated to accomodate HB_GTI_RESIZEMODE.
* harbour/rtl/hbgtcore.c
! static BOOL hb_gt_def_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
{
case HB_GTI_RESIZEMODE:
pInfo->pResult = hb_itemPutNInt( pInfo->pResult, HB_GTI_RESIZEMODE_FONT );
break;
* harbour/tests/wvtext.prg
! Updated to demonstrate K_HB_RESIZE event in navigation loop.
; Odd numbered windows will have HB_GTI_RESIZEMODE_ROWS mode
Even numbered windows will have HB_GTI_RESIZEMODE_FONT mode.
Open two or more browsers to see the effects.
; To activate HB_GTI_RESIZEMODE_ROWS mode call
hb_gtInfo( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_ROWS )
and whenever window will be resized you can retrieve it via
if inkey() == K_HB_RESIZE
// Reconfigure browser/your screen accordingly
endif
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
* eliminated few static variables
! fixed possible race condition when new window is created by adding
mutex protection
* source/vm/arrayshb.c
* Changed the default for the last logical parameter of
HB_AINS()/HB_ADEL() to be .T.
This way there is no need to pass this parameter if someone
wants to actually use the extended nature of these functions.
Passing a .F. will result in equivalent functionality to
AINS()/ADEL(). Essentially the last parameter is just there
for compatibility.
* harbour/source/rtl/gtxwc/gtxwc.c
* added hack for problems with some XLIB versions in heavy stress
MT tests
* harbour/include/hbapigt.h
* harbour/source/vm/thread.c
* added parameter to hb_gtAlloc() C function
* harbour/include/hbapigt.h
* harbour/source/rtl/hbgtcore.c
+ added hb_gtCreate() and hb_gtSwap() C functions
+ added new .prg functions:
HB_GTCREATE( <cGtName> ) -> <pGT>
HB_GTSELECT( <pGT> ) -> <pPrevGT>
Using this functions is possible to create many console window
if GT supports such possibilities (f.e. GTXWC or GTWVT) even in
single thread programs and switch between them.
* harbour/source/rtl/box.c
! fixed one of recent DISPBOX() modifications - it should use:
hb_gtBoxEx() instead of hb_gtDrawBox() to set cursor position.
+ harbour/tests/gtwin.prg
+ added demonstration/test code for using more then one console window
also in single thread programs.
* make_b32.mak
* make_vc.mak
* contrib/mtpl_b32.mak
* contrib/mtpl_vc.mak
* "IF EXIST" -> "if exist" for consistency.
* "-" echo supression char consistently changed to "@",
and added where it was missing (for 'if exist' commands).
* make_vc.mak
% Cleaned WinCE C options from unnecessary quotes.
% Minor opt in .dll flag assembly.
% Some commented options removed.
* WinCE LDFLAGS uppercase to lowercase.
% Minor opt in non-WinCE LDFLAGSDLL assembly.
* source/rtl/gtwvt/gtwvt.c
* Minor formatting.
* harbour/source/rtl/gtxwc/gtxwc.h
* harbour/source/rtl/gtxwc/gtxwc.c
! use XInitThreads() for MT safe thread access when linked with MT HVM
+ added optional mutex protection enabled by HB_XWC_XLIB_NEEDLOCKS macro
to use when XLib does not support XInitThreads()
* harbour/bin/hbmk.bat
* simple modification to make beginning hbmk parameters (-mt and -gui)
position independent though they still have to be used before Harbour/
C compiler switches and filenames
* harbour/source/common/hbdate.c
* harbour/source/compiler/cmdcheck.c
* harbour/source/rtl/filesys.c
* harbour/source/rtl/hbffind.c
! use MT safe localtime_r() function if it's available instead of
localtime()
TODO: clean the usage of this function and gmttime[_r]() probably
by adding our own wrappers.
* harbour/source/rtl/hbffind.c
! disabled calls to tzset() - this function should be executed
automatically by CRTL only if it's necessary. It's also not MT
safe and can cause MT applications crash.
* harbour/include/hbstack.h
* harbour/include/hbgtcore.h
* harbour/include/hbthread.h
* harbour/include/hbapigt.h
* harbour/source/vm/estack.c
* harbour/source/vm/hvm.c
* harbour/source/vm/thread.c
* harbour/source/rtl/hbgtcore.c
+ added support for optional allocating independent console window by
each thread. By default new thread inherits console Window from
parent thread. But each thread can allocate its own console window
by calling hb_gtReload( <cGtName> ) function, f.e. by:
hb_gtReload( hb_gtVersion() )
If GT driver supports such functionality then new it will allocate
new console windows.
Each console window has reference counter which is increased when
new thread starts and decreased when hb_gtReload() is executed or
thread terminates. When counter reach zero give console window is
destroyed.
* harbour/source/rtl/gtwvt/gtwvt.c
! use SendNotifyMessage() instead of SendMessage() to not block
threads which inherited GT from parent thread. Why non of MS-Win
users reported this problem?
+ added reference counter to window class for multi GT support
+ harbour/tests/mt/mttest10.prg
+ added demonstration/test code for using independent console window
in different threads. It needs GT driver which supports such
functionality, f.e GTXWC in *nixes or GTWVT in MS-Windows
* harbour/tests/mt/mttest09.prg
! fixed typo in comment
* source/debug/debugger.prg
! Fixed error when moving in the call stack window to an source prg
not included in the path, and a ::oWndVars (Monitor of vars) is opened.
* harbour/include/hbapigt.h
* harbour/source/rtl/console.c
* harbour/source/rtl/filesys.c
* use HB_STD{IN,OUT,ERR}_HANDLE macros instead of hard coded values
* harbour/include/hbgtcore.h
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/gtapi.c
+ added optional support for dynamic supertables
+ added reference counter to HB_GT_BASE structure
- removed hb_gtUnLoad() function
+ added hb_gtAlloc(), hb_gtRelease(), hb_gtAttach()
+ added hb_gtRealod() function which unloads current GT driver
and loads given new one
+ added .prg function HB_GTRELOAD( <cGtName> ) -> <lSuccess>
This function allow to switch active GT driver at run time.
It can be also used to simulate removed HB_NOSTARTUPWINDOW()
functionality. F.e.:
REQUEST HB_GT_WVT
REQUEST HB_GT_NUL_DEFAULT
proc main()
// do some initializations...
hb_gtReload( "WVT" )
// rest of code...
return
Please remember that some GTs may refuse initialization due to
missing required resources and instead of return FALSE they can
interrupt program with internal error, just like at application
startup so it's not guarantied that this function always returns.
* harbour/contrib/hbct/ctwin.c
* updated for new GT API
+ added support for dynamic supertable to allow using CTWIN in the
same time with different GTs.
* harbour/contrib/xhb/hbcompat.h
- removed hb_retclenAdoptRaw translation
* source/debug/debugger.prg
! Fixed error when selecting "Restore Settings" and the current prg source
is not in the "path for Files" option. (NIL ::oBrwText at line 1478 on
debugger.prg)
* harbour/source/rtl/filebuf.c
! fixed bad typo in lock table resizing
* harbour/source/rdd/hbsix/sxcompr.c
! fixed ring buffer initialization in Sx_Compress()