* harbour/harbour.spec
* harbour/mpkg_tgz.sh
+ added hbformat
* harbour/include/hbdefs.h
* harbour/include/hbapi.h
* harbour/source/common/hbarch.c
* redefined macros used to store/retrieve integer and double values
to/from byte arrays in little and big endian order.
Now GCC uses inline functions which are hardly optimized by compiler
giving on x86 machines the same code as direct casting (with the
exception to march=i686 where putting double value forces strict
alignment to avoid hidden CPU exception) but they respect strict
aliasing rules. It also means that now GCC builds always respect
strict alignment even if HB_STRICT_ALIGNMENT macro is not set.
* include/hbsetup.h
* source/common/hbver.c
+ Moved CPU detection to core header. Introduced
HB_CPU_* macros. Now they can be used to branch code
by CPU type.
* contrib/rddads/adsmgmnt.c
+ Added my copyright.
* contrib/hbwin/wapi_commctrl.c
* contrib/hbwin/wapi_winbase.c
* contrib/hbwin/wapi_winuser.c
! Fixed remaining hb_parc() vs hb_parcx() usages.
% WAPI_TABCTRL_CREATE() further simplified.
Please review, it may be wrong.
* utils/hbmk2/hbmk2.prg
* Minor internal change.
* include/hbver.ch
* source/rtl/version.c
+ Added hb_Version( HB_VER_COMPILER_CPP ) which
returns if the C compiler was used in C++ mode.
Mainly added for HB_BUILDINFO() emulation, maybe it
can be useful to set defaults in hbmk2, we will see.
* contrib/xhb/Makefile
+ contrib/xhb/xhbver.prg
+ Added emulation of HB_BUILDINFO() xhb function.
+ contrib/xhb/xhbver.ch
+ Copied xhb's hbver.ch under this name.
(borrowed from xhb, work of Andi Jahja)
* contrib/hbct/print.c
+ added PRINTSEND() support for Windows platform.
(Borrowed from xhb, work of Pavel Tsarenko, with few minor changes)
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvgsink.c
! Fixed two new warnings after my recent commits.
* contrib/hbwin/hbwapi.h
* Tweaked previous commit. COLORREF and HRESULT now using
hb_retnint() again to fix 32-bit numbers appearing as signed ones
at .prg level.
* source/rdd/usrrdd/rdds/arrayrdd.prg
; Added some patches recently committed to xhb:
! few fixes provided by Quique
+ Added AR_LOCK() function, but commented.
; NOTE: Francesco, would you mind reviewing these changes?
* utils/hbmk2/hbmk2.prg
* Minor formatting, comment added.
* contrib/xhb/fparse.c
* contrib/rddsql/sddmy/mysqldd.c
* contrib/rddsql/sqlbase.c
* contrib/rddsql/sqlmix.c
* contrib/rddads/adsx.c
* contrib/examples/terminal/trm_client.prg
* source/rdd/dbfnsx/dbfnsx1.c
% "" -> NULL where applicable (hb_retc*(), hb_retds(), hb_itemPutC*(),
hb_arraySetC*(), hb_errInternal(), hb_itemPutDS(), hb_arraySetDS())
* contrib/hbqt/hbqt_qtextdocument.cpp
* contrib/hbqt/hbqt_qgridlayout.cpp
* contrib/hbqt/hbqt_qpainter.cpp
* contrib/hbqt/hbqt_qeventloop.cpp
* contrib/hbqt/hbqt_qicon.cpp
* contrib/hbqt/hbqt_qtreeview.cpp
* contrib/hbqt/hbqt_qtextline.cpp
* contrib/hbqt/hbqt_qdesktopwidget.cpp
* contrib/hbqt/hbqt_qhttp.cpp
* contrib/hbqt/hbqt_qlineedit.cpp
* contrib/hbqt/hbqt_qcombobox.cpp
* contrib/hbqt/hbqt_qlistwidget.cpp
* contrib/hbqt/hbqt_qtextcursor.cpp
* contrib/hbqt/hbqt_qtextlayout.cpp
* contrib/hbqt/hbqt_qftp.cpp
* contrib/hbqt/hbqt_qclipboard.cpp
* contrib/hbqt/hbqt_qurl.cpp
* contrib/hbqt/hbqt_qwebpage.cpp
* contrib/hbqt/hbqt_qtextedit.cpp
* contrib/hbqt/hbqt_qpixmap.cpp
* contrib/hbqt/hbqt_qsplashscreen.cpp
* contrib/hbqt/hbqt_qtablewidget.cpp
* contrib/hbqt/hbqt_qtreewidget.cpp
* contrib/hbqt/generator/hbqtgen.prg
* contrib/hbqt/hbqt_qfont.cpp
* contrib/hbqt/hbqt_qmainwindow.cpp
* contrib/hbqt/hbqt_qdir.cpp
* contrib/hbqt/hbqt_qwidget.cpp
* contrib/hbqt/hbqt_qstyle.cpp
* contrib/hbqt/hbqt_qabstractbutton.cpp
* contrib/hbqt/hbqt_qobject.cpp
* contrib/hbqt/hbqt_qcolor.cpp
* contrib/hbqt/hbqt_qtextstream.cpp
* contrib/hbqt/hbqt_qwebview.cpp
* contrib/hbqt/hbqt_qboxlayout.cpp
* contrib/hbqt/hbqt_qstatusbar.cpp
* contrib/hbqt/hbqt_qtabwidget.cpp
* contrib/hbqt/hbqt_qscrollarea.cpp
* contrib/hbqt/hbqt_qtextcharformat.cpp
! Fixed to use HB_ISNUM() instead of HB_ISNIL().
% Don't call HB_ISNUM() where the default value is
zero anyway. hb_parn*() functions will return zero
anyway. (well, maybe this exploits the array-type
bug in our Extend API.)
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvgsink.c
* Avoiding ISNIL(). Corrected just a few occurences.
This practice is still wrong in most of the cases in
GTWVG code, so if the goal is GPF-free and consitently
behaving apps, these would better be fixed. With
string params ISNIL() is either superfluous or simply
don't protect agains GPFs, for rest of the cases it
either causes unexpected defaults (zero), or simply
superfluous for the rest of the cases. IOW: Avoid it,
use HB_ISNUM(), HB_ISCHAR() / parcx() instead.
* contrib/hbgd/gdwrp.c
* Formatting.
* contrib/gtwvg/wvgsink.c
! Fixed warning.
* Some formatting, minor cleanup.
* source/rtl/hbi18n2.prg
+ __I18N_POTARRAYSAVE() got logical flag to suppress Harbour version
number in saved file comment.
+ __I18N_POTARRAYSAVE() got logical flag to suppress source
reference information in save file. This way it's possible to
lessen the number of .po file updates and to avoid the growth
caused by texts moving around while files are being edited.
* utils/hbmk2/hbmk2.prg
+ Added option to save .po files in a version repository friendly
way, this means no Harbour version number and no source file
references in .po files. You can activate this using -minipo
option.
* harbour/include/hbxvm.h
* harbour/source/vm/hvm.c
* harbour/source/compiler/gencc.c
! added missing RT error for wrong values used in SWITCH statement
in code generated for -gc3 output
* harbour/source/rtl/gtxwc/gtxwc.c
! fixed typo in HB_GTXVG_SQUARE shape initialization
* harbour/include/hbrddnsx.h
* harbour/include/hbrddntx.h
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* code cleanup - use predefined #define instead of hardcoded constant
values
* harbour/source/rtl/valtoexp.prg
* added REQUEST __objSetClass
* harbour/source/compiler/gencc.c
! fixed -gc3 code generated for switch statement - thanks to Marek and
Xavi for information and self contain example
TODO: add missing RT error in -gc3 output when wrong (non integer
and non string value) is used in SWITCH statement
* harbour/source/vm/memvars.c
* modified __mvDbgInfo():
- accept as 1-st parameter also HB_MV_PRIVATE_LOCAL and
HB_MV_PRIVATE_GLOBAL values
- changed parameters meaning now when less then 3 parameters is
given this function returns number of variables and the second
parameter is the call stack level. Memvar value and optionally
name is returned only if 3 or more parameters is given.
3-rd party code which used this function with two parameters
has to be updated.
* harbour/source/debug/debugger.prg
* mark non local private variables in monitor as "Private^" (with "^")
* do not show public and private variables hidden by other private
declarations
* harbour/source/rtl/filebuf.c
! refuse to share file handles if they were open in different mode
TODO: add support for keeping more then one handle for single file
open and allow such combinations.
* harbour/source/rtl/hbffind.c
% optimized *nix version of hb_fsFind*()
* harbour/utils/hbmk2/hbmk2.prg
! fixed compilation on non Windows platforms (unused variable warning)
* harbour/include/hbset.h
* harbour/source/vm/set.c
+ added new function hb_setGetPrinterHandle() which allows to open
closed printer port
! do not force opening default port after SET PRINTER TO ""
but delay the initialization untill other code does not call
hb_setGetPrinterHandle()
! fixed filename returned by _SET_PRINTFILE, _SET_ALTFILE, _SET_EXTRAFILE
! fixed dpossible resource leaks whne _SET_*FILE is called recurisvely
for user error block
! fixed _SET_*FILE settings to not accept files which cannot be open
(just like in Clipper)
* harbour/source/rtl/console.c
* use hb_setGetPrinterHandle() to access printer handler
* source/vm/set.c
! Applied fix sent by Xavi. Thanks.
I did a few minor formattings and rename, and did a
light review, please review further and test. I seem to
remember some deeper problems with this feature,
reported a while ago on the list.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Displaying C compiler used (with path) if autodetection
was used and -info enabled.
! Workaround added to MemoLine() sometimes returning empty
string for the last line.
* source/rtl/tget.prg
% Minor opt.
* bin/hb-func.sh
! HB_USER_LIBS_DEF -> CC_HB_USER_LIBS
; QUESTION: Is it a problem to move these to HB_ namespace?
* source/rtl/lang.c
! Fixed to return language IDs with consistent '-' separators
instead of '_'. We may change this to consistent '_', if
we decide it's better.
* harbour/source/rtl/filesys.c
! fixed OpenWatcom Linux builds which does not support utimes() yet.
* harbour/contrib/rddads/ads1.c
* pacified two BCC warnings
* source/rtl/hbi18n2.prg
! Minor fix to change dir separators to "/" so that
there won't be multiple entries for the same file
in mixed environments.
(like: '#: src\file.prg:1022 src/file.prg:1022')
* utils/hbmk2/hbmk2.prg
+ Using HB_USERLANG() to detect language, so it now also
works on Windows.
+ Added support for -lang= switch to override language.
+ Added support for HB_LANG envvar to override language.
(this is the recommended method)
* include/hbextern.ch
* source/rtl/Makefile
+ source/rtl/lang.c
+ Added HB_USERLANG() function to retrieve ietf code of
language set by user. Works also on Windows.
* contrib/hbwin/win_misc.c
* contrib/hbwin/wapi_winbase.c
* contrib/hbwin/wapi_winuser.c
* WAPI_*() functions moved to wapi_* files.
+ WAPI_GETPROCADDRESS() added. This is a pure wrapper to
this Windows API.
* contrib/hbwin/win_prn1.c
* contrib/hbwin/win_prt.c
% hb_parnl() -> hb_parni() where it was cast to int anyway.
* utils/hbmk2/hbmk2.prg
+ Added -shareable/-shareable- option to control the aspect
of harbour.so absolute dir reference. It can override
previous rule controlled by system location detection. See
more in help.
* Minor internal change to one of the functions.
+ source/rtl/hbzlibgz.c
* source/rtl/hbzlib.c
* source/rtl/Makefile
% Split source into two, so unnecessary code parts won't be
included in final binaries.
* include/hbextern.ch
* source/rtl/Makefile
+ source/rtl/tgethb.prg
* source/rtl/tget.prg
+ HB_EXTENSION functionality (:hideInput() and :style()) moved
from GET to a new derived class called HB_GET(). It means
this functionality is available in default builds.
Further extensions can be added to this class.
* include/hbextern.ch
* contrib/xhb/hbcompat.ch
* source/rtl/setkey.c
+ Added HB_SETKEY() which is similar to SETKEY() but contains
3rd parameter extension. Now this functionality is available
for default Harbour builds under this new function name.
+ Added cross mappings for xhb SETKEY().
* source/rtl/setfunc.prg
+ F11/F12 key handling now protected with HB_C52_STRICT instead
of HB_EXTENSION so it will available in default builds.
- Other HB_EXTENSION protected feature deleted (allowing to
assign non-string key sequences to F keys. This effect can
easily be achieved with direct SETKEY() calls, so it wasn't
an essential extension here.
* source/rtl/hbffind.c
+ Internal HB_EXTENSION protected part enabled.
- Deleted HB_EXTENSION dealing with Windows-specific attribute
chars. Those needing this functionality can access it using
C level API.
* source/rtl/tpopup.prg
* source/rtl/ttopbar.prg
- Deleted minor (non Clipper-compatible) behaviour change
in handling disabled menu items when HB_EXTENSION
is enabled.
; Only remains few class extensions covered by HB_EXTENSION.
Overall there is no reason anymore to use this macro.
TODO: Solve these using inheritance.
* harbour/source/vm/runner.c
% optimized memory allocation for symbol tables used in loaded .hrb
files to store whole symbol table with all symbol names in single
memory block. It makes HVM cloned table structure synced with the
one used by runner.c fixing possible static memory leak.
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added -tshead=<file> option to create a .ch header with
build timestamp information in it: _HBMK_BUILD_DATE,
_HBMK_BUILD_TIME_, HB_BUILD_TIMESTAMP_.
* -opt/-noopt -> -optim/-nooptim to avoid name ambiguity.
+ Added feature to -vcshead= to create a locally rolled
build number if there is no version control system detected.
In this case _HBMK_VCS_TYPE_ will be defined as "hbmk"
and _HBMK_VCS_ID_ will be initialized with a string, starting
with "1" and incremented on each hbmk2 call.
* Internal change to componentize hbmk2 functionality, clearing
away all STATIC vars and some parameter passing hacks.
Work in progress, TODO added.
! Fixed cosmetic bug in debug output when making .po.
* source/rtl/mlcfunc.c
! Fixed warning appeard in latest change.
* source/rtl/trim.c
* source/compiler/hbfunchk.c
- Removed HB_EXTENSION protected second extended parameters
from RTRIM() and ALLTRIM(). If you miss this option, please
report it on the list, we may readd such functionality under
some different name.
INCOMPATIBLE for HB_EXTENSION builds.
* doc/dirstruc.txt
* bin/hb-func.sh
* utils/hbmk2/examples/contribf.hbp
- contrib/hbole
* contrib/Makefile
+ contrib/hbwin/oleinit.c
+ contrib/hbwin/olecore.c
+ contrib/hbwin/hbwinole.h
+ contrib/hbwin/oleauto.prg
+ contrib/hbwin/tests/sample.odt
* contrib/hbwin/tests/testole.prg
- contrib/hbwin/win_tole.prg
- contrib/hbwin/win_ole.c
+ contrib/examples/hboleold
+ contrib/examples/hboleold/tests
+ contrib/examples/hboleold/tests/testole.prg
+ contrib/examples/hboleold/win_tole.prg
+ contrib/examples/hboleold/win_ole.c
+ contrib/examples/hboleold/Makefile
* Replaced old hbwin OLE implementation with
new implementation in hbole. Thanks to
Mindaugas Kavaliauskas for the new implementation.
Those who need the old implementation in the
meantime for any reason, can find it in contrib/example/hboleold.
; TODO: Fill the few missing features (ActiveX/FiveWin
compatibility).
* ChangeLog
* Marked two TODO/TOFIX done.
* harbour/source/rtl/filesys.c
+ added support for millisecond precision in hb_fsGetFileTime()/
hb_fsSetFileTime() in Linux builds. Please note that file time
precision depends also on used file system and Linux kernel so
it does not have to work in all cases.
* utils/hbmk2/hbmk2.prg
+ Added -hbrun option which will run the target without trying to
build it. If target is missing, the command will fail.
+ -run/-hbrun options will now run GUI target executable using 'start'
command on Windows platforms so that hbmk2 will return and leave
the app running.
* include/hbextern.ch
+ Added HB_GZPUTC().
* include/hbsetup.ch
- Removed HB_EXTENSION from documented list of build modified macros.
* source/common/hbverdsp.c
- Deleted HB_EXTENSION dependent part.
* source/rtl/mlcfunc.c
- Deleted HB_EXTENSION branch. Please modify your program to
use Set( _SET_EOL ) instead of passing EOLs explicitly to
memo functions. This works also in xhb.
INCOMPATIBLE when for HB_EXTENSION builds.
* source/rtl/alert.prg
! Minor in comment.
* source/rtl/saverest.c
- Removed SAVESCREEN()/RESTSCREEN() extra "lNoCheck" parameter
when HB_EXTENSION is enabled. Please report on the list
if you need this functionality.
* source/compiler/hbfunchk.c
! Fix to prev: AT() declaration.
; TODO: Clean rest of HB_EXTENSION stuff.
* contrib/xhb/hbcompat.ch
+ Added HB_GETENV() <-> GETENV() conversions.
+ Added MEMOWRIT() translation for xhb sources.
* source/rtl/at.c
* source/rtl/gete.c
* source/rtl/memofile.c
- Deleted HB_EXTENSION branches. Users of extended
GETENV(), GETE(), AT() and MEMOWRIT() functionality
will have to use hbcompat.ch to stay compatible with xhb
(this isn't needed for MEMOWRIT()).
INCOMPATIBLE change for those who enabled HB_EXTENSION
in Harbour. Hopefully xhb will implement HB_AT() and
HB_GETENV() in the future so hbcompat.ch will become
unnecessary.
* include/hbextern.ch
+ source/rtl/radiobhb.prg
* source/rtl/radiobtn.prg
* RADIOBUTTON() Harbour extension moved to a separate file
to cause no harm for programs defining this function locally.
At the same time, HB_EXTENSION protection got removed so
it can be accessed in default builds as a RADIOBUTTO()
alternative.
* doc/cmdline.txt
* doc/howtosvn.txt
+ Added CC copyright.
* source/rtl/alert.prg
* include/hbextern.ch
+ HB_ALERT(). Now this function holds all extended features:
nDelay support and any type for first parameter.
* ALERT() now behaves completely along Clipper version, without
extensions. HB_EXTENSION no longer modifies its behaviour, so
if someone needs these extended features, there is no need to
build with HB_EXTENSION, only ALERT() calls have to be
converted to HB_ALERT(). INCOMPATIBLE (in some scenarios).
* contrib/hbtip/utils.c
% TIP_TIMESTAMP() code cleaned to remove redundancy of
having two full distinct copies of this function. Now
platform independent parts are kept common.
! TIP_TIMESTAMP() fixed hb_parl() to hb_parnl() for 'hours'
parameter. I wonder how this bug wasn't noticed till now.
Please someone test, maybe I'm missing the point of this
parameter, but it's unlikely the intent was a logical value
as it's later converted to timestamp.
* contrib/hbtip/thtml.prg
* contrib/hbtip/sendmail.prg
* contrib/hbtip/httpcln.prg
* contrib/hbtip/ftpcln.prg
* END -> END*
* Minor formatting.
* contrib/hbtip/base64x.c
* contrib/hbtip/smtpcln.prg
* Formatted.
* Minor optimizations (File() -> hb_FileExists(), ::AuthPlain()
simplification).
% BUILDUSERPASSSTRING() rewritten in Harbour. It's a very
simple function.
* harbour/source/rdd/workarea.c
* formatting
* harbour/source/vm/Makefile
* minor cleanup
* harbour/config/dir.cf
! added protection against double build call when -j<n> is used in
install phase
* harbour/source/vm/Makefile
* respect HB_HVM_ALL user settings
! export HB_HVM_ALL value set automatically - otherwise it's not seen
when HBVMMT is compiled
* harbour/source/vm/classes.c
* exteneded :classsel() build in method to repsect scope given as
2-nd parameter and return extended information compatible with
:ClassFullSel() implemented in xHarbour by Francesco Saverio Giudice.
This extended info is returned when 3-rd parameter is .T.
* harbour/source/rtl/dateshb.c
* do not generate RTE on wrong params in HB_STOT() function
* harbour/contrib/xhb/xhbfunc.c
+ added hacked function which allows to send messages without respecting
scope. It works only for the most visible data and does not support
any automatic casting.
* harbour/contrib/xhb/dumpvar.prg
! fixed HB_DumpVar() results on platforms where CRLF has different
length then 2
% small improve in hash item presentation
+ added __objGetMsgFullList() and __objGetValueFullList() as static
functions. Code borrowed form xHarbour by Francesco Saverio Giudice.
* make HB_DumpVar() working with object values.
* source/rtl/tclass.prg
* source/rtl/treport.prg
* source/rtl/tpersist.prg
+ Added support for TIMESTAMP types.
* source/rtl/tclass.prg
% Using SWITCH in AddData()/AddClassData().
* source/rtl/tget.prg
! Fixed to check for ::cType != NIL before
each SWITCH ::cType statments. Thanks to Przemek
for pointing it out.
* source/rtl/alert.prg
% Using hb_CStr() in extended mode. Also thanks to Przemek.
% Some minor opt.
* harbour/include/hbcompdf.h
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
+ added compile time optimization for switch statements with constant
values, i.e. for code like:
proc main()
local x := 0
switch 3
case 1; x += 100; exit
case 2; x += 200
case 3; x += 300
case 4; x += 400; exit
case 5; x += 505; exit
case 6; x += 606
otherwise; x += 1000
endswitch
? x
return