* src/common/strwild.c
! fixed hb_strMatchFile() (C) and hb_fileMatch() (PRG) to respect
. and .* used at the end of pattern just like system does
(or at least should, tests with more complicated wildcard expressions
in my Windows7 exploit bugs in system wildcards interpretation)
* src/rtl/gtxwc/gtxwc.c
* removed some old unused code
! restored window oriented message processing
! check window position on each HB_GTI_SETPOS_XY request - some
WMs sends ConfigureNotify with 0,0 cords when window is resized
overwriting correct values.
* switched HB_GTI_SETPOS_XY coordinates to NorthWestGravity (upper left
corner of window with frame and title bar) from StaticGravity (upper
left corner of client area). Many thanks to Rolf for the hint which
allows to translate coordinates from StaticGravity and NorthWestGravity
; updated note about StaticGravity/NorthWestGravity
; Warning: sometime WMs report wrong size in _NET_FRAME_EXTENTS
and then HB_GTI_SETPOS_XY returns wrong position two.
I observed this behavior in different situations and
different WMs, f.e. in KWIN from Ubuntu, after:
MAXIMIZE, FULLSCREEN-ON, FULLSCREEN-OFF
wrong left and top offsets (3,3) are set which are later
inherited also by NORMALSIZE window for which HB_GTI_SETPOS_XY
returns wrong position. _NET_FRAME_EXTENTS begins to report
correct size after next FULLSCREEN-ON.FULLSCREEN-OFF
* contrib/hbwin/axcore.c
! protection against buffer underflow
* src/rtl/gtxwc/gtxwc.c
* src/rtl/gtxwc/gtxwc.h
% use 32 bit screen buffer items also in 64bit systems
! fixed race condition in SetMode()
! fixed infinite loop with size updating in fullscreen and
maximized modes
! fixed typo in function name used in HB_TRACE() message
* use _MOTIF_WM_HINTS to change window decoration and buttons
instead of _NET_WM_ALLOWED_ACTIONS:_NET_WM_ACTION_CLOSE
_MOTIF_WM_HINTS is much more portable and looks that most of WMs
understand it. _NET_WM_ALLOWED_ACTIONS:_NET_WM_ACTION_CLOSE works
only with few WMs (i.e. with default WM in Ubuntu).
Many thanks to Rolf for information about this method.
* use _MOTIF_WM_HINTS to control some other hints (i.e. resizing)
in WMs which do not make it automatically using information
form XSetWMNormalHints()
* removed \r from all debug messages
; added note about StaticGravity and NorthWestGravity
; TODO:
1) add margins if window cannot be resized to requested size
(i.e. in fullscreen or maximized mode)
2) add support for HB_GTI_RESIZEMODE=HB_GTI_RESIZEMODE_FONT
* contrib/gtqtc/gtqtc.h
! typo in variable type
* contrib/gtqtc/gtqtc1.cpp
* minor simplification
* src/rtl/gtxwc/gtxwc.c
+ added support for disabling close button [x] on HB_GTI_CLOSEMODE==2
Thanks to Rolf for suggestion removing/adding _NET_WM_ACTION_CLOSE
to _NET_WM_ALLOWED_ACTIONS property is honored by WMs I tested and
they hide/show [x] button respectively.
* contrib/gtqtc/gtqtc1.cpp
! typo in last commit - flags and state were not changed
* src/rtl/gtxwc/gtxwc.c
* added XSync() just after XBell() to reduce a little bit potential
delay
* include/hbgtinfo.ch
+ added new hb_gtInfo() switch: HB_GTI_CLOSEMODE
It controls close event (i.e. ALT+F4 and/or [x] button in MS-Windows)
behavior:
== 0 - terminate application
>= 1 - generate HB_K_CLOSE
== 2 - disable close button
* contrib/gtqtc/gtqtc.h
* contrib/gtqtc/gtqtc1.cpp
% optimized setWindowFlags() and setWindowState() to not
execute show() when flags/state are not changed.
+ added support for HB_GTI_CLOSEMODE
* changed HB_GTI_CLOSABLE to work line in GTXWC and GTWVT
* src/rtl/gtxwc/gtxwc.c
! fixed setting window position by HB_GTI_SETPOS_XY
+ added support for HB_GTI_CLOSEMODE
; note: in GTXWC we cannot easy disable close button so
HB_GTI_CLOSEMODE==2 will work like 1 until we
do not find some portable way to inform WM that
is should hide close button
* src/rtl/gtwin/gtwin.c
* added type checking in few HB_GTI_* settings
+ added support for HB_GTI_CLOSEMODE
; note: in GTWIN we cannot catch close event so
HB_GTI_CLOSEMODE==1 works like 2
In this GT HB_GTI_CLOSABLE also has to work like
HB_GTI_CLOSEMODE==2
* src/rtl/gtwvt/gtwvt.h
* src/rtl/gtwvt/gtwvt.c
* added range checking in HB_GTI_RESIZEMODE setting
+ added support for HB_GTI_CLOSEMODE
* src/common/hbdate.c
+ added support for decooding timestamp values with semicolon ";" used
as date and time part delimiters, i.e.:
tValue := t"2013-11-06;15:14:45"
* src/rtl/gtwin/gtwin.c
! do not disable console control handler when terminal is suspended.
! ignore HB_K_BREAK event's caught when terminal was suspended.
* src/rdd/dbcmd.c
* src/rdd/dbcmd53.c
* changed HB_USHORT to HB_AREANO in few declarations
% simplified code taking order number or name from user parameters
* contrib/hbfship/hbfship.hbx
! removed FIELDDECI() reenabled by mistake during one of
internal merges
* src/rdd/dbfcdx/dbfcdx1.c
* accept headers with KEY and FOR expression lengths without
offset fields.
* tests/video.prg
! fixed CLIP and xHarbour compilation
+ added support for testing UTF8 screen output
(non empty 1-st parameter) and HB_GTI_COMPATBUFFER (non empty
second parameter)
* include/dbinfo.ch
* include/hbrdddbf.h
* src/rdd/dbf1.c
+ added default codepage setting RDDI_CODEPAGE for DBF RDD (and all
inherited RDDs). This helps to do an easy migration of application
to unicode, using existing dbf files:
HB_CDPSELECT("UTF8EX")
RDDINFO(RDDI_CODEPAGE, <codepage_used_in_dbf>)
* src/rtl/gttrm/gttrm.c
* send ST (ESC \) after Linux console palette set sequence (ESC ] P).
ESC ] is Operating System Command (OSC) which by default should
be terminated by ESC \ (ST). Some terminals which sets LINUX
TERM envvar but do not correctly understand Linux console palette
set sequence may hang waiting for ST. Now ST is sent to avoid such
situation. Linux console simply ignore ST terminator so nothing
wrong should happen.
* src/rtl/gttrm/gttrm.c
! fixed terminal ISO mode auto detection (broken in previous patch)
% use position from UTF8/ISO mode detection instead of double asking
terminal cursor position. With the minor cost of unknown initial
column position we have faster start on slow connections.
* include/hbvm.h
* src/vm/hvm.c
* added new 7-th parameter fOverLoad to hb_vmRegisterSymbols() function.
When it's TRUE then new public function symbols overload existing ones.
* src/vm/runner.c
! use new fOverLoad parameter of hb_vmRegisterSymbols() function to
overload existing functions (HB_HRB_BIND_OVERLOAD) instead of making
local modifications in global symbol table. It fixes memory corruption
when the same HRB module is reloaded with HB_HRB_BIND_OVERLOAD parameter.
This was very old bug which has existed from the beginning when I added
support for HB_HRB_BIND_* flags.
* src/rdd/dbcmd.c
! fixed dbRSelect() to be compatible with undocumented Cl*pper behavior:
When parameter is missing, wrong or 0 then 1 is used as relation number
* src/rtl/hbgtcore.c
+ added support for GT parameters passed in //GT<NAME>
parameter after ":", i.e. //GT<NAME>:<params>
* src/rtl/gttrm/gttrm.c
+ added new parameters set in //GTTRM:<params>
1) "NOPOS" - inform GTTRM that terminal does not support
cursor position query: ESC [ 6 n
At startup GTTRM asks terminal about cursor position
and waits for answer for 2 seconds. If terminal doesn't
support it then it's unnecessary delay at application
startup.
2) "UTF8" or "UTF-8" - force UTF-8 terminal output
Useful when terminal does not support cursor position
query so it cannot be used to detect automatically
UTF-8 or ISO terminal mode.
3) "ISO" - force ISO terminal output
4) "XTERM", "LINUX", "PUTTY", "CONS" - force given terminal
type
f.e. working with Android Terminal Emulator it's good to use
//GTTRM:UTF8,NOPOS
because it still does not support cursor position query and
LANG variable is not set.
* src/rtl/cdpapi.c
* use CP437 control codes in translations from unicode to ASCII
* src/rtl/gtwvt/gtwvt.c
* added support for key code typed using ALT + <ASCII_VALUE_FROM_KEYPAD>
* tests/gtkeys.prg
* added parenthesis to clarify expression order
* src/vm/dlmalloc.c
* use __builtin_clz() and __builtin_ctz() only with GCC 3.4 or newer.
Problem reported by David Arturo Macias Corona and OS2 GCC3.3.5.
* README.md
+ added link suggested by David to os2gcc454 from Paul Smedley
* src/rtl/gtstd/gtstd.c
+ accept keyboard input from redirected file on platforms without
dedicated code for keyboard support in GTSTD
* src/rtl/hbsocket.c
! use sock_errno() instead of errno in OS2 WATCOM builds.
It fixes few problems with socket code using errno value, i.e.
hb_socketConnect() with timeout.
* src/compiler/hbdbginf.c
! fixed module names generated for debugger line info when user compiles
files passing path with drive letters, i.e. hbmk2 c:\temp\test.prg
Thanks to Anton Ryzhov for the information about the problem.
* src/rtl/hbsocket.c
! fixed hb_socketConnect() with timeout in DOS Watt-32 builds.
Watt-32 sets socket error to EISCONN when connection is established.
* src/rtl/fstemp.c
! fixed casting for DOS C++ builds
* config/dos/watcom.mk
! moved CRTL library to the end of linked library list - some
other libraries may overload some C RTL functions or symbols,
f.e. error descriptions in WATT-32
* utils/hbmk2/hbmk2.prg
! added hbpmcom library to linked library list in DOS builds
! fixed WATT-32 support in DOS builds to work in cross compilation
environment
! link WATT-32 library before C RTL
! fixed simultaneous compilation with -jobs=N when N >= 2
The same hash array (hReplace) was shared between different threads
and each thread tried to modify it overloading their own parameters.
It was causing different side effects, i.e. all threads compiled
the same .c file instead of their own ones or HBMK2 was crashing
due to memory corruption.
* always join all started threads
* contrib/hbct/getsecrt.prg
! applied Clipper compatibility fix to GetSecret() by Pavel Tsarenko
* src/common/hbdate.c
* removed explicit _BSD_SOURCE definition - it was confusing our
code used to detect localtime_r() support and is not necessary
if we do not use extended fields of tm structure
* src/rtl/mtran.c
* updated to show strict Clipper compatible behavior - Clipper
ignores 3-rd cSoftCR parameter if 2-nd one cHardCR is not given
(strict compatibility is covered by HB_CLP_STRICT macro and
disabled by default - undocumented feature which may confuse
users)
% minor optimization
* include/hbdate.h
* src/common/hbdate.c
+ added new C functions:
double hb_timeLocalToUTC( double dTimeStamp );
long hb_timeStampUTCOffset( int iYear, int iMonth, int iDay,
int iHour, int iMinutes, int iSeconds );
; warning: some C RTLs may not correctly detect Summer time for all past
dates in few countries.
* include/harbour.hbx
* src/rtl/dateshb.c
+ added new PRG function:
hb_TSToUTC( <tsLocal> ) -> <tsUTC>
+ added support for optional timestamp parameter in hb_UTCOffset()
function, current syntax is:
hb_UTCOffset( [ <tsLocal> ] ) -> <nSeconds>
* contrib/hbtip/hbtip.hbx
* contrib/hbtip/utils.c
+ added new PRG function:
tip_FileNameMimeType( <cFileName> ) -> <cMimeType>
It's a wrapper to old C function s_findFileMimeType()
TODO: replace few independent mimetype functions by single one.
! fixed tip_FileMimeType() to not call hb_fsClose() or any other FS
function with wrong handler.
! fixed tip_TimeStamp() using hb_timeStampUTCOffset() instead of
hb_timeUTCOffset() to correctly calculate UTC offset for dates
different then current one.
! decode time passed as numeric second() value in 2-nd parameter of
tip_TimeStamp() only when the 1-st one contains pure date value.
* src/debug/dbgentry.c
+ added protection against wrong parameters passed to __dbgDelBreak()
* src/debug/debugger.prg
+ implemented display history for command window.
This modification also fixes clearing command window when focus is
changed.
+ added support for new commands:
DELETE ALL BP
DELETE BP <nNumber>
LIST BP
* replicated Clipper compatible command line shortcuts
! send :RefreshAll instead of :RefreshCurrent to source code window
when break point changed
; TODO: add support for window resizing and repositioning. Commands
like LIST BP are in practice unusable in 3 line command window.
* src/rtl/console.c
% minor optimization
* src/debug/dbgtmenu.prg
! allow to chose current menu item by its hotkey
* src/debug/dbgtmitm.prg
% eliminated dummy hb_DispOutAtBox() for not marked options
* src/debug/debugger.prg
! keep RunAtStartup flag synced with menu
! fixed options decoding from init.cld file.
Thanks to Franček Prijatelj for locating the problem though fix
should be a little bit different.
* src/debug/tbrwtext.prg
! respect LineNumbers on/off setting
* src/rtl/console.c
! call hb_gtFlush() at the end of hb_DispOutAtBox() - it fixes
different side effects in code using hb_DispOutAtBox().
* contrib/hbct/ctwfunc.c
! extract box frame string passed to WBOX() using BOX CP
* src/vm/procaddr.c
! added hb_extIsNil() to hb_vmProcAddress() - it fixes PCODE DLLs
using [HB_]ISNIL() macro and linked with hbmaindllp library or
other wrapper using hb_vmProcAddress()
* src/vm/codebloc.c
- removed old comment which was never true in real HVM MT model
* ChangeLog.txt
! typo: tanks -> thanks ;)
* src/debug/debugger.prg
% Don't save debugger window positions if user did not change them as the
original debugger behaves.
+ Support arguments to Options Save and Options Restore debugger commands
as the original debugger does.
* src/debug/debugger.prg
! Maintain fixed window logical order as the original debugger does.
! Load debugger settings in two steps: before and after debugger UI activation.
! Save watchpoints to the settings file.
* src/debug/dbgentry.c
! added missing casting
* src/debug/debugger.prg
+ show in call stack references to code compiled without debug info
* src/rtl/itemseri.c
* ignore HB_HASH_RESORT flag during hash serialization