* source/rtl/hbi18n.c
* Modified __I18N_GETTEXT() to not RTE when trs table
is non-array (like NIL).
* USHORT -> ULONG in a few places.
* source/rtl/gtwvt/gtwvt.c
* Minor formatting.
* source/rtl/gtwvt/gtwvt.c
+ Added support for HB_GTI_ICONRES, HB_GTI_ICONFILE
before the window is created.
! Fixed resource leak when HB_GTI_ICONFILE was used.
! Fixed problem with HB_GTI_ICONRES when it was resetting
the icon if a non-string/non-numeric parameter was passed
passed, which included simply trying to read the value
using hb_gtInfo( HB_GTI_ICONRES ). If this was an intented
feature, pls speak up.
; Please review these changes.
(this file somehow didn't get committed previously)
* harbour/source/rtl/itemseri.c
! fixed 8-bytes integer numbers deserialization
+ added support for serializing number with information about size
and decimal places. It can be activated by passing .T. as second
parameter to HB_SERIALIZE() function.
Mindaugas please test if this is what you asked for.
* harbour/source/rtl/hbi18n.c
* changed USHORT to ULONG to pacify warning and minor speed increase
(it eliminates later conversions to 32bits when variable is used)
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
! fixed HB_GTI_SETPOS_ROWCOL and HB_GTI_SETPOS_XY parameters decoding
* automatically resize caret when cell size is changed
* show window after setting its all parameters to eliminate visible
resizing and repositioning. It did not eliminate multiple calls to
hb_gt_wvt_FitSize() when windows is created. This has to be fixed
yet or at least low level actions in this function not repeated
when window and font dimensions are the same as in last call.
Please test it in real MS-Windows. It should reduce startup
flickering and increase the speed of initial code.
* source/rtl/gtwvt/gtwvt.h
* source/rtl/gtwvt/gtwvt.c
+ Added support for HB_GTI_ICONRES, HB_GTI_ICONFILE
before the window is created.
! Fixed resource leak when HB_GTI_ICONFILE was used.
! Fixed problem with HB_GTI_ICONRES when it was resetting
the icon if a non-string/non-numeric parameter was passed
passed, which included simply trying to read the value
using hb_gtInfo( HB_GTI_ICONRES ). If this was an intented
feature, pls speak up.
; Please review these changes.
* source/rtl/hbi18n.c
% Removed 'comment' field from language file header. Any text
can be added simply by adding it to the translation table.
* contrib/Makefile
! Missing hbdbgfx added here, too.
; BTW, I've intentionally left this lib out from the liblist
until we decide where to put these functions. There is
not much point maintaining for the sake of just a few functions.
If there are no objections, I'll be moving these functions
to hbwin (until someone updates the code to work outside
Windows).
* include/hbextern.ch
* source/rtl/memofile.c
+ Added HB_MEMOREAD() which is identical to MEMOREAD()
except it won't truncate the last byte (on non-UNIX
compatible systems) if it's a EOF char.
See also existing HB_MEMOWRIT().
[TOMERGE 1.0]
* include/hbextern.ch
* source/rtl/hbi18n.c
% Using buffered hb_file*() API in __I18N_LOAD()
instead of plain hb_fs*(). This will cause speedup when
buffering gets implemented in hb_file*(), because
currently two hb_fsRead() will be executed for each
string stored in the language file.
- __I18N_LOAD(): Because of the above, passing a file handle
is no longer possible.
+ Added __I18N_LOADFROMMEMORY( <mem> ) => trs
% Minor internal cleanups.
* include/hbextern.ch
* common.mak
* source/rtl/Makefile
+ source/rtl/hbi18n.c
+ Added basic/low level i18n functions:
__I18N_SAVE( cFileName | nHandle, aSortedTable [, cComment ] ) => lSuccess
__I18N_LOAD( cFileName | nHandle ) => trs
__I18N_GETTEXT( @cText, trs ) => NIL
; NOTE: These were originally based on Giancarlo Niccolai's work in xhb,
but everything was completely reworked, fixed, internals removed,
made portable, lighter, shorter and probably quicker. The used file
format is incompatible, slightly smaller and portable.
; NOTE: The internal format of 'trs' (loaded translation) is also
different. For minimal memory/speed overhead, I've choosen a one
dimensional array, as opposed to the original two dimensional
(like the input aSortedTable array).
; TODO: Higher level functions to handle selecting a default
language, loading files automatically, possibly caching
multiple loaded language translations in memory and providing
a high level HB_I18N_GETTEXT() function. We may also readd
a low-level function to create 'trs' from a memory object
instead of loading it from the disk. We should in any case make
the higher level the lightest and less app specific as possible.
* include/hbver.ch
* source/rtl/version.c
* utils/hbtest/rt_str.prg
* ChangeLog
! Fixed returning bit width.
* Reworked hb_version() parameter values as follows:
(also fixed some differences between docs here in the
previous entry and actual code)
HB_VERSION_HARBOUR (was: HB_V_HARBOUR )
HB_VERSION_COMPILER (was: HB_V_COMPILER )
HB_VERSION_MAJOR (was: HB_V_MAJOR )
HB_VERSION_MINOR (was: HB_V_MINOR )
HB_VERSION_MICRO (was: HB_V_REV )
HB_VERSION_STATUS (was: HB_V_STATUS )
HB_VERSION_REVISION (was: HB_V_COUNT )
HB_VERSION_BLD_DATE_STR (was: HB_V_DATE_TIME )
HB_VERSION_BLD_DATE (was: HB_V_DATE )
HB_VERSION_BLD_TIME (was: HB_V_TIME )
HB_VERSION_PCODE_VER (was: HB_V_PCODE )
HB_VERSION_PCODE_VER_STR (was: HB_V_PCODE_STR )
HB_VERSION_CHANGELOG_LAST (was: HB_V_CHANGELOG_LAST )
HB_VERSION_CHANGELOG_REV (was: HB_V_CHANGELOG_REV )
HB_VERSION_FLAG_PRG (was: HB_V_FLAG_HARBOUR )
HB_VERSION_FLAG_C (was: HB_V_FLAG_C )
HB_VERSION_FLAG_LINKER (was: HB_V_FLAG_LINKER )
HB_VERSION_BITWIDTH (was: HB_V_BITWIDTH )
HB_VERSION_ENDIANNESS (was: HB_V_ENDIANNESS )
This function makes deprecated following functions:
- HB_COMPILER() => hb_version( HB_VERSION_COMPILER )
- HB_PCODEVER() => hb_version( HB_VERSION_PCODE_VER_STR )
- HB_BUILDDATE() => hb_version( HB_VERSION_BLD_DATE_STR )
and macros:
- __ARCH16BIT__
- __ARCH32BIT__
- __ARCH64BIT__
- __LITTLE_ENDIAN__
- __BIG_ENDIAN__
- __PDP_ENDIAN__
- HB_VER_SVNID
- HB_VER_CHLID
- HB_VER_LENTRY
- HB_VER_C_USR
- HB_VER_L_USR
- HB_VER_PRG_USR
; TOFIX: Some term anomalies regarding 'REVISION'.
* source/vm/runner.c
* Minor formatting and added "s_" prefix to static var.
* make_b32.mak
* contrib/mtpl_b32.mak
* config/w32/bcc32.cf
- Added -4 switch, which means Intel 386 CPUs are not
not supported by default.
* make_vc.mak
+ Added -GA switch to MSVC 32/64 which creates smaller
(and only slightly faster) TLS access code.
* source/compiler/cmdcheck.c
* source/compiler/hbusage.c
+ Added -/+ suboptions to -k? options to make it
possible to set them to the opposite setting.
; NOTE: BTW, shouldn't -ki option also disable
#pragma BEGINDUMP/ENDDUMP? IMO it should,
otherwise it doesn't really enforce C
out of .prg code.
* config/w32/gcc.cf
* config/w32/mingw.cf
* Changed -march=i486 to -march=i586.
; NOTE: Please comment on CPU optimization switches, IMO
we can quite safely target Pentium/586 as the
minimum CPU requirement these days for default
Harbour builds. If someone needs to run it on
386 (Win95) or 486 (Win98/WinME), a special built
can be created.
* harbour/include/hbvmpub.h
+ added HB_VM_ISFUNC(), HB_VM_FUNCUNREF() and HB_VM_EXECUTE()
macros to operate on HB_SYMB structure
* harbour/source/vm/hvm.c
* harbour/source/vm/classes.c
* use HB_VM_ISFUNC()/HB_VM_FUNCUNREF()/HB_VM_EXECUTE() macros
for executing function inside HB_SYMB structure to avoid possible
synchronization problems during modifications
* ChangeLog
+ Clarification to previous entry.
* source/common/hbgete.c
* source/common/hbfsapi.c
! Blind fix for OS/2 compiler warnings. David, please test.
* source/rtl/philes.c
* Minor (0 -> '\0').
* source/compiler/hbusage.c
! Fixed old typo in help text.
; BTW: What is missing for gettext support?
* harbour/include/hbstack.h
* harbour/source/vm/estack.c
+ added hb_stackReleaseTSD() function - this function can be called
only in HVM cleanup state when all threads except the main one are
released
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* make RDDINFO settings in BDF* based RDDs thread local
* harbour/include/hbclass.ch
* minor modification
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
+ added support for creating console window after 1-st screen update
Please remember that it interacts with inkey() code which does not
work until windows is not created.
Now it should be quite easy to add support for some initializations
before window is created. Probably it will be necessary to change
INFO() method and store settings in some pWVT variables if pWVT->hWND
is NULL and then use them as parameters for new console window.
I'd like to leave this modification to MS-Windows developers.
* harbour/contrib/xhb/xhbcopyf.c
! fixed name conflict with hb_fsCopy()
* 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.