* harbour/examples/httpsrv/uhttpd.prg
* Added some hb_ToOutDebug() points garded from DEBUG_ACTIVE define
for debugging purpose
* harbour/examples/httpsrv/modules/showcounter.prg
* harbour/examples/httpsrv/modules/tableservletdb.prg
* fixed path for current directory
as now define all _SERVER variables
* harbour/examples/httpsrv/cookie.prg
* fixed error on deleting cookie
* contrib/hbwin/Makefile
+ contrib/hbwin/hbsim.ch
+ contrib/hbwin/wce_simc.c
+ contrib/hbwin/wce_smsc.c
+ contrib/hbwin/wce_sim.prg
+ contrib/hbwin/tests/testsim.prg
+ Added SIM reading and SMS sending interfaces for WinCE.
This is a contribution from Jose Luis Capel. Many thanks for it.
; NOTE:
mingwarm doesn't support these APIs unfortunately, poccarm does,
and msvcarm as well, but I couldn't try the latter.
(I've applied formatting, cleanups and some minor fixes)
Jose and all, please review and test.
* examples/httpsrv/uhttpd.prg
* examples/httpsrv/uhttpd.hbp
* examples/httpsrv/readme.txt
% Given less focus on the socket selection issue. Now the only
difference is .prg level API and local API is fully portable.
* Made the proprietary one the default on all platforms.
(it looks much more obvious/simple to use, also requires less
STATIC variables)
* contrib/hbwin/win_misc.c
! Fix for WinCE.
* ChangeLog
! Typos.
* source/common/hbdate.c
+ Enhancement to hb_timeUTCOffset(). (using thread safe
version of gmtime() where available, and precisely checking
tm_isdst). Thanks to Przemek.
* source/common/hbdate.c
! Fixed for some systems where tm->tm_gmtoff isn't available.
(like sunos). Thanks to Tamas Tevesz for report and pointer.
* contrib/rddads/adsfunc.c
+ ADSCREATESAVEPOINT()
ADSROLLBACKSAVEPOINT()
Added support for 3rd optional parameter on Harbour level.
* include/hbapi.h
* source/vm/extend.c
+ hb_parnidef(), hb_parnldef() to give a faster and shorter
alternative to HB_ISNUM( x ) ? hb_parn[i|l]( x ) : <value>
construct, which quite often occure in C interface code.
We may also add a hb_parl() version which returns TRUE,
this covers most real-life usages.
* examples/uhttpd2/socket.c
* examples/httpsrv/socket.c
% Deleted local hb_parnidef() wrapper.
* include/hbextern.ch
* source/rtl/dateshb.c
+ Added HB_UTCOFFSET() -> <nSecs> core function to return UTC offset
as signed number in seconds.
* contrib/hbwin/win_misc.c
+ Copied WIN_SYSREFRESH() from httpsrv. Bit reworked (types, goto,
64-bit compatibility, unnecessary outer loop), pls review.
* examples/httpsrv/uhttpd.hbp
- examples/httpsrv/uhttpdc.c
* examples/httpsrv/uhttpd.prg
* HB_UTCOFFSET() renamed to UHTTPD_UTCOFFSET() and rewritten as .prg.
! Using __PLATFORM__WINDOWS to enable WIN_SYSREFRESH() calls.
* include/hbdate.h
* source/common/hbdate.c
* contrib/hbtip/utils.c
* examples/httpsrv/uhttpdc.c
+ Added hb_timeUTCOffset( void ) -> long (in seconds)
% Using hb_timeUTCOffset() in TIP_TIMESTAMP() and HB_UTCOFFSET().
These functions can now be implemented on .prg level if we
add a .prg level wrapper for hb_timeUTCOffer(), but I have no
good idea which format to use to return this value, so maybe
simple signed number of seconds.
* contrib/hbtip/utils.c
* contrib/hbtip/tests/tiptime.prg
! Reworked TIP_TIMESTAMP():
! Applied fix from xhb. (with cleanups/optimizations and without
newly introduced bug)
+ Added support for DATETIME type as first parameter.
(at the same time second numeric time parameter is deprecated)
% Simplified code, more optimal API/memory usage.
* Second parameter will always override default time, if passed.
This is a little bit different, but more natural behavior than
before.
+ Replaced meaningless test code with some better one.
; NOTE: We should probably add some core functions to detect TZ offset.
* examples/httpsrv/uhttpdc.c
! Applied above fix/cleanups to HB_UTCOFFSET().
* source/common/hbdate.c
* Minor formatting.
* source/vm/dlmalloc.c
! Restored 2.8.3.
Huge amount of warnings (all Windows compilers), compile time (pocc, watcom)
and build time (mingw) errors, incompatibility with fm.c parts, with 2.8.4,
so I opted to revert.
I hope someone will give it another go, as it should provide better MT
performance on Windows, unfortunately this feature doesn't seem to be well
tested at this point.
* config/lib.cf
! Fix dir creation for hbpp executable with os2 shells.
* source/vm/dlmalloc.c
+ Updated to 2.8.4 (from 2.8.3)
Reapplied two local patches (the rest of local fixes were applied upstream):
2009-07-28 16:31 UTC+0200 Przemyslaw Czerpak
2009-03-30 22:17 UTC+0200 Przemyslaw Czerpak
; From the dlmalloc changelog:
V2.8.4 Wed May 27 09:56:23 2009 Doug Lea (dl at gee)
* Use zeros instead of prev foot for is_mmapped
* Add mspace_track_large_chunks; thanks to Jean Brouwers
* Fix set_inuse in internal_realloc; thanks to Jean Brouwers
* Fix insufficient sys_alloc padding when using 16byte alignment
* Fix bad error check in mspace_footprint
* Adaptations for ptmalloc; thanks to Wolfram Gloger.
* Reentrant spin locks; thanks to Earl Chew and others
* Win32 improvements; thanks to Niall Douglas and Earl Chew
* Add NO_SEGMENT_TRAVERSAL and MAX_RELEASE_CHECK_RATE options
* Extension hook in malloc_state
* Various small adjustments to reduce warnings on some compilers
* Various configuration extensions/changes for more platforms. Thanks
to all who contributed these.
* 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
* bin/hb-func.sh
* make_gnu.sh
% Deleted crs/sln detection. Not needed anymore for hbmk.cfg
generation.
* config/global.cf
! Don't set DOC dir for *nix targets.
* utils/hbmk2/hbmk2.prg
% Maybe I'm overlooking some scenarios, but I could simply drop the
need for libdynhas= in hbmk.cfg.
Now the required gtsln/gtcrs/gtxwc system libs will be automatically
linked when these libs are selected by user (either by hbmk.cfg,
.hbc or cmdline/.hbp files). Tested on Darwin.
I can add automatic addition of these system libs based on presence
of corresponding Harbour libs if needed. Or maybe even better would be
to never link these GTs to the Harbour dynamic lib. Please comment on this.
! Fixed to add external curses/X11/slang libs in -shared mode. Was needed
on Darwin.
+ Linking pdcurses for gtcrs with dos/djgpp.
* 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.
* utils/hbmk2/hbmk2.prg
! Fixed typo in linker option when building shared executable.
! Deleted -multiply_defined suppress linker option when building shared executable.
% Deleted some unused logic dealing with libdynhas option.
* make_gnu.sh
! Restored old sln/crs detection code, to fix creation of hbmk.cfg.
I'll try to remove the need for this content in hbmk.cfg, but
I don't know how yet (maybe by checking for gtsln/gtcrs/gtxwc libs
in lib dir would be the best, if they are there, we must assume the
dynamic lib has them, too). This way hbmk2 setup becomes fully dynamic.
* 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()
* bin/postinst.bat
* config/global.cf
! Fixed HB_BIN_COMPILE usage in postinst.bat. This variable
wasn't exported, so parts of postinst.bat didn't work with
cross-builds. Now HB_HOST_BIN_DIR is used instead, which
got exported from global.cf.
* INSTALL
* Minor.
* 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.
* config/global.cf
* config/globsh.cf
+ Moved $(DIRSEP) defaulting to global.cf for non-sh shells.
* config/global.cf
! Reverted prev opt. $(DIRSEP) must be used as the values are
exported and used in native script/batch files.
* 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.
* source/pp/Makefile
! Do not install hbpp executable when HB_HOST_BUILD == 'lib'.
Please verify me.
* config/global.cf
% Minor simplification to HB_*_INSTALL defaulting.
* utils/hbmk2/hbmk2.prg
* Minor formatting.
* contrib/hbxbp/xbp.ch
* contrib/hbxbp/xbpbrowse.prg
* contrib/hbxbp/xbpgeneric.prg
* contrib/hbxbp/xbpwindow.prg
+ Implemented XbpBrowse() class - a work-in-progress. Still a lot more to go.
* contrib/hbxbp/tests/demoxbp.prg
+ contrib/hbxbp/tests/test.dbf
+ Demonstrated XbpBrowse() implementation.
NOTE: Current implementation is just a proof of concept that
TBrowse or XbpBrowse like behavior can be simulated. But a lot
more work is needed to reach the destination. Currently,
data is fetched based on recno(). Qt's Model/View framework
expects number of rows to be supplied at the begining and hence
I could find only recno() to pull the row information.
I have an idea how exact behavior can be simulated but that
will need a lot of base work. So for now just play with what
I could achieve. Also note that on the face value, pure Xbase++ code
is working - headers, cell colors, colorblock, navigation, etc. Just study
the code and you will know how difficult it was just to precieve how
this could been achieved.
Any suggestions in direction are welcome.
* contrib/hbqt/generator/hbqtgen.prg
+ Added one more section <SUBCLASS> </SUBCLASS>. This holds .PRG
code representing a subclass inherited from main class. .CPP code is
held in hbqt_slots.cpp.
* contrib/hbqt/qth/QAbstractItemModel.qth
* contrib/hbqt/qth/QTableView.qth
* contrib/hbqt/hbqt.ch
* contrib/hbqt/hbqt.h
* contrib/hbqt/hbqt_slots.cpp
* contrib/hbqt/hbqt_slots.h
* contrib/hbqt/moc_slots.cpp
* contrib/hbqt/QAbstractItemModel.cpp
* contrib/hbqt/QTableView.cpp
* contrib/hbqt/TQAbstractItemModel.prg
* contrib/hbqt/TQTableView.prg
! result of <SUBCLASS> </SUBCLASS> implementation.
* 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.
* contrib/hbtip/sendmail.prg
* contrib/hbtip/client.prg
* contrib/hbtip/smtpcln.prg
+ Added TLS (SMTPS, SSL) support for SMTP class. It's experimental
yet, and there is still some protocol level error.
With this it'll possible to send e-mails through gmail for
example.
Some level of STARTTLS support (TLS on normal SMTP ports)
was also added, but I cannot test this.
Anyhow from this point it should be an easy task to
finish above details.
Since TLS was added to low level client class, it's now
possible to add SSL support also for POPS, HTTPS and FTPS.
; NOTE: This code part is only active if hbtip is built with
-DHAVE_OPENSSL build-time flag, and it also requires
hbssl lib + OpenSSL libs.
* contrib/hbtip/utils.c
! Fixed timezone offset being always zero in TIP_TIMESTAMP()