* extras/gfspell/gfspell.hbp
* extras/gtwvw/gtwvw.hbp
* extras/hbvpdf/hbvpdf.hbp
* extras/hbxlsxml/hbxlsxml.hbp
* extras/ps32/ps32.hbp
* extras/rddado/rddado.hbp
* extras/superlib/superlib.hbp
+ added $hb_pkg_install.hbm so they now all will
automatically install into /addons/
* extras/gtwvw/tests/hbmk.hbm
* extras/hbvpdf/tests/hbmk.hbm
* extras/ps32/tests/hbmk.hbm
* extras/rddado/tests/hbmk.hbm
* deleted relative dir from .hbc file references
+ extras/hbxlsxml/hbxlsxml.hbc
* extras/hbxlsxml/tests/hbmk.hbm
+ added missing .hbc file
* extras/hbusb/hbusb.hbc
* deleted dll related leftovers that only work
with contribs
- extras/commouse
- extras/commouse/commouse.prg
+ tests/commouse.prg
* moved to /tests/
* ChangeLog
! typo in prev commit description
2012-10-09 19:38 UTC+0200 Viktor Szakats (harbour syenar.net)
* utils/hbmk2/hbmk2.*.po
* utils/hbmk2/hbmk2.prg
+ added experimental feature to embed whole build-file
logic into the hbmk2 executable and reference these
from user make files. Currently .hbm files are supported
(.hbm file is simply a collection of hbmk2 options
which do not form a separate subproject). To refer
to such built-in .hbm files, one should use $<filename.hbm>
It's a straightforward way to ship ready-made
collections of options for specific purposes, without
installing external .hbm files. Filenames are case-sensitive.
NOTE: When referring to built-in .hbm files, it will
behave as it was part of the parent make file, which
means ${HB_DIR}, ${HB_DIRNAME}, ${HB_NAME}, ${HB_SELF}
will return the parent file, not the name of the
built-in file itself.
As usual you can override any options by placing
them after including the .hbm file.
+ added option to remove files added via -instfile=
option by using -instfile=[<group>:]. All files added
to the specified group will be removed from the list.
Note that removing internally added files by hbmk2
itself (f.e. the main built target (empty group) and
implibs ('implib', 'depimplib', 'depimplibsrc')) have
undefined results, so avoid it.
! fixed to use THREAD STATIC instead of STATIC in some
places (could not cause problems in current usage)
* use hb_HCaseMatch() instead of hb_HSetCaseMatch()
* utils/hbmk2/hbmk2.*.po
* utils/hbmk2/hbmk2.prg
+ added experimental feature to embed whole build-file
logic into the hbmk2 executable and reference these
from user make files. Currently .hbm files are supported
(.hbm file is simply a collection of hbmk2 options
which do not form a separate subproject). To refer
to such built-in .hbm files, one should use $<filename.hbm>
It's a straightforward way to ship ready-made
collections of options for specific purposes, without
installing external .hbm files. Filenames are case-sensitive.
NOTE: When referring to built-in .hbm files, it will
behave as it was part of the parent make file, which
means ${HB_DIR}, ${HB_DIRNAME}, ${HB_NAME}, ${HB_SELF}
will return the parent file, not the name of the
built-in file itself.
As usual you can override any options by overriding
them after including the .hbm file.
+ added option to remove files added via -instfile=
option by using -instfile=[<group>:]. All files to
the specified group will be removed. Note that
removing internally added files by hbmk2 itself
(f.e. the main built target and implibs) have
undefined results, so avoid it.
! fixed to use THREAD STATIC instead of STATIC in some
places (could not cause problems in current usage)
* use hb_HCaseMatch() instead of hb_HSetCaseMatch()
+ utils/hbmk2/pkg_inst.hbm
* utils/hbmk2/hbmk2.prg
+ added built-in .hbm file named '$hb_pkg_install.hbm'
Its purpose is to provide complete 'install' logic
for external projects. It will install .hb, .hbx,
.ch, .txt, tests/* files, along with installing
necessary libs, dynlibs and implibs. It honors
HB_INSTALL_3RDDYN and HB_INSTALL_IMPLIB settings.
* extras/hbusb/hbusb.hbp
+ use $hb_pkg_install.hbm instead of rolling the complete
install logic locally.
* utils/hbmk2/Makefile
+ added Harbour compiler option so that files from subdirs
can be included (not yet used)
* utils/hbmk2/hbmk2.prg
+ added ${HB_ADDONS} macro which will return the path
of the default addons dir, where 3rd party project might
deploy their distributable files (headers, libs, etc)
Note, the return value doesn't have an ending backslash,
so you need to add it if you need it.
* extras/hbusb/hbusb.hbp
+ added sample usage of full installation of this package,
utilizing ${HB_ADDONS} macro. This method can be used by
any 3rd party project.
* minor cleanup to force the implib name to a value
to avoid problems with double extension ("libusb-1.0")
* extras/hbusb/tests/hbmk.hbm
* since hbusb is installed now, the relative reference
to hbusb.hbc could be changed to simply 'hbusb.hbc' and
autofind will find it.
* contrib/gtwvg/class.prg
* contrib/gtwvg/syswnd.prg
* contrib/hbgd/gdchart.prg
+ using HB_IS*() for strict type checking instead of 'IF x == NIL'
check recently converted from DEFAULT TO commands.
This is INCOMPATIBLE for cases where wrong type was passed
for these parameters.
* contrib/xhb/cstruct.prg
* contrib/xhb/tcgi.prg
* src/debug/dbghelp.prg
* src/debug/dbgtmenu.prg
* src/debug/dbgtmitm.prg
* src/debug/debugger.prg
* contrib/hbhttpd/core.prg
* contrib/hbpgsql/tests/cache.prg
* contrib/hbpgsql/tpostgre.prg
* contrib/hbnf/metaph.prg
* extras/gtwvw/tests/ebtest7.prg
* extras/guestbk/testcgi.prg
* extras/gfspell/spell.prg
% deleted 3rd parameter from expressions 'StrTran( x, y, "" )'
Empty string is the default.
* contrib/xhb/cstruct.prg
! fixed formatting and indentation using hbformat and manually
* utils/hbmk2/hbmk2.prg
% minor opt by replacing 'iif( ! Empty(' with 'iif( Empty('
* extras/hbvpdf/hbvpdf.ch
* extras/hbvpdf/hbvpdf.prg
* changed DEFAULT TO to __defaultNIL()
! deleted common.ch and fileio.ch from public header file.
INCOMPATIBLE. If you need these, include them explicitly.
* contrib/gtwvg/activex.prg
* contrib/gtwvg/class.prg
* contrib/gtwvg/crt.prg
* contrib/gtwvg/menubar.prg
* contrib/gtwvg/paint.prg
* contrib/gtwvg/parthdlr.prg
* contrib/gtwvg/pushbut.prg
* contrib/gtwvg/statbar.prg
* contrib/gtwvg/static.prg
* contrib/gtwvg/syswnd.prg
* contrib/gtwvg/tabpage.prg
* contrib/gtwvg/toolbar.prg
* contrib/gtwvg/wnd.prg
* extras/httpsrv/cgifunc.prg
* extras/httpsrv/cookie.prg
* extras/httpsrv/session.prg
* extras/httpsrv/uhttpd.prg
* use __defaultNIL() instead of DEFAULT TO
* deleted common.ch from all files
* contrib/hbmisc/numtxtru.prg
% minor optimization
* contrib/hbmisc/tests/numtxtru.prg
* avoid using a .dbf as output, instead use STDOUT
* added lines to make it work using hbrun
* switched output and HVM to UTF-8, so it can be
displayed on more systems (both as stdalone exe
and as hbrun script)
+ contrib/hbmisc/tests/numtxtru.prg
* contrib/hbmisc/numtxtru.prg
* contrib/hbmisc/hbmisc.hbx
* tests/testmny.prg
* applied coding standards (no common.ch, no '=' op, move test
code to separate source, use iif(), unicode support, UTF-8/ASCII
source only, use svn props, use IS*()/hb_default() functions,
updated .hbx)
* changed interface to accept language code as string
instead of numeric constant.
; Please review
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
* minor formatting
* harbour/contrib/hbct/ctwfunc.c
* harbour/contrib/hbct/ctwin.c
* harbour/contrib/hbct/ctwin.h
+ added undocumented CT3 window functions:
WALIAS( <nHandle> ) -> <nHandle> | -1
change current window handle to <nHandle>
if <nHandle> is not used by other window.
return <nHandle> on success or -1 to indicate error.
Warning: I replicated CT3 limit here so <nHandle>
cannot be bigger then 255
WLIST() -> <cHandleList>
_WSTACK() -> <cHandleList>
return string with window handles in each character,
the ASCII value of the first character is handle of the
most bottm window and the last character is the top window.
Warning: this is compatibility only function
which works correctly for first 255 windows.
Harbour does not have any internal limits on
maximum number of windows so it's possible
to create more then 255 windows and this function
will return wrong results.
* contrib/hbmisc/hbmisc.hbp
+ contrib/hbmisc/numtxtru.prg
+ added functions to convert a number and date to East Slavic (Russian,
Ukrainian and Belorussian) text:
NumToTxtRU() - convert a number
MnyToTxtRU() - convert a money
DateToTxtRU() - convert a date
+ tests/testmny.prg
+ added sample class Money with overloading of arithmetical operations
* bin/commit.hb
* made git detection generic
! fixed calling shell on OS/2
* config/global.mk
* minor sync with other parts of Harbour
* contrib/hbblink/blinker.prg
! fixed SWPRUNCMD() on OS/2
* contrib/hbxpp/runshell.prg
! fixed for RUNSHELL() on non-*nix platforms
* 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.
* contrib/hbnf/aavg.prg
* contrib/hbnf/adessort.prg
* contrib/hbnf/amedian.prg
* contrib/hbnf/anomatch.prg
* contrib/hbnf/any2any.prg
* contrib/hbnf/asum.prg
* contrib/hbnf/clrsel.prg
* contrib/hbnf/d2e.prg
* contrib/hbnf/ftround.prg
* contrib/hbnf/invclr.prg
* contrib/hbnf/nwsem.prg
* contrib/hbnf/popadder.prg
* contrib/hbnf/tbwhile.prg
* contrib/hbnf/tests/clrsel.prg
* contrib/hbnf/tests/d2e.prg
* do not use common.ch. __defaultNIL() is used instead, for
full compatibility here. Should ideally be changed to
hb_default(), but it will break RTE compatibility for
invalid values. Should we do it? (this would also fix
calling internal functions from a contrib)
* contrib/hbnf/tests/d2e.prg
! fixed defaulting to wrong value (regression)
* extras/gtwvw/tests/drawimg.prg
* extras/gtwvw/tests/ebtest7.prg
* extras/gtwvw/tests/prog0.prg
* extras/gtwvw/tests/prog1.prg
* extras/gtwvw/tests/prog2.prg
* extras/gtwvw/tests/wvwmouse.prg
* extras/gtwvw/tests/wvwtest9.prg
* do not use common.ch. Use hb_default() instead.
; Only gtwvg, hbgd, xhb and httpsrv remain to use common.ch
for DEFAULT TO command. Notice it's bad practice since it
only checks for NIL for defaulting, so RTE can easily be
forced by passing a value of wrong type. DEFAULT TO can
be directly replaced with __defaultNIL(), or ideally with
hb_default(). Notice that hb_default() is a pure function,
and since the default value needs to be evaluated even if
correctly typed parameter is passed, it may have
a performance penalty if that default value is coming as
a result of complex expression or function call. I value
type safety more than performance, so in most cases this
is IMO a useful compromise, though of course someone might
as well use 'IF ! HB_IS*( xVar ); xVar := xValue; ENDIF'
which is type safe while having no extra RT performance
penalty, though a bit verbose.
* tests/hbpptest/hbpptest.prg
* utils/hbtest/rt_misc.prg
* do not include unused common.ch
* contrib/xhb/cgi.ch
* formatting
* harbour/include/hbcomp.h
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbstripl.c
% eliminate repeated HB_P_LINE pcodes bound by unconditional jump
This optimization is not enabled when debug mode (-b) is used.
* harbour/include/hberrors.h
* harbour/src/compiler/hbgenerr.c
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
+ added new compile time error: "Duplicate case value"
* src/debug/dbgwa.prg
* src/rtl/browse.prg
* src/rtl/dbedit.prg
% deleted EXIT from SWITCH statements' OTHERWISE branches.
(it'd be nice if the compiler could ignore these
automatically - in case it can be solved with low cost)
* extras/gtwvw/tests/prog2.prg
* extras/gtwvw/tests/wvwtest9.prg
* src/debug/debugger.prg
* src/rtl/tgetlist.prg
* tests/sbartest.prg
* tests/tb1.prg
! further cases of object vars called as methods, though
these didn't (necessarily) caused errors.
I wish Harbour had a native core OOP engine to catch
all (there are more cases than above) this mess at
compile-time.
* src/rtl/browse.prg
! fixed not appending a new record when pressing K_DOWN
in append mode (and perhaps some other cases)
The problem was using 'oBrw:HitBottom( .T. )' instead
of 'oBrw:HitBottom := .T.'
* minor optimizations and cleanup.
; Some stats: it was a 5 year old bug
took about 10 hours to find the solution. Sheet.
* contrib/xhb/cstructc.c
* contrib/xhb/dbf2txt.c
* contrib/xhb/fparse.c
* contrib/xhb/hbxml.c
* contrib/xhb/xhbis.c
* minor formatting
* use ',' instead of 44
* extras/gtwvw/gtwvw.c
! fixed one code line after uncrustify
* contrib/hbmisc/fileread.prg
* contrib/hbmisc/tests/readfile.prg
* contrib/hbmisc/tests/rtfclass.prg
* contrib/hbmisc/tests/testhbf.prg
* contrib/hbmisc/tests/twirl.prg
* minor cleanups, hbformat, using fileio.ch constants,
minor regression in one test app
* config/postinst.hb
* utils/hbmk2/hbmk2.prg
+ Use the second parameter in HB_CWD() calls.
* contrib/hbformat/hbfmtcls.prg
! fixed embedded comment in last commit.
* harbour/src/rtl/philes.c
* modified HB_CWD() to return previous path if new one is set by
optional parameter so current syntax is:
HB_CWD( [ <cNewWD> ] ) -> <cPrevWD>
+ set FError() in HB_CWD() function. Now programmer can check if HB_CWD()
succeed checking result of FError() function, i.e.
HB_CWD( cNewPath )
IF FError() != 0
? "Cannot set working directory to:", cNewPath
ELSE
// stuff
ENDIF
+ set FError() in the following functions:
HB_FGETATTR(), HB_FSETATTR(),
HB_FGETDATETIME(), HB_FSETDATETIME(),
HB_FISDEVICE()