* harbour/source/rtl/hbsocket.c
* force blocking IO on socket returned by accept() - on some system
new sockets can inherit blocking IO flag from the listening socket
* harbour/source/rtl/hbsocket.c
! fixed stupid typo in S&R - I reverted select() socket sets
in send()/recv() when I was modifying function names.
It can be also an answer why it exploited some problems
with hb_InetRecvLine() in Francesco code.
* harbour/source/rtl/hbsocket.c
* accept NULL and empty string "" as default address (INADDR_ANY)
in hb_socketInet?Addr() functions
* harbour/source/rtl/hbinet.c
% use NULL as default address in hb_socketInetAddr()
* harbour/source/rtl/gtcrs/Makefile
* disabled from OS2 builds - if someone knows OS2 curses port then
he can try to reenable it and update gtcrs code to compile with it.
* include/hbsocket.h
* contrib/hbssl/hbssl.c
* source/rtl/hbsocket.c
* source/rtl/hbinet.c
* examples/uhttpd2/socket.c
* examples/httpsrv/socket.c
* HB_SOCKET_T -> HB_SOCKET
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/wvggui.c
* source/rtl/gtstd/gtstd.c
* source/rtl/filesys.c
* source/rtl/gtpca/gtpca.c
* source/rtl/gtwvt/gtwvt.c
! Added casts for msvc64.
Some C RTL functions in msvc64 expects file handles as 'int's.
The rest is some non-critical stuff.
Now only size_t to int/ULONG warnings remain in hbrtl.
; TOFIX: Plus these two:
../../../hbstrfmt.c(459) : warning C4244: 'argument' : conversion from '__int64' to 'ULONG', possible loss of data
../../../hbtoken.c(280) : warning C4244: '=' : conversion from '__int64' to 'ULONG', possible loss of data
* harbour/source/rtl/hbsocket.c
% small improvement in INET6 broadcast address initialization
enabled for all *nix builds, tested only with Linux and SunOS.
* make_gnu_os2.cmd
* make_gnu.bat
% Deleted defaulting of HB_*_INSTALL. Now done by make files.
; Same should be done for *nixes.
* contrib/xhb/inet.h
* Converted to a stub which shows error. This header was
making public some local structures and functions which are
no longer supported in Harbour.
* contrib/xhb/inet.h
* contrib/hbct/print.c
* contrib/hbtpathy/tpwin.c
* source/rtl/hbinet.c
! *WIN_32* -> *WIN*
* source/rtl/hbinet.c
% Deleted _HB_SOCKET
* [P]HB_SOCKET -> [P]HB_SOCKET_STRUCT
; This gives way to use HB_SOCKET as a public name.
* Renamed Socket -> socket, Newsocket -> new_socket
; Generated code is verified to stay the same.
* external/libhpdf/Makefile
+ Enabled for os2/watcom.
* include/hbdefs.h
* Minor addition to new type section.
'bool' is the new type for boolean, so maybe we should
use them instead of hbBool/TRUE/FALSE.
* source/rtl/hbsocket.c
! Added one 'static'.
* Added one pair of paranthesis (formatting).
* source/rtl/hbgtcore.c
* source/rtl/hbsha1.c
* contrib/hbwin/win_prt.c
* Minor formatting.
* contrib/xhb/xhbfunc.c
+ Added copyright holder for HB_F_EOF().
* contrib/hbssl/ssl.c
! Minor typo in comment.
* contrib/hbssl/hbssl.h
! Added HB_EXTERN_BEGIN/HB_EXTERN_END.
* config/global.cf
+ Added HB_UNIX_COMPATIBLE variable.
+ Setting default lib install dir to lib/<arch>/<comp>
on non-*nix systems.
* examples/httpsrv/socket.c
+ Copied from uhttpd2. Please verify.
* harbour/include/hbstack.h
+ added socket error codes to HB_IOERRORS
* harbour/include/Makefile
+ harbour/include/hbsocket.ch
+ harbour/include/hbsocket.h
* harbour/source/rtl/Makefile
+ harbour/source/rtl/hbsocket.c
+ added new BSD socket functions: hb_socket*(). They should be quite
close to low level C socket interface with few modifications which
help to hide some platform differences. Unfortunately we do not use
autoconf so I had to arbitrary set which features are available
on some platforms. In practice it means that it reduces portability
to older OS-es, i.e. it should work with current Linux versions
but it will not without some modifications in macros used to control
supported features with older Linuxes using kernel 2.2 or 2.0.
The same can happen with other *nix ports like Darwin, SunOS, HP-UX
or with different versions of some Windows compilers. I also do not
know which functionality is available in OS2 GCC ports and I would
like to ask OS2 users to make tests and disable not working features.
We also need tests with HP-UX, Darwin and SunOS.
IP6 support is enabled only in *nixes. If Windows users are interested
in IP6 then please add support for it. Most of Windows compilers do
not support standard POSIX functions so I do not want to make it
myself using unknown for me API without testing.
In *nix builds PF_UNIX/PF_LOCAL sockets are also supported.
Support for other socket types can be easy added if someone is
interested in them.
The constant values used in hbsocket.ch are equal to original BSD
socket definitions. If it's necessary then it's possible to enable
their translation inside hbsocket.c code though I do not think we
will find such OS.
The list of hb_socket*() functions was designed to cover all existing
functionality in hbinet.c and socket.c. Most of functions supports
timeout parameter what effectively allows to hide direct select()
usage.
Please make test with real applications and report any problems
with hb_inet*() functions you will find.
* harbour/source/vm/hvm.c
* minor cleanup
* harbour/source/rtl/hbi18n1.c
* cleaned variable name
* harbour/source/rtl/hbinet.c
* harbour/examples/uhttpd2/socket.c
* harbour/contrib/hbssl/hbssl.c
* updated to use hb_socket*() functions
* harbour/include/hbextern.ch
* enabled HB_INET*() functions in DOS builds - they will simply return
errors
- harbour/include/hbapinet.h
- removed old header file
* harbour/source/pp/ppcore.c
! modified ENDTEXT marker to work also with comments in the same line
It's more closer to Clipper though intentionally we are not fully
CA-Cl*pper compatible here.
+ source/rtl/hbfeof.c
* source/rtl/Makefile
* source/rtl/philes.c
! HB_FEOF() moved to separate file to ease name collision
situations.
* contrib/hbssl/evpciph.c
* contrib/hbssl/bio.c
* contrib/hbssl/evpmd.c
* contrib/hbssl/evpenc.c
! Fixed buffer sizes, after valgrind test.
(off by one bugs. hb_storclen_buffer()/hb_retclen_buffer() need
one byte extra above the size returned, in order to hold the
EOS char)
* contrib/xhb/freadlin.c
* contrib/hbqt/qth/QFtp.qth
* contrib/hbqt/qth/QHttp.qth
* contrib/hbqt/QFtp.cpp
* contrib/hbqt/QHttp.cpp
* contrib/hbcurl/hbcurl.c
* contrib/hbwin/win_prt.c
! Fixed similar to above allocation errors.
* config/global.cf
+ Added HB_???_INSTALL initialization. Just a step, needs more
work before making it a replacement for current method.
* 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.
* 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.
* source/rtl/net.c
! Fixed NETNAME()/hb_netname() on dos/watcom platforms
in error cases it was leaking 16 bytes of memory.
(+ minor formatting)
Please review me.
+ NETNAME(), HB_USERNAME() now do conversion from OS
codepage. Couldn't test it, please review me.
* harbour/source/vm/itemapi.c
* cleaned hb_itemPutC*() functions. Now each function which accepts
only pure szText pointer without length can be called with NULL
as szText. Each function which need string length parameter needs
non NULL szText value. I hope it's easy to remember for developers.
% minor code optimizations for above rules
* harbour/source/rtl/filebuf.c
* allow to reuse tables in aliased workarea in RW mode after previous
opening in RO mode
* 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.
* harbour/source/rtl/gtcrs/Makefile
* test for HB_COMPILER=djgpp instead of HB_ARCHITECTURE=dos to
activate trick used to detect PDCURSES in DJGPP builds when
* source/rtl/hbinet.c
* Formatting, cleanup.
* Few types cleaned. Although many 'int's seems better be 'long',
I didn't touch it.
Please review. No functionality should change.
! HB_INETSTATUSDESC() to always return string if socket is valid.
* harbour/source/rtl/gtwin/gtwin.c
* added code to disable/enable mouse input by:
hb_gtInfo( HB_GTI_MOUSESTATUS, <lOnOff> )
It's possible that hb_gtInfo( HB_GTI_MOUSESTATUS, .F. ) will also
disable mouse cursor in full screen mode but I haven't tested it.
Please check.
* source/rtl/gtwin/gtwin.c
* Minor formatting.
* source/rtl/gtapi.c
% hb_gtSetCursor(): Deleted parameter evaluation.
It's better to do it only on low-level.
* config/win/bcc.cf
% Line deleted.
* utils/hbmk2/hbmk2.prg
+ -nohblib now supported in scripts.
+ -nohblib- option added.
* examples/pp/pp.hbp
* Comment deleted.
* bin/hb-func.sh
* make_gnu.sh
* Moved lib detection logic to hb-func.sh.
; It'd be better to have a way to gather such information
along the make process in some .cfg files.
* source/rtl/gtcrs/Makefile
- Deleted some header locations which weren't checked anyway
before these changes. Please review.
* config/djg-make.exe
+ Updated to 3.81 (from 3.79.1) found in djgpp 2.04 (beta)
(doesn't resolve the dos/watcom problem with hbpp)
* source/vm/extend.c
! Fixed hb_parvcx() to return "" instead of NULL when dealing
with array parameters out of bound or non-string.
(Borrowed from xhb by Ron Pinkas. Although the fix is
implemented differently in Harbour)
* source/rtl/gttrm/Makefile
* CFLAGS -> HB_USER_CFLAGS
* include/hbapicdp.h
* include/hbextern.ch
* source/lang/Makefile
* source/codepage/Makefile
+ source/codepage/cpua1125.c
+ source/codepage/uc1125.c
+ Added DOS Ukrainian 1125 codepage
(Borrowed from xhb. Work of Pavel Tsarenko)
* utils/hbmk2/hbmk2.prg
* OS/2 embedded compiler autodetection order fixed.
* harbour/source/rtl/gtcrs/gtcrs.c
* harbour/source/rtl/gtcrs/gtcrs.h
* harbour/source/rtl/gtcrs/Makefile
* updated to compile with DJGPP and PDCURSES
* harbour/source/rtl/gttrm/Makefile
* harbour/source/rtl/gttrm/gttrm.c
* updated to compile with DJGPP - warning it needs remote terminal or
at least ANSI driver for local execution
* harbour/source/rtl/gtchrmap.c
* enabed for DOS builds
* Makefile
! Adjusted a little bit to postinst.bat executed for Linux
cross builds also.
* doc/linux1st.txt
* source/rtl/Makefile
* config/hpux/global.cf
* config/darwin/global.cf
* config/dos/global.cf
* config/win/global.cf
* config/win/xcc.cf
* config/win/mingw.cf
* config/win/pocc.cf
* config/linux/watcom.cf
* config/linux/global.cf
* config/os2/global.cf
* config/sunos/global.cf
* config/bsd/global.cf
* config/wce/global.cf
* config/wce/poccarm.cf
- Deleted references of already halfly-deleted HB_GT_LIB
support. Users should use -DHB_GT_LIB=<gtname>. HB_GT_LIB
also has a different, special purpose in os2, this is still
kept, but it would be better to use some other names for it.
! Fixed linux/watcom to suppress .elf extension of binaries
when built on a non-Linux host.
- Deleted extra GT libs from link list. Now all *portable* GTs
plus the default one are *linked*, and all GTs are always
attempted to be *built*.
- Deleted checking GT libs extistance. They always exist
unless the source tree is corrupted, so there is no point
to do this check.
* wce/poccarm now always have /SUBSYSTEM:WINDOWS.
; NOTE: If we want to support build-time default GT selection/override,
we should find some proper ways, but it makes things
very complicated without much benefit, since GT can be
easily overridden in final apps, supplied binary tools can
also very easily rebuilt using hbmk2 with whatever GT.
* utils/hbmk2/hbmk2.prg
* Minor formatting.
* harbour/source/rtl/gtcrs/Makefile
* harbour/source/rtl/gttrm/Makefile
* harbour/source/rtl/gtsln/Makefile
* disabled GPM when HB_GPM_MOUSE=no or HB_COMMERCE=yes
Please remember that GPM is pure GPL library.
* source/rtl/gtcrs/Makefile
* source/rtl/gtsln/Makefile
* Detection locations synced with make_gnu.sh.
(not 100%, ncurses.h isn't checked for existence in Makefile,
as it's not used anyway in our sources. should be removed from
make_gnu.sh probably.)
* 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.
* source/rtl/gtwin/gtwin.c
* source/rtl/gtwvt/gtwvt.h
* source/rtl/gtwvt/gtwvt.c
* Formatting.
* source/rtl/gtwin/gtwin.c
! Fixed displaying cursor after recent changes. It was
a small mistake when removing some dead code.