* config/postinst.hbs
* implemented same ASORT() fix as in prev commit by Przemek.
(it may be important once we modify hbrun/hbmk2 to run
scripts under UTF8 CP)
* contrib/hbnetio/utils/hbnetio/modules.hbp
- contrib/hbnetio/utils/hbnetio/rpcdemo.hbs
+ contrib/hbnetio/utils/hbnetio/rpcdemo.hb
- contrib/hbide/plugins/hbide_script_qtgui.hbs
+ contrib/hbide/plugins/hbide_script_qtgui.hb
- contrib/hbide/plugins/hbide_plugin_savebackup.hbs
+ contrib/hbide/plugins/hbide_plugin_savebackup.hb
- utils/hbmk2/examples/plug_tpl.hbs
+ utils/hbmk2/examples/plug_tpl.hb
- tests/stripdoc.hbs
+ tests/stripdoc.hb
* .hbs -> .hb for Harbour scripts.
* tests/stripdoc.hb
+ use directry.ch
* harbour/include/hbdefs.h
* moved HB_WCHAR definition from hbapicdp.h to hbdefs.h
* harbour/include/hbapicdp.h
* harbour/include/hbcdpreg.h
* harbour/src/rtl/cdpapi.c
* harbour/src/rtl/cdpapihb.c
+ added support for custom sorting redirected from HVM
+ added support for custom character indexes in strings
+ added support for custom character flags (upper, lower, alpha, digit)
+ added support for custom upper/lower conversions
+ added support for CPs using unicode character values instead of
ASCII ones
+ added new CP functions which respects custom CP settings:
hb_cdpUpperWC(), hb_cdpTextLen(), hb_cdpTextPos(),
hb_cdpTextPosEx(), hb_cdpTextGetU16(), hb_cdpTextPutU16(),
hb_cdpCharEq(), hb_cdpCharCaseEq()
+ added new conversion functions:
hb_cdpGetUC(), hb_cdpGetWC(), hb_cdpGetU16Ctrl()
+ added macros to detect codepage parameters:
HB_CDP_ISBINSORT() - codepage uses simple binary sorting
HB_CDP_ISCUSTOM() - codepage uses custom string decoding
HB_CDP_ISCHARIDX() - codepage use character indexes instead
of bytes ones
HB_CDP_ISCHARUNI() - CHR(), ASC() and similar functions operates
on Unicode values instead of bytes
HB_CDP_ISUTF8() - codepage uses UTF-8 encoding
* harbour/include/inkey.ch
- removed HB_INKEY_EXTENDED - it was not used in Harbour
+ added new flag HB_INKEY_EXT - it allows to used different
event encoding system with automatic translation to
standard Clipper values. It will be used in the future
as base for low level GTs code. Now it's possible to
selectively switch to the new system. New codes are
unique and do not interacts with Clipper.
+ added HB_INKEY_ALL macro - it's similar to INKEY_ALL but
enables also GTEVENT keys.
* harbour/include/hbgtcore.h
* harbour/src/rtl/hbgtcore.c
* changed character values in internal screen buffer to unicode.
Warning: this modification interacts with SAVESCREE()/RESTSCREEN()
data. Now all GTs uses extended definition. If somene
has code which needs VGA like screen buffers returned
by SAVESCREE() then it can be forced by
hb_gtInfo( HB_GTI_COMPATBUFFER, .t. )
Anyhow it will for to use only one CP in output.
+ added new GT methods which operated on HB_WCHAR values
* modified existing methods using HB_WCHAR/HB_USHORT parameters
to operate on HB_WCHAR values
+ added codepage conversion code directly to core code so it can
be eliminated from low level GT drivers which do not need some
special operations on it.
+ added support for extended inkey codes, they allow to encoded
unicode values, mouse events with flags, keyboard events with
modifier flags (shift,alt,ctrl,...), etc.
Now in low level GT code only unicode key values are used but
I plan to updated all GTs and switch to new code - it should
resolve many small problems inheriting with Clipper inkey codes.
* harbour/include/hbapifs.h
* moved hb_fsNameConvU16() definition from hbapicdp.h to hbapifs.h
* harbour/include/hbxvm.h
- removed comment copied by mistake from GT header file
* harbour/include/hbwinuni.h
* changed HB_CHARDUP() and HB_CHARDUPN() macros - now they
operate on functions which can be used without active HVM.
In such case ANSI CP is used as source encoding.
+ added new macros: HB_OSSTRDUP() and HB_OSSTRDUP2().
They make conversions from OS encoding to HVM one.
They can be used without active HVM and in such case ANSI CP
is used as destination encoding.
* harbour/include/hbapi.h
* harbour/src/vm/cmdarg.c
+ added new function hb_cmdargProgName()
It returns application name with path or NULL if not set,
caller must free returned value with hb_xfree() if not NULL.
The string is in HVM encoding so it does not need any additional
encodings.
* modified hb_cmdargString() to return strings in HVM encoding.
% some small code optimizations
; NOTE: parameters passed to MS-WINDOWS GUI programs which use
WinMain() instead of main() as startup entry are translated
to ANSICP before they can be accessed by application.
This can be eliminated though not for console programs
using where C compiler makes such translation to main()
parameters.
in all systems parameters are passed to application
startup and init functions before programmer can set OS CP.
This can be resolved by adding:
INIT PROC CLIPINIT()
SET( _SET_CODEPAGE, <userCP> )
SET( _SET_OSCODEPAGE, <systemCP> )
RETURN
to linked code. INIT procedures called CLIPINIT() are
executed before any other ones.
* harbour/include/hbapi.h
* harbour/src/vm/set.c
+ added new functions for CP converisons which can be used with
and without active HVM:
hb_osStrEncode(), hb_osStrEncodeN(),
hb_osStrDecode(), hb_osStrDecode2(),
hb_osStrU16Encode(), hb_osStrU16EncodeN(),
hb_osStrU16Decode(), hb_osStrU16Decode2(),
* harbour/include/hbvm.h
* harbour/src/vm/hvm.c
+ added new function hb_vmIsReady() - it's similar to hb_vmActive()
but it also checks if current thread has active HVM stack.
* moved hb_cdpReleaseAll() to the end of HVM cleanup code so
CP conversions are longer active.
* harbour/include/hbcomp.h
* harbour/src/compiler/cmdcheck.c
* harbour/src/compiler/hbusage.c
* harbour/src/common/expropt2.c
+ added new compiler switch:
-ku - strings in user encoding
Now it informs compiler that strings use custom encoding so some
optimizations which are byte oriented cannot be used.
It's possible that in the future we will change above definition
to sth like: "strings in UTF8 encoding" but now I would like to
keep more general.
* harbour/src/vm/macro.c
* inform macrocompiler about custom CPs using own character indexes
to disable byte oriented optimizations.
* harbour/include/hbapigt.h
* harbour/src/rtl/gtapi.c
* harbour/src/rtl/inkeyapi.c
+ added HB_B_*_W macros with unicode box character definitions
+ added HB_MBUTTON_* macros
+ added new GT functions: hb_gtHostCP() and hb_gtBoxCP() which
allows to extract CPs used in translations by GTs.
+ added new function hb_inkeyKeyString() - it converts inkey value
to corresponding string
+ added new function hb_inkeyKeyStd() - it converts new extended
key value to standard Clipper one.
* harbour/include/hbapifs.h
* harbour/src/common/hbffind.c
* moved OS codepage translations fully to hb_fsFind*() functions.
It fixes few problems which existed before, i.e. double CP
conversions in MS-Windows builds and simplifies upper level code.
* harbour/src/pp/hbpp.c
* harbour/src/rtl/direct.c
* harbour/src/rtl/fssize.c
* harbour/src/rtl/file.c
* harbour/contrib/hbct/files.c
* eliminated not longer necessary CP conversions in code calling
hb_fsFind*() functions.
* harbour/src/common/hbgete.c
* moved OS codepage translations to hb_getenv(), hb_getenv_buffer()
and hb_setenv() functions. It fixes few problems which existed
before, i.e. double CP conversions in MS-Windows builds and
simplifies upper level code.
* harbour/src/rtl/net.c
* harbour/src/rtl/gete.c
* eliminated not longer necessary CP conversions in code calling
hb_getenv()/hb_setenv() functions.
; NOTE: additional parameters in HB_GETENV() and HB_SETENV() which
disabled CP conversions are not longer supported.
They were strictly platform dependent and ignored in chosen
cases (i.e. in MS-Windows UNICODE builds we always have to
convert strings transferred between HVM and OS. If someone
needs old functionality for other platform then he should
temporary disable _SET_OSCODEPAGE.
* harbour/src/common/hbver.c
* harbour/src/common/hbfsapi.c
* harbour/src/rtl/fstemp.c
* harbour/src/rtl/fslink.c
* eliminated HB_TCHAR_*() macros
* harbour/src/common/strwild.c
+ added supprot for custom CPs using own character indexes in:
hb_strMatchWild(),
hb_strMatchWildExact(),
hb_strMatchCaseWildExact()
* harbour/src/nortl/nortl.c
+ added new dummy function replacement for binaries which are not
linked with HVM.
* harbour/src/rtl/filesys.c
! fixed double CP conversions in MS-Windows builds of hb_fsCurDirBuff()
* use hb_vmIsReady() instead of hb_stackId() in file name conversions.
* use hb_cmdargProgName() in hb_fsBaseDirBuff()
* harbour/src/rtl/philes.c
* use hb_cmdargProgName() in HB_PROGNAME() function.
* harbour/src/rtl/gtcgi/gtcgi.c
* harbour/src/rtl/gtstd/gtstd.c
* harbour/src/rtl/gtpca/gtpca.c
* harbour/src/rtl/gtdos/gtdos.c
* harbour/src/rtl/gtos2/gtos2.c
* harbour/src/rtl/gtwin/gtwin.c
* harbour/src/rtl/gtwvt/gtwvt.h
* harbour/src/rtl/gtwvt/gtwvt.c
* harbour/src/rtl/gttrm/gttrm.c
* harbour/src/rtl/gtcrs/gtcrs.c
* harbour/src/rtl/gtsln/gtsln.c
* harbour/src/rtl/gtsln/kbsln.c
* harbour/src/rtl/gtsln/gtsln.h
* harbour/src/rtl/gtxwc/gtxwc.h
* harbour/src/rtl/gtxwc/gtxwc.c
* harbour/contrib/gtwvg/gtwvg.c
* harbour/contrib/gtwvg/gtwvg.h
* harbour/contrib/gtalleg/gtalleg.c
* harbour/contrib/hbqt/gtqtc/gtqtc.cpp
* harbour/contrib/hbqt/gtqtc/gtqtc.h
* updated to work with new unicode GT API
please make tests with different GTs - I'm not able to test
all of them, i.e. I do not have any OS2 machine.
* harbour/src/rtl/box.c
* harbour/src/rtl/oldbox.c
* harbour/src/rtl/scroll.c
* harbour/src/rtl/console.c
* updated to work with new unicode GT API and
CPs using custom character indexes
* harbour/src/rtl/at.c
* harbour/src/rtl/ati.c
* harbour/src/rtl/rat.c
* harbour/src/rtl/len.c
* harbour/src/rtl/transfrm.c
* harbour/src/rtl/left.c
* harbour/src/rtl/right.c
* harbour/src/rtl/substr.c
* harbour/src/rtl/stuff.c
* harbour/src/rtl/padc.c
* harbour/src/rtl/padl.c
* harbour/src/rtl/padr.c
* updated to work with CPs using custom character indexes
* harbour/src/rtl/chrasc.c
+ added support for HB_CDP_ISCHARUNI() CPs.
* harbour/src/rtl/mlcfunc.c
* rewritten from scratch to work with CPs using custom character
indexes
* harbour/src/rtl/accept.c
* updated to work with unicode inkey values and
CPs using custom character indexes
* harbour/src/rtl/strmatch.c
% small optimization
* harbour/src/rtl/Makefile
+ harbour/src/rtl/chruni.c
+ added new PRG functions which allows to make byte/binary and
unicode/character operations on strings:
HB_UCHAR( <nCode> ) -> <cText>
return string with U+nCode character in HVM CP encoding
HB_BCHAR( <nCode> ) -> <cText>
return 1 byte string with <nCode> value
HB_UCODE( <cText> ) -> <nCode>
return unicode value of 1-st character (not byte) in given string
HB_BCODE( <cText> ) -> <nCode>
return value of 1-st byte in given string
HB_ULEN( <cText> ) -> <nChars>
return string length in characters
HB_BLEN( <cText> ) -> <nBytes>
return string length in bytes
HB_UPEEK( <cText>, <n> ) -> <nCode>
return unicode value of <n>-th character in given string
HB_BPEEK( <cText>, <n> ) -> <nCode>
return value of <n>-th byte in given string
HB_UPOKE( [@]<cText>, <n>, <nVal> ) -> <cText>
change <n>-th character in given string to unicode <nVal> one and
return modified text
HB_BPOKE( [@]<cText>, <n>, <nVal> ) -> <cText>
change <n>-th byte in given string to <nVal> and return modified
text
* harbour/src/rtl/hbdoc.prg
* harbour/src/rtl/memvarhb.prg
* use HB_BCHAR() for binary string definitions
* harbour/src/rtl/hbi18n2.prg
* use hb_utf8CHR( 0xFEFF ) instead of hardcoded binary sting and
HB_BLEN() instead of LEN()
* harbour/src/rtl/inkey.c
+ added new functions:
HB_KEYCHAR( <nKey> ) -> <cChar>
HB_KEYSTD( <nExtKey> ) -> <nClipKey>
! use HB_INKEY_ALL instead of INKEY_ALL in LASTKEY()
* harbour/src/rtl/achoice.prg
* harbour/src/rtl/browse.prg
* harbour/src/rtl/menuto.prg
* harbour/src/rtl/tgetlist.prg
* harbour/src/rtl/teditor.prg
* harbour/src/rtl/tlabel.prg
* harbour/src/rtl/tpopup.prg
* harbour/src/rtl/radiobtn.prg
* harbour/src/rtl/radiogrp.prg
* harbour/src/rtl/wait.prg
* updated to work with unicode inkey() values
* harbour/src/rtl/listbox.prg
* use box.ch macros instead of explicit CHR(...) definitions
* harbour/src/rtl/ttopbar.prg
* updated to work with different type of CPs
* harbour/src/rtl/scrollbr.prg
* formatting
* harbour/src/rtl/mouse53.c
* use HB_MBUTTON_* macros instead of local ones
* harbour/src/codepage/cp_utf8.c
+ harbour/src/codepage/uc16def.c
+ harbour/src/codepage/utf8sort.c
* replaced UTF8ASC with new CP: UTF8EX
This CP uses character indexes instead of bytes one
and operates on unicode characters flags.
Tables for upper/lower conversions and upper/lower/alpha/digit
flags were generated automatically from
http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
It also uses custom collation rules. It's very simple one
level sorting based on UTF8 C collation.
If someone needs some advanced sorting rules, then it's enough
to create copy of this cp with user custom version of UTF8_cmp()
and UTF8_cmpi() functions, i.e. they can be redirected to some
external library like ICU (icu-project.org).
* harbour/contrib/hbct/ctwin.c
* harbour/contrib/hbct/ctwin.h
* harbour/contrib/hbct/ctwfunc.c
* added support for new unicode GT API
* harbour/contrib/xhb/xhbfunc.c
* redirected HB_CMDARGARGV() to HB_PROGNAME()
* harbour/contrib/hbnf/origin.c
* redirected FT_ORIGIN() to HB_PROGNAME()
* harbour/contrib/hbnf/getenvrn.c
! windows version of FT_GETE() fully rewritten - it should
fix well known problems reported to the devel list. Please test.
% small optimization for other systems
* harbour/contrib/hbfship/exec.c
* use hb_cmdargProgName() in EXECNAME()
+ harbour/tests/uc16_gen.prg
+ added code which generates tables with unicode character flags
from http://www.unicode.org/Public/UNIDATA/UnicodeData.txt.
harbour/src/codepage/uc16def.c was generated by this code.
* harbour/tests/inkeytst.prg
* harbour/tests/wvtext.prg
* harbour/tests/gtkeys.prg
* use HB_INKEY_ALL
* harbour/include/harbour.hbx
* harbour/include/hbcpage.hbx
* harbour/include/hblang.hbx
* regenerated
; It was quite big peace of modifications and for sure not everything
is well tested so please make test and report problems you will find.
; This is basic version which introduce to HVM CPs with custom encodings.
Some contrib code has to be updated to work correctly with it.
I hope that developers interesting in will make necessary updates.
I haven't touched GTWVW code at all - sorry but it needs very serious
work to make it production ready and fix all existing problems.
; Special thanks to OTC - this firm sponsored adding basic UTF8 support
to HVM.
* src/3rd/pcre/Makefile
+ enabled UTF8 support in PCRE (binary size overhead ~150KB)
+ enabled unicode properties support in PCRE (binary size overhead ~50KB)
* src/rtl/hbregex.c
+ added commented logic to detect UTF8 support in PCRE
and enable UTF8 mode when the HVM CP is also UTF8. Latter
logic is missing yet and subject to review.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* contrib/hbnetio/utils/hbnetio/netiomgm.prg
* contrib/hbrun/hbrun.prg
* tests/ac_test.prg
* tests/ac_test2.prg
* tests/tstmacro.prg
* tests/tstalias.prg
* formatted using automatic tools
* src/rtl/fslink.c
+ replaced HB_TCHAR_CONVTO() with HB_FSNAMECONV() on win
+ added hb_fsNameConv() support on *nix
!!! review me !!!
! HB_FLINKSYM()/hb_fsLinkSym() fixed to work with directories on win,
performance should be better also
! HB_FLINKREAD()/hb_fsLinkRead() fixed to return information for
directories on win.
+ HB_FLINKREAD()/hb_fsLinkRead() now returns value in core codepage.
TOFIX: It crashes now on *nix, after hours of trying I give up,
please review the hb_osDecodeCP() call and fix it.
; TODO: this leaves only one HB_TCHAR_COPYFROM() macro in this file.
* tests/flink.prg
! fixed typo in HB_FLINKSYM() directory test
* minor cleanup for directory link name
* harbour/include/hbcdpreg.h
+ added few macros for extended CP definition
* harbour/src/codepage/cp_big5.c
* harbour/src/codepage/cp_utf8.c
* harbour/src/codepage/cp_u16le.c
* updated macros for CP definition
* harbour/tests/big5_gen.prg
% added small improvement in code hashing character
translation tables so they are a little bit smaller
* harbour/src/codepage/big5.c
* regenerated
* tests/testdyn.prg
! fixed typo discovered by Alex Strickland. Thank you.
* contrib/hbrun/hbrun.hbp
- deleted unfinished solution for "DSO" builds (having two
TOFIXes for many months). Please supply required extra libs
('m' and 'z' in case of hbrun) manually to the build via
HB_USER_LDFLAGS, HB_USER_LIBS, until a complete solution is
discovered.
* harbour/src/rtl/gtxwc/gtxwc.c
! create initial console window in fullscreen mode if user called
hb_gtInfo( HB_GTI_ISFULLSCREEN, .T. )
before window was created
* harbour/tests/gtkeys.prg
* modified to optionally test different CPs some extended GT keys
* src/rtl/tget.prg
! fixed RTE when setting :picture to NIL for
N and C types in some certain rare circumstantances.
The :picture setting operation is ignored in such case,
since the internally stored original value is not known.
Tested OK against CA-Cl*pper 5.3, though maybe it's
possible to refine this even further with more test cases.
* tests/rto_get.prg
+ added test case for RTE reported by Quique
! fixed warnings
* harbour/src/rtl/filesys.c
* harbour/src/rtl/hbproces.c
! use hb_fsOsError() instead of errno which can be overwritten by
by hb_fsSetIOError()
* harbour/tests/gtxfnt.prg
% hb_processRun() instead of hb_processOpen()/fread()/hb_processClose()
+ set font attributes: HB_GTI_FONTA_FIXMETRIC, HB_GTI_FONTA_CLRBKG,
HB_GTI_FONTA_DRAWBOX
* contrib/hbformat/hbfmtcls.prg
! fixed casing of some function names.
* utils/hbmk2/hbmk2.prg
; all changes below apply to .xhp (xMate) to .hbp conversion:
! properly convert input filenames with spaces in them
! remove lib prefix from .a input filenames
% do not add empty -L options
* do not add include paths with %HB_INSTALL%\ in them
+ split non-portable, Borland-specific include path lists
concatenated with ';' into distinct -I options
% do not add empty include paths
* tests/testop.prg
* tests/testntx.prg
* tests/vmasort.prg
* tests/testlbl.prg
* tests/testidle.prg
* tests/videotst.prg
* tests/testmem.prg
* tests/testinit.prg
* tests/testhtml.prg
* tests/tstcolor.prg
* tests/vidtest.prg
* tests/tstuse.prg
* tests/vec1.prg
* tests/while.prg
* tests/tstdspac.prg
* tests/version.prg
* tests/testpre.prg
* tests/tstprag.prg
* formatted. mostly with hbformat.
* doc/howtosvn.txt
+ added extra rules to "1.3 Here's how to format your ChangeLog entries"
section.
* Change markup is not optional anymore, pls stick to it.
* contrib/hbcups/tests/test.prg
* contrib/hbcups/readme.txt
+ Added more test code and extra info to hbcups.
Update provided by Dr. Claudia Neumann (with my minor fixes/formatting).
Many thanks!
* contrib/hbpgsql/rddcopy.c
* contrib/hbpgsql/hbpgsql.h
! svn props
* tests/testtok.prg
* tests/testrdd.prg
* tests/tstchbx.prg
* tests/tstblock.prg
* tests/ticktime.prg
* tests/testvars.prg
* tests/tstasort.prg
* tests/testprof.prg
* tests/testread.prg
* tests/testrpt.prg
* tests/teststr.prg
* formatting.
* src/rtl/gtwvt/gtwvt.h
* src/rtl/gtwvt/gtwvt.c
* tests/wvtext.prg
+ Massive GTWVT patch from Heinz V. Bergen. Thank you very much.
Details:
- fixed Alt-Enter for full screen, will no longer send the
K_ENTER to the Input queue.
- HB_K_RESIZE only sent if the Rows/Cols size actually changed.
- Clicking Maximize (top right corner) button, will maximize window
and change to Restore button, then clicking Restore button will
restore the window to its previous size.
- Dbl-clicking Title-Bar will maximize, then Dbl-Clicking Title
bar again will restore.
- Resizing window when in RESIZEMODE_FONT, will dynamically display
the resulting size changes in real time.
- All Maximize / Restore / Sizing works in RESIZEMODE_ROWS as would
be expected.
- Windows 7, dragging Window (Title-Bar) to top of screen will maximize,
then dragging maximized window's Title bar down will Restore
to previous size.
- Windows 7, dragging Window (Title-Bar) left or right until mouse
pointer hits the edge of the screen will size and dock to the left
or right half of the screen, then dragging title bar away from docked
position will restore the Window to its previous size.
- Windows 7, resizing top or bottom until edge of screen hit
(or dbl-clicking) will resize for maximum height. Then dragging
title bar away will restore to previous size.
- Before, depending on monitor's resolution, and when using
Courier New or Terminal font, maximizing would fail due to Font
metrics being incompatible with the Window's size or maybe due to
math issues, I was able to resolve by slightly adjusting the Font's
width or height down and then trying again until successful.
- Pressing Alt-Enter (when enabled) for full screen mode and then
pressing Alt-Enter again will restore Window to previous
non-maximized size.
- extended GT test app
; Please make test and report any experiences on devel list
* include/harbour.hbx
* src/vm/runner.c
+ HB_HRBGETFUNLIST() -> <aArray>: New function posted to the
list by Francesco Saverio Giudice
(NOTE: I changed the name a little bit)
* tests/gfx.prg
! fixed console output. Patch by Tamas Tevesz
* changed rest of ? commands to outstd()
* harbour/src/vm/thread.c
* renamed hb_criticalCode() to hb_mutexEval()
* harbour/src/rtl/cdpapi.c
* added HB_CODEPAGE_ANNOUNCE( UTF8 ) so user can use
REQUEST HB_CODEPAGE_UTF8
in PRG code.
* harbour/tests/big5_gen.prg
; added note about characters mapped to U+FFFD REPLACEMENT CHARACTER
in BIG5.TXT and iconv mapping for the same characters.
* 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/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/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/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/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.
* contrib/hbrun/hbrun.prg
+ Added GTWVT on win builds.
* src/rtl/gtcrs/gtcrs.c
! Typo in comment.
* src/rtl/errapi.c
! Deleted old TOFIX most pbly not relevant anymore.
* tests/testid.prg
! Deleted old TOFIX and formatting.
* 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.
* src/rtl/base64d.c
! Fixed crash when empty or non-string parameter was passed to HB_BASE64DECODE().
+ tests/base64.prg
+ Added base64 test suite. [Tamas]
* 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.
* contrib/hbformat/hbformat.prg
! Fixed to recognize ENDSWITCH.
+ Added vague TOFIX section. F.e. OTHERWISE is also not recognized,
and increment/decrement statements have space separator added
between variable name and operator (i ++), same is true for negative
literals (- 1).
* Formatting.
* tests/gfx.prg
! Typo in prev modification.
* contrib/hbformat/hbformat.prg
* Formatting.
! Fixed camelcasing of some function names in formatting code.
% Optimized when forming long string constants.
* tests/gfx.prg
! Fixed -w3 warning.
* Formatted.
* contrib/hblzf/tests/test.prg
* contrib/hblzf/hblzf.c
* contrib/hblzf/hblzf.hbp
+ contrib/hblzf/hblzf.ch
* Re-renamed HB_LZF_*() pure wrapper functions to LZF_*().
% Deleted unnecessary HB_SIZE casts.
! Fixed formatting to Harbour standard in new code.
! Added HB_ prefix to locally rolled macros.
+ Moved locally rolled macros to separate .ch file.
! Fixed test to use hblzf.ch instead of repeating macro definitions.
; TOFIX: errno.h. Replace with HB_LZF_* values?
* tests/wvtext.prg
! Fixed -w3 warnings.
* harbour/tests/cpinfo.prg
* small modification for non latin CPs having first lower letter before
upper
* keep signature for generated CP files as "$Id' + "$" to avoid
automatic replacing by SVN
* 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
* harbour/contrib/hbct/bitnum.c
! fixed && operator wrongly used instead of & in function NumMirr()
* harbour/contrib/rddads/ads1.c
* removed variable declaration which was hiding other one
with the same name
* harbour/src/rtl/hbdyn.c
* harbour/src/rtl/gtsln/mousesln.c
* harbour/src/rtl/gtsln/kbsln.c
* harbour/tests/bldtest/bldtest.c
! aded mising ( void ) to declarations of functions
without parameters ()
* src/vm/Makefile
* src/vm/mainwin.c
* src/vm/hvm.c
* src/vm/cmdarg.c
* src/vm/vmmt/Makefile
* utils/hbmk2/hbmk2.prg
* config/global.mk
* config/cygwin/global.mk
+ Cygwin related patch from Tamas Tevesz.
- Fixing cygwin dynamic lib name
- Dynamic lib linking
- defining __PLATFORM__CYGWIN in cross-platform builds
* src/rtl/dateshb.c
+ tests/dttest.prg
+ HB_DATETIME() got new, optional nYear, nMonth, nDay, nHour, nMinute, nSecond, nFragment
parameters. If passed, it will return date or timestamp based on passed parameters
instead of current timestamp.
Based on initiative and code by Carlos Bacco. Thank you!
* contrib/hbsqlit3/hbsqlit3.c
- Reverted UTF8 patch in 2010-11-01 00:05 UTC+0200.
+ Replaced above solution with transparent one, using
Str API usage and extended it for all places where UTF8
strings are expected or returned by sqlite3 API.
Please test. This clears an old TOFIX.
+ Added TOFIX for raw pointer usage.
* contrib/hbqt/qtgui/g/QApplication.cpp
* contrib/hbqt/qtgui/qth/QApplication.qth
! Fixed to wrap one declaration in HB_EXTERN_BEGIN/END.
* ChangeLog
* include/harbour.hbx
* src/rtl/Makefile
+ src/rtl/libname.prg
+ tests/libname.prg
+ Added HB_LIBNAME( <cDynLibName>[, <cDynLibDir> ] ) -> <cOSDynLibName>
Serves to convert a raw dynlib name, f.e. "hbct" to OS specific
notation, by adding platform specific extension, lib name prefix and
optional directory
* utils/hbmk2/hbmk2.prg
! Fixed dynlib prefix for symbian
* contrib/hbqt/tests/wvtqt.hbp
* contrib/hbxbp/tests/wvtqt.hbp
! Added missing SVN header.
% Cleanup.
* INSTALL
* contrib/hbpost.hbm
* config/global.mk
* Changed HB_BUILD_IMPLIB to HB_INSTALL_IMPLIB to reflect
new meaning after recent changes. With new build system
the implibs are always created in lib working dir, and
this setting only controls whether to copy it to final
install directory. The default is still 'no'. Setting it
to yes is only recommended if the installation will be
used in local environment (3rd party .dlls) only. IOW
never set this to yes when creating a build for other
users (f.e. for distribution).
INCOMPATIBLE if you used this setting, pls change it now.
* INSTALL
+ Documented HB_STATIC_* options.
* contrib/make.hbs
* Updated TODO list.
* src/debug/debugger.prg
* src/rtl/dirscan.prg
* tests/wcecon.prg
* contrib/xhb/traceprg.prg
* contrib/hbqt/tests/wvtqt.hbp
* contrib/hbqt/generator2/hbqtgen2.prg
* contrib/hbxbp/tests/demoxbp.prg
* contrib/hbxbp/tests/dialogqt.prg
* contrib/hbxbp/tests/wvtqt.hbp
* contrib/hbhpdf/tests/harupdf.prg
* contrib/gtwvg/tests/wvgtbrowser.prg
* contrib/gtwvg/tests/wvgwvtclasses.prg
* contrib/hbtip/tests/dbtohtml.prg
* contrib/hbtip/mail.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idetools.prg
* contrib/hbide/idesources.prg
* contrib/hbide/hbide.prg
* examples/uhttpd2/umain.prg
* examples/hbvpdf/tests/pdf_demo.prg
* examples/httpsrv/uhttpd.prg
* examples/httpsrv/cgifunc.prg
* examples/httpsrv/modules/tableservletdb.prg
* examples/httpsrv/session.prg
* HB_OSPATHSEPARATOR() -> HB_PS()
% Delete temp vars along the way.
* utils/hbmk2/hbmk2.prg
+ Generalized internals for support for older Harbour and
xhb versions.
+ Added -hb20 option. (thanks for asking for it so nicely ;)