* include/hbcompdf.h
* include/hbexprop.h
* include/hbexprb.c
* src/common/funcid.c
* src/common/expropt2.c
+ added compile-time optimization for HB_BCHAR()
and HB_BCODE().
* contrib/hbct/hbct.hbp
* contrib/hbct/hbct.hbx
+ contrib/hbct/ctscan.ch
+ contrib/hbct/kxlat.prg
* contrib/hbct/ctdummy.prg
* contrib/hbct/dummy.c
+ added CT compatiblity functions: SETKXLAT(), GETKXLAT(),
SETKXTAB(), GETKXTAB(). Former two replaces existing
dummy implementations. Check CT documentation for syntax.
NOTES: - KS_PAD[0-9] and KS_PAD_DECIMAL are not supported in
Harbour, because they have no corresponding inkey.ch
value.
- Harbour uses HB_GTI_INKEYFILTER to implement these
functions, and due to this, they will gracefully
fail if the application has already set
HB_GTI_INKEYFILTER to a custom value.
+ added:
HBCT_GETKXLAT( <nOrgKey>[, <nNewKey> ] ) -> <lAccepted>
HBCT_GETKXTAB( <nOrgKey> ) -> <nNewKey>
HBCT_SETKXLAT( <hTrs> ) -> <lAccepted>
HBCT_SETKXTAB() -> <hTrs>
Same as above, but they use standard inkey() values.
; USE AT YOUR OWN RISK. NO GUARANTEES.
* contrib/hbct/showtime.prg
* contrib/hbct/screen2.c
* internal fn renamed: _HB_CTDSPTIME() -> __HBCT_DSPTIME()
* include/hbdefs.h
+ Adjusted HB_SIZE_MAX value for Win64 after recent changes.
* src/vm/hashfunc.c
* src/vm/hvm.c
* src/debug/dbgentry.c
* src/common/hbwin.c
* src/common/hbfsapi.c
* src/common/hbstr.c
* src/rtl/lennum.c
* src/rtl/hbzlibgz.c
* src/rtl/hbtoken.c
* src/rtl/hbmd5.c
* src/rtl/hbregex.c
* src/rtl/hbzlib.c
* src/rtl/gtpca/gtpca.c
* contrib/hbct/screen2.c
* contrib/hbct/token2.c
* contrib/hbct/charsprd.c
* contrib/hbct/charlist.c
* contrib/hbct/charsort.c
* contrib/hbct/maxline.c
* contrib/hbct/wordrepl.c
* contrib/hbct/charrepl.c
* contrib/hbct/charswap.c
* contrib/hbct/pos1.c
* contrib/hbct/token1.c
* contrib/hbct/charmirr.c
* contrib/hbct/relation.c
* contrib/hbct/atnum.c
* contrib/hbct/count.c
* contrib/hbct/ctstrfil.c
* contrib/hbct/posdiff.c
* contrib/hbct/addascii.c
* contrib/hbct/pos2.c
* contrib/hbct/numat.c
* contrib/hbct/atrepl.c
* contrib/hbct/print.c
* contrib/xhb/txtline.c
* contrib/hbgt/strright.c
* contrib/hbgt/chrtotal.c
* contrib/hbgt/strcount.c
* contrib/hbgt/ascposgt.c
* contrib/hbgt/strleft.c
* contrib/hbgt/chrcount.c
* contrib/hbgt/strcspn.c
* contrib/hbgt/atdiff.c
* contrib/hbbz2/hbbz2.c
* contrib/hbmemio/memio.c
* contrib/hbclipsm/num.c
* contrib/hbclipsm/date.c
* contrib/hbmisc/stringsx.c
* contrib/hbmisc/spd.c
+ Using new size API.
NOTE: This will be a longer process as there many current variations
to pass sizes (*nint(), *ni(), *nl()) and there is no warning
issued in several of these.
Please also note that not all updates files became fully clean.
I will post a list of remaining warnings.
+ Type cleanup:
int -> HB_ISIZ
+ Added casts at component boundaries.
% Deleted unnecessary '( HB_SIZE )' casts.
+ ULONG_MAX -> HB_SIZE_MAX
* 'hb_retl( 0 )' -> 'hb_retl( HB_FALSE )'
* 'hb_retl( 1 )' -> 'hb_retl( HB_TRUE )'
! CSETSAFETY() fixed to return and accept logical parameters
instead of returning numeric, checking for logical but retrieving
numeric.
* src/common/hbwin.c
* DWORD -> int to be in sync with Windows API declarations.
; NOTE: I left out RDDs and VM from the areas I scanned, please
modify them. F.e. we will need a hb_vmPushSize().
; Peer review (by as much eyeballs as possible) is appreciated.
* src/vm/itemapi.c
- hb_itemGetNL() no longer works for date types.
INCOMPATIBLE. If you used it to retrieve date/time,
use hb_itemGetDL() instead.
! Fixed typo in prev addition.
* include/hbapi.h
* src/vm/arrays.c
+ Added hb_arrayGetNSize(), hb_arraySetNSize().
! Fixed old typo in TRACE() call of hb_arrayGetNInt().
* src/vm/extend.c
! Fixed typo in prev addition.
* src/rtl/filesys.c
! Applied fixed from Przemek to hb_fsReadAt()/hb_fsWriteAt()
code to be MT safe plus fix other problems.
; QUESTION: Shouls the same applied to hb_fsWriteLarge()/hb_fsReadLarge()
loops? (BTW inactive in 32-bit Harbour builds)
* contrib/hbct/screen2.c
! Type cleanup.
* contrib/hbct/pack.c
* contrib/xhb/hbxml.c
* contrib/xhb/hbxml.h
* contrib/hbgt/charmixg.c
* contrib/hbgt/charodd.c
* contrib/hbgt/strexpan.c
* contrib/hbgt/asciisgt.c
* contrib/hbgt/strright.c
* contrib/hbgt/strasint.c
* contrib/hbgt/strdiffg.c
* contrib/hbgt/chrtotal.c
* contrib/hbgt/strcount.c
* contrib/hbgt/strleft.c
* contrib/hbgt/chrfirst.c
* contrib/hbgt/chrcount.c
* contrib/hbgt/strpbrk.c
* contrib/hbgt/chareven.c
* contrib/hbgt/bitflags.c
* contrib/hbgt/strcspn.c
* contrib/hbgt/atdiff.c
* contrib/hbnf/proper.c
* contrib/hbnf/getenvrn.c
! Fixed to use Harbour size types.
* contrib/hbnf/dispc.c
! Started using Harbour type, but this is code is
deadly and needs further work. I still wonder how
to create code which mixes properly HB_FOFFSET and
HB_SIZE.
* contrib/xhb/cstructc.c
* Formatting.
* harbour/include/hbgtcore.h
* harbour/source/rtl/hbgtcore.c
* changed BYTE to USHORT in few functions which expected character
for GTs with UNICODE screen buffer
* harbour/source/rtl/gtcgi/gtcgi.c
* harbour/source/rtl/gtstd/gtstd.c
* harbour/source/rtl/gttrm/gttrm.c
* updated for USHORT used as character holder
* harbour/source/rtl/gtwvt/gtwvt.c
% minor modification
* harbour/source/rtl/gtxwc/gtxwc.c
* harbour/contrib/gtwvg/gtwvg.c
* harbour/contrib/gtwvg/wvgcore.c
* harbour/contrib/gtalleg/gtalleg.c
* updated for BYTE to int as color holder modification
* harbour/contrib/hbct/screen1.c
* harbour/contrib/hbct/screen2.c
* harbour/contrib/hbct/ctwfunc.c
* harbour/contrib/hbnf/ftattr.c
! fixed casting changing values or added casting to force strict
translation
* modified to accept color and character values with wider ranges
* harbour/contrib/hbct/ctwin.c
! removed unnecessary stripping to BYTE in character and color values
* harbour/source/rtl/console.c
* pacified warning
* include/hbgtcore.h
* include/hbapigt.h
* source/rtl/gtdos/gtdos.c
* source/rtl/gtwin/gtwin.c
* source/rtl/gtxwc/gtxwc.c
* source/rtl/gtcrs/gtcrs.c
* source/rtl/gtstd/gtstd.c
* source/rtl/gttrm/gttrm.c
* source/rtl/gtcgi/gtcgi.c
* source/rtl/gtapi.c
* source/rtl/gtos2/gtos2.c
* source/rtl/hbgtcore.c
* source/rtl/gtsln/gtsln.c
* source/rtl/gtpca/gtpca.c
* source/rtl/gtwvt/gtwvt.c
* contrib/hbct/screen2.c
* contrib/hbct/ctwin.c
* contrib/hbct/screen1.c
* contrib/hbnf/ftattr.c
* Changed color representation to be 'int' in all places.
This means changes in high level and low level GT interfaces.
; QUESTION: In hbct UCHAR is used in a few places, I didn't want to
touch it.
; Please test and review.
; TODO: Clean char type usage (from int, UCHAR, BYTE, USHORT to what?)
; TODO: Clean attr type usage to be hbU8, or HB_ATTR, or else?
* harbour/include/hbapigt.h
* harbour/source/rtl/gtapi.c
* changed last parameter of hb_gtRepChar() from USHORT uiCount to
ULONG ulCount
* removed basic parameter validation from hb_gtScroll() - such
things should be done by GT driver
* minor cleanup
* harbour/source/rtl/hbgtcore.c
% moved pbyBuffer initialization outside the loop in Rest/Save methods
* minor cleanup in casting
* harbour/source/rtl/mouse53.c
% minor optimization
* harbour/source/rtl/gtdos/gtdos.c
* changed buffer type in Mouse{Save,Restore}State methods from char *
to void *
* harbour/source/rtl/gtxwc/gtxwc.c
* harbour/source/rtl/gtcrs/gtcrs.c
! fixed casting
* harbour/source/rtl/xhelp.c
* harbour/source/rtl/console.c
% use 'int' instead of 'USHORT'
* harbour/source/rtl/saverest.c
* removed explicit casting
* harbour/source/rtl/scroll.c
* harbour/source/rtl/console.c
* harbour/contrib/hbct/screen1.c
* harbour/contrib/hbct/screen2.c
! fixed casting from 'char *' items which was wrongly changing
the results.
* harbour/contrib/hbct/screen1.c
* harbour/contrib/hbct/screen2.c
% eliminated not longer necessary intermediate variables used for
passing by reference in previous version with [U]SHORT casting
* harbour/contrib/hbnf/dispc.c
* harbour/contrib/hbnf/ftattr.c
* harbour/contrib/hbnf/ftshadow.c
* changed screen coordinates from [U]SHORT to int
* doc/whatsnew.txt
+ Updated.
* contrib/Makefile
* contrib/make_b32_all.bat
* contrib/make_gcc_all.sh
* contrib/make_vc_all.bat
- contrib/hbwhat32
+ contrib/hbwhat
* Renamed to not contain '32'.
; NOTE: I plan to do this with a couple of other
names too in the future.
* contrib/hbwhat/Makefile
* contrib/hbwhat/common.mak
- contrib/hbwhat/what32.ch
+ contrib/hbwhat/hbwhat.ch
* Renamed what32.ch to not contain '32' (and added
hb for consistency if it got renamed anyway).
* utils/hbmake/hbmake.prg
* Updated by Bill Robertson to fix too many things to
mention here. (cleaned up lots of stuff, using hb_run()s
return values, cleaned to not call main() function
recursively (!), display output cleanups, etcetc)
* hbwhat32, hbziparch lib name changes.
* contrib/examples/pp/hbppcore.c
* contrib/examples/pp/hbppcomp.c
* contrib/rddads/ads1.c
* source/pp/ppcore.c
* source/vm/asort.c
* source/vm/hvm.c
* source/rtl/disksphb.c
* source/rdd/dbfntx/dbfntx1.c
* source/rdd/workarea.c
* contrib/hbct/screen2.c
* contrib/hbct/token2.c
* while( TRUE ) -> for( ;; )
* do {} while( TRUE ) -> for( ;; ) {}
; To avoid warnings about conditions being constant.
* harbour/include/hbapigt.h
* harbour/source/rtl/gtapi.c
! changed USHORT hb_gtColorToN( char * szColorString ) to
int hb_gtColorToN( char * szColorString ) - it should be the same
type as indexes in hb_gtColorsToString() functions
* harbour/source/rtl/hbgtcore.c
* return -1 from COLORNUM() method when passed color is not
valid color string
* harbour/contrib/hbct/screen2.c
* harbour/contrib/hbct/color.c
* harbour/contrib/hbct/screen1.c
* harbour/contrib/hbct/ctwfunc.c
* harbour/contrib/hbnf/color2n.c
* harbour/contrib/gtwvg/wvtcore.c
* updated to respect -1 returned for wrong color strings
* harbour/source/rtl/tget.prg
* updated to respect -1 returned for wrong color strings
Viktor please check me, now it's simpler and hbtest does not
reports any errors so I guess that this version will work like
in Clipper also for :colorSpec := "R,X,Y,0" or similar
* harbour/source/rtl/tobject.prg
* harbour/source/debug/dbgbrwsr.prg
* formatting
* harbour/contrib/hbct/screen2.c
! fixed possible vary bad bug (memory buffer overflow) in SCREENSTR()
* harbour/source/rtl/hbffind.c
! fixed possible GPF in some *nixes
* harbour/source/vm/classes.c
! do not execute the same destructor inherited from different parent
classes more then once
* harbour/source/rtl/transfrm.c
! fixed bug with '9' used as stop condition of function pattern
this character cannot be stripped, f.e.:
? transform( "abc", "@_99*" )
! fixed bug with '*' or '$' used with @), f.e.:
? transform( -12345, "@) $999999" )
! fixed replacing '.' with ',' when @E is used without picture part, f.e.:
? transform( 123.45, "@E" )
! fixed ',' conversions
? transform( 12.34,"@E ab,cd.ef9,9.99,.--" )
! fixed bug with picture starting with ".", f.e.:
? transform( 0.3456, ".999" )
! fixed "@(" and "@)" conversions, f.e.:
? transform( -12345, "@) 1999*999" )
! fixed late oveflow detection in "@(" and "@)", f.e.:
? transtest( -12345, "@( 6798^999" )
! fixed "@E" conversion for dates to keep user delimiters set in
_SET_DATEFORMAT, f.e.:
set( _SET_DATEFORMAT, "mm:dd:yyyy" ); ? transform( date(), "@E" )
set( _SET_DATEFORMAT, "yyyy<mm>dd" ); ? transform( date(), "@E" )
Please note that Harbour is not strictly Clipper compatible here
because it respects _SET_DATEFORMAT set by user.
! fixed 64bit integer conversion by eliminating conversion to
'double' f.e.:
? transform( 1234567890123456789, "99999999999999999999" )
? transform( -1234567890123456789, "99999999999999999999" )
! some other fixes, see regression test transtst.prg
% speed improvement in numeric conversions
+ harbour/tests/transtst.prg
+ added regression test for transform function
* harbour/utils/hbtest/rt_trans.prg
* disabled transform() tests for "@E" and result smaller then 5 bytes
CA-Cl*pper do not check result size and always exchanges
bytes 1-2 with bytes 4-5 for @E conversion. It's buffer overflow
bug and I do not want to replicate it inside our transform
implementation. It also causes that the results for for strings
smaller then 5 bytes behaves randomly.
In fact precise tests can show that it's not random behavior
but CA-Cl*pper uses static buffer for result and when current one
is smaller then 5 bytes then first two bytes are replaced with
4-5 bytes from previous result which was length enough, f.e.:
? transform( "0123456789", "" )
? transform( "AB", "@E" )
? transform( "ab", "@E" )
Replicating exact CA-Cl*pper behavior it's trivial (it will be enough
to use static buffer two and not check the size of current result) but
IMHO it's bug.
* harbour/source/rtl/round.c
* added strictly Clipper compatible code covered by HB_C52_STRICT
and comment about possible difference in Harbour.
* harbour/include/hbgtinfo.ch
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/gtxwc/gtxwc.c
* harbour/source/rtl/gtsln/gtsln.c
* harbour/source/rtl/gttrm/gttrm.c
* harbour/source/rtl/gtwvt/gtwvt.c
+ added HB_GTI_ISUNICODE - it returns logical value with information
about Unicode mode in active GT driver - it's necessary for proper
CP initialization in some GTDs which can work in both mode depending
on client side settings
* harbour/source/rtl/gttrm/gttrm.c
* improved UTF-8 detection
* added automatic PuTTY detection
* improved PuTTY and some xterm key handling
* added some missing RXVT keys