* source/pp/pplib.c
* source/compiler/hbstripl.c
+ Added HB_EXTERN_BEGIN/END plus explicit declaration of
some static functions to make SunPro C++ mode happy.
There are still *tons* of warnings messages, most of them
complaining about function declaration 'extern "C"' and
const differences, even in Harbour generated C code.
These fixes are experimental and address just the tip
of the iceberg.
Please review me.
* contrib/hbwin/wapi_winbase.c
+ Added WAPI_FORMATMESSAGE(). Unicode support implemented, but
not tested, last parameter not implemented. This should replace
limited FORMATMESSAGE() implementation found in win_prt.c.
* contrib/hbwin/hbwin.ch
* contrib/hbwin/win_tprt.prg
* contrib/hbwin/tests/testprt1.prg
* contrib/hbwin/tests/testprt2.prg
* contrib/hbwin/win_prt.c
* Functions and class renamed to have "win_" prefix.
% Other minor cleanups.
+ win_portopen() returns -1 if the port number was out of
range, so MAXSERIAL constant could be elminiated.
% INVALID_HANDLE_VALUE constant is in reality an explicit
-1 used by low-level lib layer, so I've elminiated it,
and high-level lib layer also uses plain -1 now.
Could be replaces by some macros, but it shouldn't
use a Windows specific name.
- Deleted FORMATMESSAGE().
* Using WAPI_FORMATMESSAGE() instead of local FORMATMESSAGE().
(they are not compatible)
* contrib/hbwin/wce_smsc.c
! Added TOFIX for an lstrcpy() function. This is unsafe
and can easily cause buffer overrun. Until someone
fixes this properly, I've added a workaround where input
string lenght is checked to be smaller than approriate
buffer size. Only compilation was tested using poccarm,
I have no WinCE decide.
Jose, please have a look at it.
* contrib/hbwin/olecore.c
* Minor formatting.
* source/vm/dynlibhb.c
! Fixed to not use dl*() functions on linux/sunpro.
* config/linux/sunpro.cf
! Fixed to include gpm lib.
; TOFIX: linux/sunpro linking dies on:
../../../../../lib/linux/sunpro/libhbpcre.a(pcrecomp.o): In function `check_auto_possessive':
pcrecomp.c:(.text+0x2952): undefined reference to `.CG4A.3263'
pcrecomp.c:(.text+0x2959): undefined reference to `.CG4A.3263'
pcrecomp.c:(.text+0x2b29): undefined reference to `.CG40.3253'
pcrecomp.c:(.text+0x2b30): undefined reference to `.CG40.3253'
* contrib/hbqt/hbqt_slots.cpp
! Deleted windows.h.
* include/hbsetup.h
+ PPC CPU detection made better.
* include/hbatomic.h
* source/vm/maindllp.c
* source/rtl/gttone.c
+ Using HB_CPU_* macros to detect CPU instead of compiler
specific solutions.
Przemek, please review me.
* source/vm/maindllp.c
% Using hbver.h constants to form the version number
included in the .dll name. So it's now maintainence
free.
% Reduced redundancy when forming .dll names.
* source/vm/maindllp.c
* utils/hbmk2/hbmk2.prg
* Renamed wce .dll to harbour[mt]-20-wce-arm.dll
* Renamed non-ARM wce .dlls to harbour[mt]-20-wce.dll
* INSTALL
+ config/linux/sunpro.cf
+ Added Sun Studio compiler support for Linux platforms.
Thanks Tamas Tevesz for the tip that this port exists.
It has various problems to fix, but it's a start.
* config/sunos/sunpro.cf
! Typo in prev commit.
* include/hbdefs.h
! Further tweaked HB_STRICT_ALIGNMENT detection by using
HB_CPU_* macros.
Please review and extend/tweak if needed.
* include/hbdefs.h
* include/hbsetup.h
* include/hbinit.h
* source/vm/fm.c
* source/common/hbver.c
* config/sunos/sunpro.cf
+ Patch for Sun support by Tamas Tevesz.
- SunPro compiler C++ mode support.
- HB_STRICT_ALIGNMENT config refinement for Sun platform.
- SunPro compiler version detection will detect raw version
number for newer releases.
- SunPro optimization flag tweaks for C/C++ mode.
Trying to be Blastwave.org compatible as much as possible.
- LD_OUT -o option tweak for SunPro.
; NOTE: -o option should better be revised for all supported
[gcc] compilers to have space between it and the
filename.
* source/vm/extrap.c
+ Changed to use HB_CPU_* macros instead of using compiler
specific ones.
* INSTALL
* Minor.
* config/global.cf
+ Added screen dump of build settings. Initial version,
only settings having standard names are being shown.
+ Added some new links to comment.
! Fixed $(info ...) usage protection.
* Makefile
% Using ':=' assignments where possible.
! Fixed to choose OS/2 postinst script based on shell, not
HB_ARCHITECTURE.
* Indentation.
* make_gnu.bat
+ Added alternative GNU Make executable names in comment.
* source/compiler/cmdcheck.c
+ Added support for --help cmdline option.
* config/dir.cf
* Indentation.
* harbour/include/hbsetup.h
* harbour/include/hbthread.h
* harbour/include/hbatomic.h
* harbour/source/vm/thread.c
* added support for MT mode in WinCE builds using raw MS-Windows API
instead of CRTL wrappers. It's possible that it may badly interact
with some CRTLs functions we are using in our code so I do not know
it will work. Please test.
* INSTALL
* bin/postinst.sh
* source/vm/fm.c
* source/common/hbver.c
+ config/sunos/sunpro64.cf
* config/sunos/sunpro.cf
* ChangeLog
+ Applied second SunPro patch sent by Tamas Tevesz.
Addressed these former TODOs:
+ Added sunpro64 target.
+ Finalized C compiler options (including warning level settings).
+ Added compiler identification code to hbver.c.
+ dynamic lib creation.
* utils/hbmk2/hbmk2.prg
! Fixed RTE when run on sunos. Needs further work to discover how
it could run onto that codepath, normally it shouldn't.
* bin/postinst.sh
% Cleaned a few remaining 'gpp' HB_COMPILER value checks.
* config/global.cf
+ Minor improvements.
; NOTE:
I was experimenting how to return HB_COMPILER
and HB_ARCHITECTURE values from GNU Make to caller batch/script.
So far no success.
Help/ideas would be much appreciated. This would be needed
to fully switch to GNU Make level arch/comp detection, since
these values are also needed by make_gnu*.*, mpkg_gnu.* scripts.
* source/rtl/hbinet.c
* Renamed iErrorCode to iError.
* config/header.cf
* config/rules.cf
* config/none.cf
* config/global.cf
* config/doc.cf
* config/lib.cf
* config/bin.cf
* config/dir.cf
* config/test.cf
+ Added HB_COMPILER and HB_ARCHITECTURE autodetection.
It's experimental yet.
+ Added support for HB_BUILD_SUBDIR envvar which can
extend the <arch>/<comp> path by arbitrary subdir(s).
Useful to keep custom binary builds in parallel, f.e.
release/debug, cpp/c, cpu targets. Notice that hbmk2
will not be able to use such customized directory
structure yet, but there'll probably be a cmdline option
for that in the future (it won't/can't be automatic).
Notice, this feature doesn't work yet on OS/2 because
the shell doesn't support 'mkdir -p' equivalent.
* Cleaned internal ARCH_COMP var usage.
% Deleted SOURCE_DIR usage, it was a no-op.
* make_gnu.bat
! Fixed autodetection of mingwarm.
; Autodetection code will have to be deleted from here anyway.
+ config/os2-mkdir.exe
+ Added OS/2 GNU mkdir executable. (not yet used)
* examples/superlib/superlib.dif
+ Added 'const'.
* source/rtl/hbinet.c
! Fixed to use hb_retc() to return hb_socketErrorStr() value.
* source/rtl/hbinet.c
% Cleaned old error description handling logic. Now the error
desc is dynamically retrieved instead of being stored along
the error code.
* harbour/source/rtl/hbinet.c
! modified hb_inetRecv[All]() to always return number
of bytes read if at least one byte was successfully read
just like in documentation so it's not longer necessary to
use hb_inetCount() to check real number of read bytes.
On error they return -1 and 0 when foreign host closed connection.
! modified hb_inetSend[All]() to always return number of written
bytes if at least one byte was successfully written so it's not
longer necessary to use hb_inetCount() to check real number of
written bytes. On error they return -1.
! modified hb_inetRecvLine() to return "" on errors and always
set numeric value with error code or number of bytes read
in 2-nd parameter passed by reference
! modified hb_inetDataReady() to return -1 instead of .F. to
indicate errors when socket is not open socket
! modified hb_inetRecvLine() and hb_inetRecvEndBlock() to work
like in documentation and set in 2-nd parameter passed by
reference the size of read line with line terminator, -1
or error and 0 when foreign host closed connection.
! modified hb_inetRecvEndBlock() to always use default EOL when
there is no not empty string in passed string parameter or
passed array with line terminators
! fixed some small differences between hb_inetRecvLine() and
hb_inetRecvEndBlock()
! fixed returned values in hb_InetDGramSend() and hb_InetDGramRecv()
to be synced with documentation
* minor: modified hb_inetRecvEndBlock() to use as default EOL
s_inetCRLF instead of hardcoded "\r\n"
* eliminated some redundant code
+ added automatic socket initialization in windows builds
% added support for read ahead buffer in hb_inetRecvLine() and
hb_inetRecvEndBlock() and updated other functions which may
interact with it. It greatly improved the speed of code
which extensively uses above functions.
Warning!!! Above modifications may force updating other code which used
some undocumented hb_inet*() functions behavior i.e. some side
effects in previous implementation. Please update your code
if necessary.
* harbour/doc/inet.txt
! modified hb_inetAccept() documentation wrongly describing value
returned on error when it's NIL
* harbour/config/os2/watcom.cf
! fixes for real OS2 command processor - please test
* include/hbdefs.h
* include/hbsetup.h
* include/hbinit.h
* source/vm/fm.c
+ config/sunos/sunpro.cf
+ Added first round of Sun Pro (Sun Studio) compiler.
Contribution of Tamas Tevesz.
; TODO:
+ Add other Sun Pro CPU targets.
* Finalize __inline keyword usage. (currently in fm.c)
Przemek, could you take a look at it?
! Fix warning option.
+ Add compiler identification code to hbver.c.
+ hbmk2 support.
+ dynamic lib creation.
* utils/hbmk2/hbmk2.prg
* Minor rename.
* contrib/hbclipsm/gauge.c
% Minor opt, plus removed cast.
* contrib/hbwin/wce_smsc.c
* contrib/hbwin/wce_sim.prg
* Minor formatting.
* 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
* 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.