* 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.
* 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.
* harbour/contrib/hbsqlit3/hbsqlit3.c
* Changed syntax of sqlite3_exec() to
sqlite3_exec( db, cSQLTEXT, [pCallbackFunc]|[cCallbackFunc],
[lConvertSQLTextToUTF8], "cCDP" ) -> nResultCode
From now we can replace
cSQLTEXT := hb_strToUTF8( cSQLTEXT, "RU1251" )
sqlite3_exec( db, cSQLTEXT )
with
sqlite3_exec( db, cSQLTEXT, , .t., "RU1251" )
* Changed syntax of sqlite3_bind_text(), sqlite3_column_text()
in such way
* Changed sqlite3_bind_blob() according to sqlite3 docs.
* utils/hbmk2/hbmk2.prg
+ Applied cygwin patch from Tamas Tevesz.
! Few more cygwin related fixes here and there.
+ Added more cygwin related TOFIX notes.
* utils/hbmk2/hbmk2.prg
+ Platform/compiler checks made robust and don't
give match anymore for 'win' when checking it against
'darwin' or 'cygwin'.
* utils/hbmk2/hbmk2.prg
* INSTALL
* Updated to reflect that cygwin is now distinct platform.
(TODO: examples)
* include/hb_io.h
* include/hbthread.h
* include/hbsetup.h
* src/vm/thread.c
* src/vm/dynlibhb.c
* src/common/hbgete.c
* src/common/hbprintf.c
* src/rtl/gttrm/Makefile
* src/rtl/hbsocket.c
* src/rtl/filesys.c
* src/rtl/hbcom.c
* config/global.mk
- config/win/cygwin.mk
+ config/cygwin
+ config/cygwin/libs.mk
+ config/cygwin/gcc.mk
+ config/cygwin/global.mk
+ Applied cygwin patch from Tamas Tevesz.
The goal is to migrate win/cygwin to cygwin/gcc, IOW to make cygwin
a distinct platform (which is primarily unixy with option to access
winapi) as it should be.
Changes made by me compared to original patch:
- Fixed to HB_HOST_PLAT stay 'win'. Cygwin is not a host platform.
- Fixed to set HB_COMPILER to gcc and HB_PLATFORM to cygwin when cygwin
is detected on win platform.
- Consequently some changes in global.mk could be dropped.
- Deleted hbcom patches not related to cygwin.
- Removed hbmk2 patch until we solve the 'plat $ 'cygwin' problem.
* contrib/hbqt/qtcore/hbqt_misc.prg
* Changed to not RTE when connecting to an already connected event.
It will now return .F.. This emulates old behavior.
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* __HBQT_SLOTS_DISCONNECT() - Fixed a variable name
to match real content (slot -> pszSignal)
% __HBQT_SLOTS_CONNECT() - Synced with disconnect,
added local variable to avoid double hb_parcx() calls.
* contrib/hbwin/win_os.prg
* Reverted 2010-10-22 19:08 UTC+0200
Turns out it was alright without the fix, as hb_osIsWinVista()
returns .T. also for upper versions (win7) by design, so it was not
necessary to change it to win_osIsVistaOrUpper() hbwin specific call.
Please double check it though, maybe I'm just too tired.
* contrib/hbqt/qtcore/hbqt_misc.prg
+ Changed to not RTE when disconnecting not-connected
event. It will instead return .F. now.
To be consistent with slots in this regard.
* Undone previous optimization after realizing that
events and slots low-functiona return different error codes.
It didn't cause any harm with current system though.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
% Optimized hb_snprintf() calls.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* Formatting.
* src/common/hbver.c
* Name of SPARC adjusted. Thanks to Tamas Tevesz.
* contrib/hbqt/qtcore/hbqt_misc.prg
* Laxed the rules for handling low-level connect/disconnect errors.
Now some cases will now RTE, some will return .F., some will get
ignored and .T. returned. Please refine it as required.
* Optimized :connect()/:disconnect()
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
! __HBQT_SLOTS_CONNECT() fixed to check for codeblock parameter
before actually making the connection on QT level.
Hopefully this was not some intentional feature.
* contrib/hbxbp/xbpmenubar.prg
! xbpMenuBar:delItem() fixed :disconnect() calls with wrong parameter.
Blindish fix, pls review and test.
* contrib/hbqt/tests/demoqt.prg
! Fixed wrong :connect call. Thanks to Tamas Tevesz for pinpointing it.
- contrib/hbqt/tests/dialogqt.prg
- Deleted files which doesn't compile since 1 year.
* contrib/hbqt/utils/hbqtgen.prg
+ Generate REQUEST __HBQT<NAME> puller code to each class definition
.prg. This will ensure that lib init code will always automatically
run if any QT class is used by an application.
* contrib/hbqt/*/g/*
* Regenerated.
* contrib/hbqt/tests/testres.prg
* contrib/hbqt/tests/demoqt.prg
* contrib/hbqt/tests/dialogqt.prg
* contrib/hbqt/tests/testbrow.prg
* contrib/hbqt/tests/testqaim.prg
* contrib/hbxbp/tests/demoxbp.prg
* contrib/hbxbp/tests/dialogqt.prg
- Deleted no more necessary REQUEST HB_QT and REQUEST HB_QTGUI
lines. INCOMPATIBLE: Please deleted these from your user code.
* contrib/hbqt/qtcore/hbqt_pointer.cpp
+ __HBQT_ERROR() accepts error code.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
+ __HBQT_SLOTS_[DIS]CONNECT(),
__HBQT_EVENTS_[DIS]CONNECT() will now return
a numeric error code which is zero on success
and a negative number on failure. Each failure
case returns a distinct number.
% Cleaned and simplified the code, though it's
still very messy and it probably has some bad
race conditions and other oddities also. Variable
names also need a revamp to get consistent.
Remove several TRACE calls, now the error ones
should RTE.
% Merged two internal worker functions into caller
function.
! Fixed bad miss in hbqt_slots_unregister_callback().
(It's not called in Harbour code yet)
Thanks Francesco Perillo for spotting it.
* contrib/hbqt/qtcore/hbqt_misc.prg
* :connect()/:disconnect() will now throw RTEs
in case any errors were detected. Can be fine
tuned later, if needed.
; NOTE: Please contribute with code and patches as I have
hardly much time to deal with complaints in detail.
Peer-review is also highly welcome. commit mailing
list is recommended to verify what has been changed.
* src/rtl/gete.c
% Optimization to GETENV()/HB_GETENV(). Patch by Tamas Tevesz.
+ Added more details to comment on why it's needed to strip '='
part from envvar name.
* contrib/hbqt/tests/demoqt.prg
* contrib/hbqt/tests/dialogqt.prg
* contrib/hbqt/tests/testqaim.prg
! Fixed external files' references to use executable's
directory as a base, instead of current dir.
* contrib/hbhpdf/harupdf.c
! HPDF_Page_CreateStampAnnot(): Fixed wrongly passed 3rd parameter.
* contrib/hbssl/evpmd.c
! EVP_SIGNFINAL(): Fixed wrong returned buffer size.
* config/postinst.hbs
* Implemented GetEnv() caching, based on patch sent by
Tamas Tevesz and further optimized.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
! Fixed to use hb_snprintf() instead of unsafe sprintf().
! Fixed __HBQT_SLOTS_CONNECT() to not accept non-blocks as
handlers.
! __HBQT_SLOTS_CONNECT() fixed to use its own function name
in generated RTE, instead of "CONNECT" string which might
not be easily located.
; TODO: Maybe it'd be even better to throw the RTE from the
wrapper class.
- Deleted commented lines.
* Formatted according to Harbour stds.
* contrib/hbqt/qtcore/hbqt.h
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
+ contrib/hbqt/qtcore/hbqt_registersignals.cpp
* contrib/hbqt/qtcore/hbqtcore.hbc
* contrib/hbqt/qtcore/hbqtcore.hbm
* contrib/hbqt/qtcore/hbqtcore.hbx
* contrib/hbqt/qtgui/g/QApplication.cpp
+ contrib/hbqt/qtgui/hbqt_registersignals.cpp
* contrib/hbqt/qtgui/hbqtgui.hbm
* contrib/hbqt/qtgui/hbqtgui.hbx
+ contrib/hbqt/qtnetwork/hbqt_registersignals.cpp
* contrib/hbqt/qtnetwork/hbqtnetwork.hbm
* contrib/hbqt/qtnetwork/hbqtnetwork.hbx
+ Implemented: module specific signal/slots mechanism.
Now each module contains its own signals. The basic
patch was forwarded by Viktor, cheer him.
* contrib/hbide/idemain.prg
+ Added: REQUEST __HBQT_REGISTERCORECALLBACKS
REQUEST __HBQT_REGISTERGUICALLBACKS
REQUEST __HBQT_REGISTERNETWORKCALLBACKS
I know this is a hack and can be removed once this new protocol
is fine tuned, so, so long.
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
+ Implemented: remaining signals from all classes included in hbQT.
It also include all signals related to QWebKit though any
component of this module is not referenced at all.
+ Implemented: another very sleak and manageable design.
* contrib/hbhpdf/harupdf.c
! Newly added 2.2.0 wrapper code protected with version guards.
Added fallback code for older versions.
; TODO: Split the wrapper into separate files to save final
binary size.
* contrib/hbqt/qtgui/hbqtgui.hbx
* contrib/hbqt/qtgui/THbQtUI.prg
* Renamed HbQtUI2 class to HbQtUI.
* contrib/hbqt/hbqt_hbmk2_plugin.hbs
* Changed code generared for .ui embedding to use
new, cleaned HbQtUI object.
; TODO: Fix user code to not access HbQtUI internal
variables.
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.h
- Deleted old monolithic code.
- Deleted eval callback variation (it was disabled).
% Cleaned headers.
; TODO: Dynamically register the callbacks, so we can finally
delete QtGui references from this code.
* contrib/hbqt/qtcore/hbqtcore.hbm
% Do not include hbqt_hbqslots.h anymore.
* contrib/hbqt/qtuitools/hbqtuitools.hbx
* contrib/hbqt/qtuitools/THbQtUILoader.prg
* Renamed HbQtUI class to HbQtUILoader.
+ Added TOFIX to change this class to inherit from HbQtUI.
; INCOMPATIBLE: If you use HbQtUI class to load on-disk .ui or .uic
files, update your code to use HbQtUILoader().
; NOTE: hbide must be clean built. (and all other apps that
are embedding .ui files)
* external/libhpdf/libhpdf.dif
* Patched up the diff file, fixing previous problem and applying
recent local change. Thanks to Tamas Tevesz for this patch.
* external/libhpdf/hpdfpdfa.c
! Fixed C++ variable declraration.
; NOTE: Could not rediff because the newly added hpdfpdfa.c file
is missing from the diffing process. Also current .diff
appears to contain some invalid diffs for this file.
* harbour/external/zlib/zutil.h
* harbour/external/zlib/gzguts.h
* disable vsnprintf() in DOS builds only for DJGPP 2.03 or earlier
! reenabled #include <io.h> in DOS builds - it was disabled by our
local modifications
TODO: regenerate .diff file
* harbour/contrib/hbssl/hbssl.hbc
* moved 'skip={dos}' after 'incpaths=.' as workaround for
broken DOS build process at hbtipssl
* harbour/rtl/hbjson.c
+ added human readable JSON encoding support
char * hb_jsonEncode( PHB_ITEM pValue, HB_SIZE * pnLen, HB_BOOL fHuman );
hb_jsonEncode( xValue [, lHuman = .F. ] ) --> cJSON
! removed UTF8 encoding from JSON functions. These function should
return/accept data in VM codepage, just like any other string
function. If JSON string is to be stored as some binary stream
(ex., file), HB_StrToUTF8() should be applied on the hb_jsonEncode()
result. This conversion removal fixes code when returned JSON string is used
not as a binary stream. Ex.:
oIE:document:getElementById("data_div"):innerHtml := hb_jsonEncode(xValue)