* contrib/hbmisc/dates2.c
* Renamed DAYSINMONTH() to HBMISC_DAYSINMONTH(),
to avoid collision with hbct function with the same
name, but different functionality.
- Deleted functions below from hbmisc library:
EOM(), BOM(), WOM(), DOY(), WOY(), EOY(), BOY()
They have superior alternatives with the same name
in hbct lib, please use those.
* contrib/hbssl/evpciph.c
* contrib/hbssl/ssl.c
* contrib/hbssl/bio.c
* contrib/hbssl/tests/pem.prg
+ contrib/hbssl/tests/pubkey.pem
* contrib/hbssl/tests/crypt.prg
* contrib/hbssl/err.c
+ Added EVP_SEALINIT() (under development)
+ Added EVP_SEALUPDATE(), EVP_SEALFINAL().
+ Added SSL_SET_MSG_CALLBACK() (it's a debug function really,
and the solution is slightly hackish, as I have to access
OpenSSL structure and Harbour item freeing needs to be done
manually. Anyhow it can be excluded from builds.
+ Added ERR_LOAD_CRYPTO_STRINGS().
+ Added ERR_PRINT_ERRORS(). (very useful)
+ Added ERR_FREE_STRINGS().
* include/hbapi.h
* source/vm/arrays.c
* source/vm/extend.c
* source/debug/dbgentry.c
* source/rtl/hbgtcore.c
! Renamed API function hb_arraySetCPtr() to hb_arraySetCLPtr().
Old function name still available for compatibility.
* INSTALL
* make_gnu.bat
* Tweak to previous fix, it didn't work. Falling back to
less elegant solution.
* external/libhpdf/Makefile
+ external/libhpdf/_hbhbpdf.c
+ Added ugly hack to make it build on mingwarm targets.
* contrib/hbssl/Makefile
* contrib/hbssl/ssl.c
* contrib/hbssl/bio.c
* contrib/hbssl/evpmd.c
* Changed to make it build on darwin.
It's be better to control feature automatically by
OPENSSL_VERSION_NUMBER, but documentation is very scarce.
* utils/hbmk2/hbmk2.prg
! Temp fix to not pass runflags to darwin GUI programs
(started via 'open'), until we find out how to make it.
Prevsiously 'open' considered extra options as its own,
and failed.
* make_gnu.bat
! Added SHLVL=0 to make commands to force native shell
even if sh shell is found in the PATH (f.e. when msys or
cygwin is present there, for mingwarm targets, cygwin is
even required.)
* external/libhpdf/Makefile
+ Made it compile with mingwarm.
* include/hbextern.ch
! Fixed typo in prev.
* contrib/hbssl/pem.c
+ Added two new functions. Under testing.
PEM_READ_BIO_RSAPRIVATEKEY()
PEM_READ_BIO_RSAPUBLICKEY()
* include/hbapi.h
* source/common/hbstr.c
* source/rtl/hbmd5.c
* Moved (and somewhat standardized and renamed) mem to hex C
function from hbm5/rtl to common lib.
* bin/hb-func.sh
! Fixed double '%' chars in hbmk.cfg generation.
* contrib/hbcrypt/Makefile
+ contrib/hbcrypt/hbsha1.c
+ contrib/hbcrypt/hbsha1hm.c
+ contrib/hbcrypt/tests/testsha1.prg
+ Added HB_SHA1() and HB_HMAC_SHA1() functions.
* source/rtl/hbmd5.c
* Changed meaning of second boolean parameter. From
now on a .T. has to be passed to get binary output.
(I won't list this as a incompatible, as the new
parameter has just been introduced)
; by now HB_MD5() and HB_SHA*() functions are synced
in functionality.
* contrib/hbcrypt/hbsha1.c
* contrib/hbcrypt/hbsha2.c
* contrib/hbcrypt/hbsha1hm.c
* contrib/hbcrypt/hbsha2hm.c
* contrib/hbcrypt/tests/testsha2.prg
* Changed all SHA2 functions to returned digest in hex
format by default. The binary format can be requested by
passing .T. as an extra parameter.
INCOMPATIBLE: Please update your sources if you used
these functions. Add .T. parameter to keep
current workings.
* contrib/hbcurl/hbcurl.c
% Cleaned types (no BYTE, no BOOL, deleted unnecessary casts).
Only a few ULONGs remained.
* contrib/hbssl/pem.c
+ Some advances.
* contrib/hbqt/hbqt_slots.cpp
* contrib/hbqt/hbqt_slots.h
* contrib/hbqt/moc_slots.cpp
! Normalized the events management code. Now uniform across all objects.
* contrib/hbssl/evpciph.c
* contrib/hbssl/evpenc.c
! Potential fix to passing buffer size to some functions. The
docs are not fully clear, but anyhow this cannot hurt.
* contrib/hbssl/Makefile
+ contrib/hbssl/evp.c
+ contrib/hbssl/evpciph.c
+ contrib/hbssl/evpmd.c
* contrib/hbssl/hbssl.ch
+ contrib/hbssl/tests/digest.prg
+ contrib/hbssl/tests/crypt.prg
+ Added almost complete EVP (hashing, encryption, decryption) API.
This means support for a max of 14 hashing methods and
about 90 symmetric encryption methods.
* contrib/hbssl/ssl.c
* contrib/hbssl/sslctx.c
* Moved two functions between files.
* bin/postinst.bat
* config/globsh.cf
+ Tweaked/fixed to allow building Harbour present on a path
which contains spaces.
* contrib/hbwin/win_reg.prg
* contrib/hbwin/win_regc.c
! GETREGISTRY() fixed to return default only if the
registry entry doesn't exist. Previously it was
falling back to default even if the value existed but
was empty. In case of empty string, these weren't
possible to write from hbwin, but could exist in registry
when written by other tools.
! GETREGISTRY() fixed to return binary data as string
for REG_BINARY types. (previously it was returning
an unsigned int - essentially truncating everything
beyong the first 4 bytes).
! GETREGISTRY() fixed to swap words for REG_DWORD_BIG_ENDIAN
values to return correct unsigned integer results.
(not tested)
! GETREGISTRY() fixed to strip only the ending Chr( 0 )
from string values. This makes it possible to utilize
strings containing nul chars (obviously) and also to
parse REG_MULTI_SZ multistring values.
! GETREGISTRY() fixed to not RTE if WIN_REGQUERYVALUEEX()
returned non-null length and a non-string value.
I still have to understand how this was possible, but
I got a report that it happened on a system.
! WIN_REGQUERYVALUEEX() fixed to store NIL in 5th param,
if the registry entry doesn't exist.
! WIN_REGQUERYVALUEEX() fixed to store empty string when
registry value is zero length.
* include/hbapi.h
* source/vm/extend.c
+ Added API hb_stor() to store a NIL into a parameter passed
by reference.
* source/vm/arrays.c
* Minor formatting.
* contrib/hbqt/hbqt_slots.cpp
* contrib/hbqt/hbqt_slots.h
* contrib/hbqt/moc_slots.cpp
+ Added "timeout()" signal. I am not sure if it will work.
Please let me know if I am right, otherwise I have to restructure
this mechanism from bottom-up.
* contrib/hbssl/ssl.c
+ contrib/hbssl/hbssl.c
* contrib/hbssl/Makefile
+ HB_SSL_READ_ALL() and HB_SSL_READ_LINE() rewritten.
(HB_SSL_READ_ALL() isn't fully optimal, and maybe there
are errors, please check.)
+ Added SSL_GET_RFD(), SSL_GET_WFD().
* include/Makefile
+ include/hbapinet.h
* source/rtl/hbinet.c
+ Moved some basic declarations to new API header,
mainly to export hb_select[Read|Write]*() functions.
We will also need such header in the future when
we implement C level socket/networking API. Current
solution is quite messy since the header has to
pull Windows headers which may not be friendly with
all usages/include order.
* source/rtl/hbinet.c
* HB_SOCKET_STRUCT renamed to HB_SOCKET.
+ Added PHB_SOCKET type.
+ Added hb_selectReadFD(), hb_selectWriteFD() which
are similar to hb_selectReadSocket() and
hb_selectWriteSocket() but expect raw FD plus explicit
timeout values.
These function names and solutions are tentative
to solve SSL integration with Harbour, and hopefully
in the future we will have a clean net API, the current
one is very messy.
* source/vm/itemapi.c
! hb_itemPutCPtr(), hb_itemPutCLPtr() fixed to put empty
string to item if szText is NULL and length is non-zero,
instead of trying to free NULL pointer causing internal
error.
* include/hbextlng.ch
* Corrected header to be in sync with CDP and not
to repeat the filename.
* contrib/hbssl/Makefile
+ contrib/hbssl/sslerr.c
+ contrib/hbssl/sslx509.c
* contrib/hbssl/ssl.c
* contrib/hbssl/sslctx.c
* contrib/hbssl/hbssl.ch
* contrib/hbssl/tests/test.prg
+ Added ERR_*() API functions.
+ Prefixed .ch contant names with HB_ to avoid collision with
ssl own headers.
+ Added SSL_CTX_SET_MODE(), SSL_CTX_GET_MODE() functions.
+ Added HB_SSL_READ_ALL(), HB_SSL_READ_LINE() functions meaning
to mimic HB_INETRECVALL() and HB_INETRECVLINE(). (probably needs
more work, it'd be great if someone who understands the guts of
these inet functions could take a look)
* SSL_PEEK() synced with SSL_READ() recent changes.
+ Added SSL_SET_MODE(), SSL_GET_MODE(), SSL_SET_MTU() functions.
+ Added SSL_GET_RBIO(), SSL_GET_WBIO() functions.
+ Added SSL_GET_PEER_CERTIFICATE() function.
+ Added X509_GET_SUBJECT_NAME(), X509_GET_ISSUER_NAME(), X509_NAME_ONELINE()
+ Added HB_SSL_MODE_* constants.
* include/hbextern.ch
* Changed to use new hbextlng.ch.
- examples/hbextern/hbextern.lst
! It wasn't deleted in 2009-07-18 21:37 UTC+0600 for some reason.
* source/rtl/console.c
! Fixed OUTSTD() and OUTERR() to output separator space
to std/err instead of alt.
* source/rtl/hbinet.c
% Minor optimization.
* contrib/hbssl/Makefile
* contrib/hbssl/hbssl.h
* contrib/hbssl/hbssl.ch
* contrib/hbssl/sslctx.c
* contrib/hbssl/ssl.c
+ contrib/hbssl/sslbio.c
* contrib/hbssl/tests/test.prg
! Fixed a few bugs and typos, so now the test works.
+ Added very basic BIO interface.
* source/pp/Makefile
- Removed HB_PPGEN_PATH setting. Now HB_BIN_COMPILE is used to
point to the directory where all native executables are to be
found. This means you can simply delete HB_PPGEN_PATH from
your local settings.
; NOTE: Please update make_gnu_xmingw*.sh script accordingly,
it should probably accept (detect) HB_BIN_COMPILE and
drop HB_COMP_PATH / HB_PPGEN_PATH settings.
Or, we should define some new ways to define cross
builds replacing the current mess (there is also
HB_XBUILD). I'd vote for these envvars:
- HB_HOST_ARCH (linux, win, dos, os2, etc...)
- HB_HOST_BIN (dir of native executables)
- HB_HOST_BIN_EXT (.exe or empty)
* INSTALL
* Updated cross-build sections and deleted make_gnu_xmingw*.sh
related exception to keep instructions clean.
* contrib/hbwin/wapi_commctrl.c
* contrib/hbwin/hbwapi.h
! Fixed to compile under various other win compilers.
! Added missing WinCE protections. (notice all tools are freely
available to check these and avoid breaking builds)
Added non-WinCE branch to return dummy values.
! Formatted: (_WIN32_IE >= 0x0300) -> ( _WIN32_IE >= 0x0300 )
! Fixed non-ANSI comments.
! Fixed warnings, and there is still some dubious comversions
in there like HANDLE - HTREEVIEW and RECT passings. I wonder
if it is possible at all to create clean Windows API code.
; NOTE: Please take care of above stuff, it's not a pleasure
to be the cleaner of such code, but it breaks builds
to it must be done all the time.
; NOTE: I'd like to recommend adding only Windows API functions
which are available on all Windows platforms (WinCE,
Win64) otherwise it will be more difficult to build
anything portable on top of them.
; QUESTION: Why many functions are disabled with #if 0?
* contrib/hbwin/hbwapi.h
* contrib/hbwin/wapi_commctrl.c
+ Added TreeView_* functions under namespace HB_FUNC( WAPI_TREEVIEW_* ).
NOTE: Please check for different compilers/platforms. I have tried to confine
functions in #ifdef but these may be limited.
* contrib/hbxbp/xbpfontdialog.prg
* contrib/hbxbp/xbprtf.prg
+ Implemented :print( oXbpPrinter, lOnlySelection ) in XbpRTF() class.
TODO: <lOnlySelection> is not functional yet.
+ Implemented :selFont GETSET METHOD - Harbour Extension - this accepts
XbpFont() object as new font.
* contrib/hbxbp/tests/demoxbp.prg
+ Demonstrated the use of XbpFontDialog() with XbpRTF().
1. Click on <Rtf> tab.
2. Select some text.
3. Click on <Font> Push Button - it will open Font Dialog on the left-top corner.
4. Move around in the font dialog, select every factor available, change it,
you will see the effects on selected text in <Rtf>.
* contrib/hbxbp/xbpdialog.prg
* contrib/hbxbp/xbpgeneric.prg
! Changed the way AppEvent() eventloop was being executed.
Not it is more near to Xbase++, not 100% but near.
CPU consumption is reduced to 2-3 percent.
* contrib/hbxbp/xbprtf.prg
+ Implemented more XbpRTF() features.
* contrib/hbxbp/tests/demoxbp.prg
+ Demonstrated more XbpRtf() features.
Play with Rtf tab.
* INSTALL
+ Added Linux build on NT host example.
* utils/hbmk2/hbmk2.prg
+ Added support for most watcom cross-compile situations.
(os2/linux/dos on win, os2/linux/win on dos, dos/win/linux on os2,
dos/win/os2 on linux - I didn't test them all obviously)
! Some fixes regarding Linux targets on non-Linux hosts cross
build situations. This is brand new situation.
! Synced watcom/os2 flags with build ones to avoid hbmk2 build errors
on os2.
! Fixed linux/watcom object extension, which appears to be .obj
when using non-Linux hosts.
* make_gnu.bat
* Linux cross-build support.
! Fixed to find make_gnu.sh when doing partial builds using
bash on Windows.
* config/win/global.cf
* config/win/install.cf
* config/linux/dir.cf
* config/linux/global.cf
* config/linux/install.cf
* config/os2/global.cf
* config/os2/install.cf
* config/wce/global.cf
* config/wce/install.cf
+ install bash section synced across linux/windosos2 platforms.
+ empty target handling synced across linux/windosos2 platforms.
+ Added support to linux build files for cross builds on
Windows and OS/2 hosts.
; TODO: Whole install/global/dir.cf logic is just crying to be moved
to central location and be branched by host platform/shell
rather than target platform.
; Please check me on the linux changes, could be that I messed it up.
* source/rtl/Makefile
+ Enabled to try building all GTs on every platform.
Local autodetection should take care of the decision to finally
build it or not.
* source/rtl/gtxwc/Makefile
* source/rtl/gtcrs/Makefile
* source/rtl/gttrm/Makefile
* source/rtl/gtsln/Makefile
+ Added self-detection for external headers just like it's done
in contribs. This is required to support Linux cross-builds on
Windows. (djgpp + curses ends with build errors)
+ Added GPM autodetection.
+ Enabled gttrm for cygwin. (only in local make file)
; TOFIX: Remove such detection logic from make_gnu.sh (it's
now redundant and doesn't work for djgpp/cygwin)
* source/rtl/gtwin/gtwin.c
* source/rtl/hbgtcore.c
* contrib/xhb/txml.prg
* Minor formatting.
* contrib/gtqtc/gtqtc.cpp
! BYTE => int.
* contrib/gtqtc/tests/demoqtc.prg
! Removed Windows specific stuff.
/* What is the status of this lib? It is still not included in default build ! */
* contrib/rddads/adsfunc.c
% Minor optimizations.
* Using sizeof() instead of repeating buffer sizes.
* Formatting.
- Deleted no more relevant comment.
* examples/terminal/trm_cli.prg
* examples/terminal/terminal.prg
! Fixes to prev change.
* harbour/contrib/hbxbp/xbp.ch
! Minor formatting.
* harbour/contrib/hbxbp/xbpgeneric.prg
! A small fix.
* harbour/contrib/hbxbp/xbprtf.prg
+ Implemented :insertImage( cImageFilename ) member - an Harbour extension.
* harbour/contrib/hbxbp/tests/demoxbp.prg
! Added pushbuttons in <Rtf> tab to demonstrate various features.
+ Demonstrated non-Xbase++ compatible feature :insertImage().
Just play.
* harbourr/contrib/hbqt/QPrinter.cpp
* harbourr/contrib/hbqt/QTextCursor.cpp
* harbourr/contrib/hbqt/TQPrinter.prg
* harbourr/contrib/hbqt/TQTextCursor.prg
* harbourr/contrib/hbqt/qth/QPrinter.qth
! Commented out setWinPage() and winPage() calls - Windows only.
* harbourr/contrib/hbqt/qth/QTextCursor.qth
! changed the order of insertImage() calls.
* INSTALL
+ Added information about creating Windows / Windows CE
builds on Linux. Corresponding scripts references.
! Minor correction to OS/2 on Windows cross-build example.
* contrib/hbct/Makefile
- contrib/hbct/blank.prg
+ contrib/hbct/blank.c
+ Applied patch by Pavel Tsarenko (xhb) (with some little modifications):
BLANK() function rewritten in C.
* contrib/rddads/adsfunc.c
! Reimplemented fix from Pavel Tsarenko (xhb):
Removed unnecessary OEM to ANSI convertation in SQL functions.
* harbour/contrib/hbxbp/Makefile
* harbour/contrib/hbxbp/xbp.ch
* harbour/contrib/hbxbp/xbpdialog.prg
* harbour/contrib/hbxbp/xbpgeneric.prg
* harbour/contrib/hbxbp/xbpprinter.prg
+ harbour/contrib/hbxbp/xbprtf.prg
+ Implemented XbpRtf() class - the toughest so far.
Example code lifted from Xbase++ documentaion is working as is
except for one feature. Still more work is required. I see a
possibility of lot more features in this class - later.
* harbour/contrib/hbxbp/tests/demoxbp.prg
+ Demonstrated the XbpRtf() class implementation.
Click on <Rtf> tab-page and view the results. Also examine the code.
* make_gnu.bat
+ Minor adjustment to support OS/2 cross-builds.
* source/rtl/gtwvt/gtwvt.c
* Minor adjustment to casting to Windows type.
* contrib/hbfimage/Makefile
- Disabled for OS/2.
* bin/postinst.cmd
+ Synced with .bat. 'copy' replaced by 'xcopy'.
* config/os2/watcom.cf
+ Added fix (from win/watcom.cf) to swap dirseps
for wcc386 as it cannot accept forward slashes.
Przemek, please adapt this for Linux, as it's
probably not needed there.
* harbour/config/os2/watcom.cf
* harbour/config/os2/dir.cf
* harbour/config/os2/install.cf
* small cleanup for builds with *nix like shells and cross builds
* harbour/contrib/rddads/Makefile
! disabld from OS2 builds - if ADS supports OS2 then please speak-up
* harbour/include/hbthread.h
* added small hack as workaround for missing OS2 declarations
* harbour/source/rtl/filesys.c
! fixed typo in OS2 builds
* harbour/source/rtl/hbproces.c
! fixed non GCC OS2 builds
* harbour/contrib/hbtpathy/tpos2.c
! fixed casting in OS2 builds
* harbour/contrib/xhb/hbserv.c
! disabled from OS2 non GCC builds
Now I can create OS2 OpenWatcom build in my Linux box using this simple
script:
#!/bin/sh
if [ -z "${WATCOM}" ]; then
export WATCOM="/opt/lng/watcom"
export INCLUDE="${WATCOM}/h:${WATCOM}/h/os2"
export PATH="${WATCOM}/binl:$PATH"
fi
export HB_ARCHITECTURE=os2
export HB_COMPILER=watcom
export HB_INSTALL_PREFIX="$(pwd)/hb-os2/watcom"
#cross build settings
# this should be fixed and we should use HB_PPGEN_PATH as direct
# reference to hbpp binaries and HB_COMP_PATH as direct reference
# to harbour binaries in all builds. Otherwise we have to create
# some hacks to create platform specific names for above binaries
# i.e. in *nixes links with .exe extension.
export HB_PPGEN_PATH="/tmp/cros-hb"
export HB_BIN_COMPILE="/tmp/cros-hb"
export HB_USER_PRGFLAGS="${HB_USER_PRGFLAGS} -D__PLATFORM__OS2"
export HB_USER_PRGFLAGS="${HB_USER_PRGFLAGS} -undef:__PLATFORM__UNIX"
export HB_USER_PRGFLAGS="${HB_USER_PRGFLAGS} -undef:__PLATFORM__LINUX"
# eliminate libraries which scans for local host header files
export HB_XBUILD=yes
./make_gnu.sh "$@"
It should work also in Windows with MSys.
This should resolve the problem with testing OS2 builds, at least
for OpenWatcom. I do not know if GCC for OS2 is available as cross
build environment.
I think that Viktor can quite easy adopt hbmk2 for OS2 cross compilation.
* contrib/hbxbp/xbpdev.ch
+ Added SVN ID.
* source/rtl/hbinet.c
+ Added hbU16 casts to silence very old warnings.
* source/rtl/gtapiu.c
* Tweaked type and constant usage.
* include/hbgtcore.h
* include/hbapigt.h
* source/rtl/gtapi.c
* source/rtl/hbgtcore.c
* contrib/hbct/ctwin.c
* contrib/hbct/screen1.c
* contrib/hbct/ctwfunc.c
* GetClearChar/SetClearChar changed to use USHORT for char
(was int). This resolves all remaining MSVC warnings.
* _HB_GT_BASE structure adapted to latest changes, three
vars changed from USHORT to int, one renamed to reflect
int type.
+ Added var names to a few functions declarations.
% Minor optimizations.
* hb_gtScrollEx() modified to not do parameter evaluation,
just pass them to low-level.
; Przemek, please review me, I've again encountered UCHARs
in hbct / SETCLEARB().
* source/rtl/idle.c
* SHORT -> int.
* Minor formatting.