* harbour/include/hbapi.h
* harbour/src/vm/cmdarg.c
! fixed to compile without UNICODE macro
+ added new C functions: hb_cmdargBaseProgName(), hb_cmdargPushArgs()
* marked places which needs TCHAR conversions in MS-Windows builds
* harbour/src/vm/hvm.c
* use hb_cmdargPushArgs()
* harbour/src/rtl/hbproces.c
! fixed to compile without UNICODE macro
* harbour/src/rtl/gtxwc/gtxwc.c
* modified code to set window title to always operate on UTF8 values
* use hb_cmdargBaseProgName()
* harbour/src/rtl/gtwvt/gtwvt.c
* harbour/contrib/gtwvg/gtwgud.c
* harbour/contrib/gtwvg/gtwvgd.c
* harbour/contrib/gtalleg/gtalleg.c
* harbour/extras/gtwvw/gtwvwd.c
* use hb_cmdargBaseProgName()
* harbour/contrib/hbodbc/odbc.c
! keep references to parent handles in sub-handles pointer structures
; please make real life tests if it works correctly
* contrib/hbhttpd/readme.txt
* doc/dirstruc.txt
* doc/xhb-diff.txt
* include/hbapi.h
* INSTALL
* NEWS
* src/common/hbver.c
* src/main/harbour.c
* src/pp/hbpp.c
* src/rtl/version.c
* src/vm/cmdarg.c
* Avoiding the word "SVN" (use 'source repository',
'repository' or 'repo' for short)
* Added new names that don't refer to SVN:
C level:
- hb_verRevision() (was: hb_verSvnID())
- hb_verChangeLogID() (was: hb_verSvnChangeLogID())
- hb_verChangeLogLastEntry() (was: hb_verSvnLastEntry())
.prg level:
- HB_VER_REVID built-in macro (was: HB_VER_SVNID)
; Old functions/macros will be deleted after next major
revision, start using the new names until then.
* harbour/contrib/hbct/misc1.c
% optimized XTOC()
* harbour/doc/xhb-diff.txt
* added some additional description to the section
OOP AND CLASS OBJECT/CLASS MESSAGES
* harbour/doc/Makefile
* added xhb-diff.txt
* harbour/include/hbapi.h
* harbour/src/vm/arrays.c
+ added new C function hb_arrayFromId()
* harbour/contrib/hbqt/qtcore/hbqt_bind.cpp
* use hb_arrayFromId() instead of local hb_arrayCreateClone()
with hb_arrayPushBase() inside
* do not use hbvmint.h
! fixed few bugs in this code. I haven't analyzed this code deeply
and how it's used so I cannot say it's correct. I only fixed few
completly wrong places which caused HVM stack corruption, internal
GC item list corruption or were completly dummy calls.
* include/hbapi.h
- deleted unused old HB_BASEARRAY_PTR type. INCOMPATIBLE.
Same as PHB_BASEARRAY, use this instead.
* include/hbtypes.h
* src/vm/maindllp/dllext.c
+ added hb_macroTextValue() to hbmaindllp.
; TODO: rename all HB_ITEM_PTR to PHB_ITEM and delete former.
pls shout if there is any difference in usage between
these two.
* 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/vm/hashes.c
* src/vm/hashfunc.c
+ implemented posibility to use hashes a sorted arays with binary search.
Implemented HB_BOOL hb_hashScanSoft( pHash, pKey, &nPos ). Function
if similar to, but returns nPos even if pKey is not found in pHash.
Extended HB_HHASKEY( aHash, xKey [, @nPos ] ) --> lFound
Function optionaly returns position of the item with a largest key
smaller or equal to xKey. If xKey is less than all keys in hash,
zero position is returned. I.e.,
aHash := {10=>, 20=>}
? HB_HHASKEY( aHash, 5, @nPos ), nPos // .F. 0
? HB_HHASKEY( aHash, 10, @nPos ), nPos // .T. 1
? HB_HHASKEY( aHash, 15, @nPos ), nPos // .F. 1
? HB_HHASKEY( aHash, 20, @nPos ), nPos // .T. 2
? HB_HHASKEY( aHash, 25, @nPos ), nPos // .F. 2
* include/hbapi.h
* src/rtl/hbrandom.c
+ Changed Harbour's core pseudo-random generator from STD C rand()/srand()
to superior implementation. New implementation fixed MT problems with
the standard solution on certain targets (f.e. win/mingw, win/msvc)
Based on Przemek's patch which is in turn based on algorithm by
Steve Park: http://www.cs.wm.edu/~va/software/park/ suggested by me
on the list. Further modifications:
* HB_RANDOMINTMAX() adapted. Checkme, I'm not sure about this.
* HB_RANDOMSEED() updated.
+ headers cleaned, copyright updated, note added
+ automatic seed defaulting like in previous version (checkme,
we may as well drop it, though it will be create incompatibility)
; per-thread seed didn't work well for me (even with new engine)
so I didn't implement it.
+ added proto for hb_random_seed()
* include/extend.api
* include/harbour.hbx
* include/hbdefs.h
* include/hbapi.h
* include/hbvm.h
* include/hbapigt.h
* include/clipdefs.h
- src/pp/pplib3.c
* src/pp/Makefile
* src/vm/hvm.c
* src/rtl/hbtoken.c
* src/rtl/inkey.c
* src/rdd/usrrdd/usrrdd.c
* contrib/hbmysql/hbmysql.hbx
- contrib/hbmysql/mysqlold.c
* contrib/hbmysql/mysql.c
* contrib/hbmysql/hbmysql.hbp
* contrib/hbmysql/mysql.ch
* contrib/hbpgsql/hbpgsql.hbx
* contrib/hbpgsql/postgres.c
* contrib/hbwin/hbwin.hbp
* contrib/hbwin/hbwin.hbx
- contrib/hbwin/legacy.prg
- contrib/hbwin/legacycd.c
- contrib/hbwin/legacyco.c
- contrib/hbwin/legacycp.c
* contrib/hbodbc/hbodbc.hbx
- contrib/hbodbc/odbcold.c
* contrib/hbodbc/odbc.c
* contrib/hbodbc/hbodbc.hbp
* contrib/hbtip/utils.c
* contrib/hbtip/hbtip.hbx
* deleted things marked with HB_LEGACY_LEVEL3, finishing cleanup
job started many years ago.
; this also means that windows.h and os2.h will no longer be
included by Harbour headers, HB_OS_WIN_USED is thus ineffective,
so if someone needs these headers to access system APIs, they
should be manually included in each source file. Some old
hacks have also been removed which disabled some Clipper
compatibility macros/types in compatibility headers (clipdefs.h, *.api),
if someone uses these alongside windows.h/os2.h inclusion, it will
be broken, here the strategy is to move to Harbour types and
Harbour API headers, simply Clipper headers and newer OS headers
are not compatible.
; HB_DONT_DEFINE_BASIC_TYPES is not effective anymore.
; INKEY_RAW is no more, use HB_INKEY_RAW instead.
; NEXTKEY() hidden parameter extension is disabled. Use HB_KEYNEXT()
Harbour alternative which has it.
; Some legacy PP functions are no more.
; hb_vmPushState()/hb_vmPopState() APIs were now permanently deleted.
; __STR*() token handling legacy functions are no more, use native HB_TOKEN*()
ones instead.
; WRITEBHEADER in USRRDD is no more, WRITEDBHEADER is the replacement.
; hbmysql, hbodbc compatibilty and deprecated functions were deleted
; hbwin compatibility functions were deleted. If there is demand, mainly to
help migrating xhb users, they can be readded to xhb lib by interested
developers, now deleted code should be changed to fall back to dummies
on non-Windows builds.
; some deprecated hbpgsql functions were deleted
; hbtip HB_BASE64() is deleted. Use core HB_BASE64ENCODE() instead.
; Anyone affected by above changes has the option to stick with 3.0.x Harbour
versions or to update their source code according to above instructions
(or instructions included in past ChangeLog entries)
; Some fallouts in Harbour build is possible after these changes
* include/extend.api
* include/hbdefs.h
* include/hbapi.h
* include/clipdefs.h
* contrib/hbpost.hbm
* contrib/hbfimage/hbfimage.hbp
* config/rules.mk
- deleted HB_LEGACY_TYPES_OFF macro. it is the default
in post 3.0.x Harbour versions.
+ added HB_LEGACY_TYPES_ON macro. This should be used when
building C code which uses Clipper/Harbour legacy types
(f.e. LONG or BOOL).
It will stay until next stable version when all legacy
types will be permanently removed. This gives time for
3rd party developers to update code to use Harbour
(non-legacy) types in C code.
See '2009-11-01 11:35 UTC+0100 Viktor Szakats' ChangeLog
entry about non-legacy Harbour types.
* harbour/include/hbapi.h
* harbour/src/vm/hashes.c
+ add new public C function: HB_BOOL hb_hashClear( PHB_ITEM pHash )
* do not generate RTE when unexisting key is passed to HB_HDEL()
now code which makes sth like:
if xKey $ hValue
hb_hDel( hValue, xKey )
endif
can be reduced to:
hb_hDel( hValue, xKey )
* harbour/src/vm/hashfunc.c
+ added new PRG function: HB_HCLEAR( <hValue> ) -> <hValue>
* include/harbour.hbx
* include/hbapi.h
* src/common/hbver.c
* src/rtl/version.c
+ hb_verHostCPU() to return CPU architecture the host OS
is running under. (long time TODO)
It may or may not give precise answer depending on
target OS. For win, it works as exptected.
+ HB_OSCPU() -> <cCPU> same for .prg level apps.
* contrib/hbmxml/3rd/minixml/mxml_str.c
! Ultimate isdigit() fix. [Tamas Tevesz]
* include/hbstack.h
* include/hbapi.h
! Marked functions as HB_EXPORT (should be HB_EXPORT_INT in the future)
which are used by hbdebug lib. It caused link error when using
'-b -shared' hbmk2 options on non-mingw windows compilers:
hb_stackDebugInfo
hb_macroGetType
hb_macroGetValue
hb_memvarGetValueBySym
* include/hbapi.h
* include/harbour.hbx
* src/common/hbver.c
* src/rtl/version.c
+ added hb_verHostBitWidth( void ) -> int which retrieves bit width of host OS
+ added HB_OSBITWIDTH() -> <nBits>
; It will currently work on win platform, falling back to target arch bits
for others. Pls extend it for *nixes. For MS-DOS, 32 will be returned with
both currently supported compilers.
* harbour/include/hbapi.h
* harbour/src/rtl/hbrandom.c
added new C functions which fills memory block with random values:
void hb_random_block( void * data, HB_SIZE len )
this function should be used with "good enough" random generator
so in the future it may be changed to use internally sth different
then rand().
* harbour/src/vm/thread.c
* pacified minor warning
* include/hbdefs.h
+ Added HB_EXPORT_INT macro similar to HB_EXPORT, but used for
exported _internal_ functions. (we may easily rename this
to something else if a better idea pops up)
; TODO: Change HB_EXPORT to HB_EXPORT_INT for rest of internal functions.
* include/hbpp.h
* include/hbapi.h
* include/hbcomp.h
* include/hbexprop.h
* include/hbhash.h
+ Using HB_EXPORT_INT to export functions.
* contrib/hbide/hbide.hbp
* contrib/hbrun/hbrun.hbp
! Deleted bad hack linking in hbcplr, hbpp, hbcommon on non-mingw
win compilers.
+ Added HB_EXPORT flag to these functions: (required by xhb, hbfship)
hb_stackBaseOffset()
hb_stackItem()
hb_stackBaseProcOffset()
hb_stackGetRecoverBase()
hb_stackWithObjectOffset()
hb_memvarSaveInArray()
* harbour/include/hbapi.h
* harbour/include/hbwmain.c
* harbour/src/vm/cmdarg.c
* moved declaration of hb_winmainArgInit() to header file
* harbour/contrib/hbmxml/3rd/minixml/mxml_fil.c
* harbour/contrib/hbmxml/3rd/minixml/mxml.h
! fixed to compile with WinCE builds
; I cannot regenerate .diff file because
../../../../bin/hb3rdpat.hbs -rediff
generates RT error:
Error BASE/1123 Argument error: HB_ATOKENS
Called from HB_ATOKENS(0)
Called from URL_GETFILENAME(810)
Called from FETCHANDEXTRACT(673)
Called from MAIN(412)
Sorry, probably I'm missing sth what was already discussed
but I was not able to follow all post on the list in last
weeks so I would like to ask Viktor or Tamas for the help.
* include/hbapi.h
* src/common/hbver.c
+ Added hb_iswin2k3().
* src/rtl/hbsocket.c
+ Comment.
; TOFIX: Use SO_EXCLUSIVEADDRUSE on Windows.
See: http://paste.lisp.org/display/59751
- examples/udpds
+ contrib/hbmisc/tests/udpdstst.prg
+ contrib/hbmisc/udpds.prg
* contrib/hbmisc/hbmisc.hbp
+ Moved UDPDS functions to hbmisc lib. Added hb_ prefix to names,
plus formatted with hbformat.
* contrib/hbhttpd/tests/webapp.prg
* Formatting.
; Patch from Tamas:
* config/bsd/gcc.mk
* config/bsd/clang.mk
* switch bsd to -fPIC, otherwise not even core builds (on 8.1/amd64)
* while there, bring bsd/gcc.mk in line with linux/gcc.mk (now they
are identical)
* ditto for bsd/clang.mk
* contrib/hbqt/hbqt_common.hbc
* for hbqt, switch static supc++ to dynamic stdc++, otherwise dyn hbqt
doesn't build. this is because on at least fbsd supc++ is apparently
not pic; but switching from static supc++ to dynamic stdc++ easily
fixes it.
* harbour/ChangeLog
* marked may last TODO note as DONE - thanks to Viktor and Mindaugas
* harbour/include/hbmacro.h
! added missing const in hb_macroGenPCodeN() declaration
* harbour/include/hbapi.h
* added const to HB_CODEBLOCK.pCode
* harbour/include/hbcompdf.h
! added missing const to HB_MACRO.string
* harbour/src/pp/ppcore.c
* harbour/src/common/hbstr.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbfix.c
* harbour/src/compiler/complex.c
* harbour/src/compiler/hbdead.c
* harbour/src/compiler/genc.c
* harbour/src/compiler/hbident.c
* harbour/src/compiler/gencc.c
* harbour/src/compiler/hblbl.c
* harbour/src/compiler/harbour.yyc
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyh
* harbour/src/vm/macro.c
* harbour/src/vm/codebloc.c
* harbour/src/vm/itemapi.c
* harbour/src/vm/hvm.c
* harbour/src/rtl/hbjson.c
* harbour/src/rtl/sha1.c
* harbour/src/rtl/sha2hmac.c
* harbour/src/rtl/hbsocket.c
* harbour/src/rtl/hbbffnc.c
* harbour/src/rtl/itemseri.c
* harbour/src/rtl/filebuf.c
* harbour/src/rtl/hbbfish.c
* harbour/src/rtl/gttrm/gttrm.c
* harbour/src/rdd/workarea.c
* harbour/src/macro/macrolex.c
* harbour/src/rdd/usrrdd/usrrdd.c
* cleaned const pointer casting
* harbour/src/rdd/usrrdd/usrrdd.c
! fixed very serious bug located during const pointer cleanup
which should cause GPF on user code creating indexes
* harbour/src/rtl/sha2.c
* minor formatting
; TOFIX: Seems that there is sth wrong with src/rtl/sha1.c.
Function SHA1_Transform() wrongly declares 2-nd parameter
buffer[64] as const when in fact it changes it what can be
seen if
BYTE64QUAD16 *block;
is changed to:
const BYTE64QUAD16 *block;
This casting which removes const hides potentially very serious
bug - modifying readonly memory area. SHA1_Transform() changes
the buffer so the 2-nd parameter must be declared without const.
After such modification C compiler should warn when const buffers
are passed to this function and such places should be fixed.
In fact it seems to be only line 136:
SHA1_Transform(context->state, &data[i]);
Viktor can you look at it and fix the code?
* harbour/include/hbpp.h
! removed repeated declaration of hb_pp_eof()
* harbour/include/hbapicdp.h
* harbour/include/hbapilng.h
* harbour/include/hbgtcore.h
* added extern declaration to HB_*_REQUEST() macros to pacify
undeclared global functions warnings
* harbour/include/hbstack.h
! added missing hb_stackDec() declaration
* harbour/include/hbdefs.h
! added missing const in some endian macros
* removed some unnecessary casting which may hide bugs
in the code
* harbour/include/hbapi.h
! removed repeated declaration of hb_strVal()
* harbour/include/hbznet.h
! removed repeated declaration of hb_znetError()
* harbour/include/hbcompdf.h
* minor comment
* harbour/src/vm/hvm.c
! added missing static to hb_vmTSVarClean() declaration
* added extern hb_vmForceLink() declaration to pacify
undeclared global functions warnings
* harbour/src/vm/thread.c
* make hb_threadInit() and hb_threadExit() internal HVM
functions available only in MT mode
* harbour/src/rtl/dates.c
! added missing static to hb_dateUnformatRaw() declaration
* harbour/src/macro/macrolex.c
* added extern hb_macro_yylex() declaration to pacify
undeclared global functions warnings
* harbour/src/rdd/workarea.c
* added extern _hb_rddWorkAreaForceLink() declaration to pacify
undeclared global functions warnings
* harbour/src/compiler/complex.c
* added extern hb_comp_yylex() declaration to pacify
undeclared global functions warnings
* harbour/contrib/hbnetio/netiocli.c
! added missing static to s_fileFlush() declaration
* harbour/contrib/hbct/tempfile.prg
! respect in TmepFile() function default file attributes set by
SetFCreate()
* harbour/contrib/hbct/ctstrfil.h
! added missing declarations for ct_getfcreate() and ct_setfcreate()
* harbour/contrib/hbwin/legacy.prg
* removed dummy RETURN statement
* harbour/contrib/xhb/fparse.c
! added missing static to hb_ParseLine() declaration
* harbour/contrib/xhb/freadlin.c
! added missing static to hb_fsReadLine() declaration
* harbour/contrib/xhb/txtline.c
! added missing static to hb_readLine() and hb_tabexpand() declarations
! fixed uninitialized variable warning exploited by above modification
(static function was automatically inlined increasing optimizations)
* harbour/contrib/xhb/hbserv.c
! removed repeated declaration of hb_isService() and hb_serviceExit()
* harbour/contrib/xhb/cstructc.c
* disabled public C functions hb_retclenAdoptRaw() and hb_retclenStatic()
* harbour/contrib/xhb/xhbat.c
* declare C function hb_AtSkipStrings() as static
Warning: this functions is part of public xHarbour C API.
; TODO: The following functions are declared as public but without
any prototypes in header files so they should be made static
or we should add them to some header files:
hbver.c:143: hb_verHostCPU()
hbjson.c:640: hb_jsonEncode()
hbjson.c:665: hb_jsonDecode()
sha2.c:228: sha256_transf()
sha2.c:445: sha512_transf()
I would like to ask authors to look at them and chose
best solution.
* include/hbapi.h
* src/common/hbver.c
+ Added hb_verPlatformMacro(), which returns string as it appears
in __PLATFORM__* macro.
This function will have to be extended for each new platform
Harbour is getting ported to.
* src/pp/ppcore.c
! Changed to use hb_verPlatformMacro() value to form __PLATFORM__*
macro, instead of using hb_verPlatform(), which offers no
guarantee for the value on *nix systems and it's was hack
on other platforms too (f.e. it got messed up when Windows
version string was changed to show "wine" at the beginning
of the human readable platform string).
% Made forming of __PLATFORM__* macros simpler, using hb_snprintf().
! Now WINCE builds of pp will also defined __PLATFORM__WINDOWS.
; Please review/test.
* harbour/include/hbapi.h
* harbour/src/common/hbstr.c
+ added new C function:
double hb_numExpConv( double dNum, int iExp )
* harbour/src/rdd/dbf1.c
+ added support for decoding exponents part from 'F' fields
* include/hbgtcore.h
* include/hbapifs.h
* include/hbapi.h
+ Added HB_EXPORT flag to these functions: (required by xhb, gtwvg and minizip)
hb_gt_ItemBase()
hb_gt_gcMark()
hb_gt_winapi_setClipboard()
hb_gt_winapi_getClipboard()
hb_gt_winapi_getKbdState()
hb_gt_winapi_setKbdState()
hb_gt_winapi_tone()
hb_fsAttrFromRaw()
hb_fsAttrToRaw()
hb_fsAttrEncode()
hb_fsAttrDecode()
hb_fopen()
hb_gcCollect()
hb_gcCollectAll()
; TOFIX: I didn't want to add these as they look heavily internal (some even
marked as such, they are all used by xhb lib:
hb_stackBaseOffset()
hb_stackItem()
hb_stackBaseProcOffset()
hb_stackWithObjectOffset()
* contrib/gtalleg/gtalleg.hbm
! Fixed missing -a implib flag for bcc.
* contrib/hbqt/qscintilla/hbqscintilla.hbc
+ Added lib dependency name.
* contrib/hbide/hbide.prg
! Fix to prev.
* utils/hbmk2/hbmk2.prg
+ Added trick to filter out target lib name from input lib list -hblib
mode and to filter out target implib name from input lib list in
-hbdyn mode. This fixes problems when linking -hbdyn by speccing both
project .hbp and .hbc files. I'm still thinking of a better solution
to solve this problem.
* contrib/make.hbs
! Fixed recent bug in filter processing.
* include/hbapi.h
+ Added HB_EXPORT to hb_releaseCPU(), hb_idle*() and hb_cmdarg*() functions.
* contrib/hbide/idemisc.prg
* contrib/hbide/hbide.ch
* contrib/hbide/hbide.prg
* Cleanup.
* utils/hbmk2/hbmk2.prg
! Fixed RTE when using post-process command on systems without
implib functionality. Recent regression.
% Fixed bad performance in default -head=partial mode, which made
it slower than -head=full. Now they are on par, so maybe -head=full
should be made the default and partial mode deleted.
; Thanks to Przemek for bug reports.
* include/hbset.h
* include/hbgtcore.h
* include/hbapi.h
+ Added some HB_EXPORT flags.
* include/hbapi.h
* src/common/Makefile
+ src/common/hbstrbm.c
+ Added hb_strAtTBM() which provides fast text search using
Turbo Boyer-Moore(-Crochemore) algorithm. The interface is
the same as hb_strAt().
HB_AT()/AT() could use it beyond some haystack sizes to
speed up the results.
+ contrib/hbqt/tests/testbrow.prg
+ Added useful browse example implemented using QT.
* tests/utf8at.prg
+ Changed to not use high chars.
* utils/hbrun/hbrun.prg
! Don't search passed program in PATH and hbrun dir, if
program name has path component.
* contrib/xhb/xhbenum.c
* contrib/xhb/xhbqself.c
* contrib/xhb/xhbwith.c
* contrib/xhb/xhberrc.c
! Fixed msvc64 warnings after HB_SIZE extension in stack API.
* contrib/make.hbs
+ Added logic to protect against case when 'clean install'
is used but hbrun or hbmk2 isn't available when launching
the make process. In this case 'clean' phase won't be executed
for contribs, which is solved by forcing a -rebuild in
'install' phase.
* src/vm/strapi.c
* src/vm/runner.c
* src/vm/itemapi.c
* src/vm/asort.c
* src/vm/hvm.c
* src/vm/arrays.c
* src/vm/memvars.c
* src/vm/set.c
* src/vm/classes.c
* src/rtl/lennum.c
* src/rtl/strcase.c
* src/rtl/replic.c
* src/rtl/padr.c
* src/rtl/padc.c
* src/rtl/strtran.c
* src/rtl/strtoexp.c
* src/rtl/padl.c
* src/rtl/saverest.c
* src/rtl/right.c
* src/rtl/philes.c
* src/rtl/mlcfunc.c
* src/rtl/left.c
* src/rtl/xsavescr.c
* src/rtl/setkey.c
* src/rtl/stuff.c
* src/rtl/trace.c
* src/rtl/samples.c
* src/rtl/inkeyapi.c
* src/rtl/inkey.c
* src/rtl/mtran.c
* src/rtl/colorind.c
* src/rtl/rat.c
* include/hbapi.h
* include/hbapistr.h
* Renamed HB_SIZE variables to have 'n' prefix.
(verified to generate the same objects as before)
* src/rtl/philes.c
* Changed hb_retnint()/hb_retni() to hb_retns().
* contrib/hbgd/gdwrp.c
* Formatting.
* src/vm/extend.c
* include/hbapi.h
+ Added hb_retclen_const() to return constant byte arrays.
* contrib/hbqt/hbmk2_plugin_qt.prg
* contrib/hbide/hbide.prg
+ Implemented pure Harbour .c QT resource support.
Commented, waiting for HBQT API to load resources
from byte stream.
This method will create a pure .c source files
from binary QT resource, so it doesn't require
QT headers to be present.
* contrib/hbqt/hbmk2_plugin_qt.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideskeletons.prg
* Changed 'ui' prefix to 'hbqtui_' for compiled .ui
file entry function names.
* utils/hbmk2/hbmk2.prg
+ Added hbmk2_FNameToSymbol() plugin function to convert
filename to Harbour symbol name.
* contrib/hbide/hbide.env
- Deleted QT setup from compilers where QT is not supported.
* include/hbdefs.h
+ Added new abstract type: HB_RECNO.
To replace HB_ULONG usage where it means record number.
* src/vm/hvm.c
* src/vm/cmdarg.c
* include/hbapi.h
* include/hbvm.h
* HB_ULONG -> HB_U32 for VM flags.
* src/vm/dynsym.c
* include/hbapi.h
* Minimal cleanup: using HB_LONG in place of long, just to make
this type usage easier to find in the future.
* src/vm/hvm.c
+ Added cast to pacify long time msvc warning
* src/vm/fm.c
+ Added pragmas to silence msvc64 warnings in dlmalloc (foreign) code.
* src/vm/extend.c
* Formatting.
* src/vm/estack.c
* src/vm/debug.c
* src/vm/hvm.c
* src/vm/pvalue.c
* src/vm/arrays.c
* src/vm/proc.c
* src/vm/memvars.c
* src/vm/eval.c
* src/vm/classes.c
* include/hbstack.h
* include/hbapi.h
+ Win64 support for HVM stack and other related internals.
(HB_ULONG -> HB_SIZE, HB_LONG -> HB_ISIZ, long -> HB_ISIZ)
+ Using size API in debug functions.
; TOFIX: These two warnings remain in HVM (not counting dlmalloc):
---
hvm.c(10695) : warning C4244: 'argument' : conversion from 'HB_MAXINT' to 'double', possible loss of data
macro.c(1315) : warning C4310: cast truncates constant value
---
* src/vm/eval.c
* HB_FORNEXT() loop value can now be 64-bit values (was 32).
* src/vm/runner.c
* Formatting.
* include/hbhash.h
* src/common/hbhash.c
+ hash key changed from HB_ULONG to HB_SIZE.
* src/rtl/cdpapi.c
* src/compiler/hbmain.c
* Added casts to pacify long time msvc warnings.
* include/hbapi.h
! HB_IS_VALID_INDEX() macro fixed to use HB_SIZE.
* Changed hb_struRefer.offset structure member from HB_LONG to
HB_ISIZ, fixing one pending Win64 type mismatch.
The change doesn't modify HB_ITEM size.
* include/hbapicls.h
+ Added parameter name to one declaration.
* include/hbcomp.h
* include/hbcompdf.h
* include/hbexpra.c
* include/hbexprb.c
* include/hbexprop.h
* include/hbmacro.h
* src/common/expropt1.c
* src/common/expropt2.c
* src/compiler/genc.c
* src/compiler/gencc.c
* src/compiler/harbour.y
* src/compiler/harbour.yyc
* src/compiler/hbdbginf.c
* src/compiler/hbdead.c
* src/compiler/hbident.c
* src/compiler/hblbl.c
* src/compiler/hbmain.c
* src/compiler/hbopt.c
* src/compiler/hbpcode.c
* src/vm/macro.c
+ Adding Win64 support for compiler/macro subsystems.
* HB_ULONG -> HB_SIZE where applicable.
* HB_LONG -> HB_ISIZ where applicable.
* Some now unnecessary cast deleted.
* hb_compExprAsStringLen() return value changed to HB_SIZE from int.
* hb_compNOOPfill() 3rd parameter changed to HB_ISIZ from int.
- Deleted unused hb_compExprMacroListLen().
; TOFIX: Use '$<lNumber>$' (or maybe newly added sNumber)
instead of '$<iNumber>$' in .y code.
Przemek, what do you think?
* src/compiler/Makefile
* C files sorted.
* src/vm/hvm.c
! hb_vmStaticsCount() changed to use HB_SIZE instead of
HB_ULONG. Fixing pending warnings.
* include/hbapi.h
* Changed hb_struEnum.offset structure member from HB_LONG
to HB_ISIZ, fixing one more pending Win64 type mismatch
problem. The change doesn't modify HB_ITEM size.
Please verify me.
* src/vm/classes.c
! Using size API after above change.
; QUESTION: In itemapi asEnum.offset is stored using
hb_itemPutNInt(). Should this be changed to
hb_itemPutNS()?
* contrib/hbct/ctstr.c
+ Cleaned away some HB_ULONG casts and using HB_PFS format
strings instead.
* contrib/hbct/tab.c
! Fixed regression from 2010-06-20 12:34 UTC+0200 Viktor Szakats,
by deleting now unnecessary casts. Shown by mingw64 4.6.0exp.
I'd appreciate if someone could check me!!
* include/hbapi.h
* Changed hb_struRefer.value structure member from HB_LONG to
HB_ISIZ, fixing one pending Win64 type mismatch also signaled
by msvc64 warning. The change doesn't modify HB_ITEM size.
Please verify me.
* src/vm/cmdarg.c
* src/vm/fm.c
* src/nortl/nortl.c
* src/rtl/fmhb.c
* include/hbapi.h
+ hb_xquery() return value changed from HB_ULONG to HB_SIZE.
Also fixes all msvc64 warnings
* src/vm/itemapi.c
* src/vm/arrays.c
* src/vm/extend.c
* include/hbapi.h
* include/hbapiitm.h
* Changed new size API calls to use HB_ISIZ instead of HB_SIZE.
This is required until we switch HB_SIZE to be signed value,
and to not step backwards plus keep signedness compatibility
with 'long' API calls.
* contrib/xhb/xhbhasha.c
* contrib/hbcurl/hbcurl.c
+ Using size API.
* contrib/xhb/xhbhasha.c
! HAAGETREALPOS(): Fixed return value to be numeric.
* include/hbapi.h
* include/hbapiitm.h
* src/vm/itemapi.c
* src/vm/arrays.c
* src/vm/extend.c
+ Added hb_storvns().
+ Added hb_parvns().
; TOFIX: hb_itemPutNS() gives these (not quite unexpected) mingw warnings:
---
itemapi.c:993:8: warning: comparison between signed and unsigned integer expressions
itemapi.c:998:38: warning: comparison between signed and unsigned integer expressions
itemapi.c:1004:35: warning: comparison between signed and unsigned integer expressions
itemapi.c:1004:7: warning: comparison is always false due to limited range of data type
---
* src/rtl/philes.c
* src/rtl/mlcfunc.c
* src/rtl/rat.c
+ Using size APIs.
% Also deleting '( HB_SIZE )' casts along the way.
* src/rtl/oemansi.c
! Cast to make Win64 happy. Quite interesting that almost no
Windows API don't support proper 64-bit strings, so here
Windows will be the limitation, not Harbour.