* 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.
* 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.
* 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.
* harbour/source/rtl/hbinet.c
! fixed bad typo introduced in last days probably during some code
formatting which broke HB_INETRECVLINE() and some other functions
* harbour/include/hbthread.h
* harbour/source/vm/thread.c
* emulate POSIX thread conditional variables in Windows builds.
It should fix some possible bad behavior in MS-Windows Harbour
MT programs.
* harbour/source/rtl/hbinet.c
! fixed typo in HB_INETDATAREADY() - the second parameter (timeout)
was ignored.
* harbour/contrib/examples/uhttpd/uhttpdc.c
* fixed typo in conditional iMsec usage.
* harbour/contrib/examples/uhttpd/uhttpd.prg
* set default timeout for socket operations to 3 sec.
* use timeout parameter in HB_INETDATAREADY() and
increased default timeout for accept to 250 millisecs.
Please correct this modification if you prefer different values.
* harbour/include/hbthread.h
! fixed typo
* harbour/source/vm/Makefile
* excluded mainpm.c from OS2 builds
* harbour/source/rtl/hbinet.c
* changed the #include order for OS2 OpenWatcom builds and added some
cleanups - please test other builds.
* harbour/include/hbthread.h
* harbour/source/vm/thread.c
+ added ULONG _hb_gettid( void ) to OS2 builds - thanks to Maurilio
* harbour/source/rtl/hbinet.c
* changed a little bit the order of including header files in OS2 builds
(blink fix for OpenWatcom OS2 builds).
* include/hbextern.ch
* source/vm/cmdarg.c
+ Added HB_CMDLINE() .prg level function to return
the full command line. Currently it does reassemble
it from hb_argc/hb_argv.
* contrib/rddsql/mysqldd.c
! Fixed MSVC casting errors in C++ mode.
* include/hbwmain.c
* source/vm/cmdarg.c
* Moved argv[ 0 ] generation on Windows platform, so
that it now gets properly filled with the full
executable file path for console mode (GTWIN)
apps in all situations (f.e. when run from a
batch file using '%~n1.exe' macro).
* source/rtl/hbinet.c
! Fixed to use safe strerror() (named strerror_s())
under MSVS 2005 and upper.
Please test.
* source/hbzlib/gzio.c
+ Added _CRT_SECURE_NO_DEPRECATE locally to suppress
various MSVC unsafe CRT API usage warnings. Maybe it'd
be better to fix these by using Harbour APIs.
* utils/hbdoc/gentrf.prg
! Fixed missing "common.ch"
* make_vc.mak
* contrib/mtpl_vc.mak
+ -w34701 VC flag added to enabled warning 4701 (uninitialized vars) on -W3 level.
% -FD VC flag removed. This is only needed for IDEs.
% -Gs VC flag moved to the common section.
% VC flags synced in contrib with core.
+ TOFIX added for WinCE command line. It's full of stuff which is _probably_ not needed.
+ NOTE added about MSDN page explaining VC switches.
; NOTE: -W4 and -Wp64 are recommended for MSVC.
; TOFIX: There are still a few uninit vars warnings:
harboury.c(7226) : warning C4701: potentially uninitialized local variable 'hb_complval' used
macroy.c(3095) : warning C4701: potentially uninitialized local variable 'hb_macrolval' used
dbffpt1.c(2671) : warning C4701: potentially uninitialized local variable 'ulType' used
dbffpt1.c(2614) : warning C4701: potentially uninitialized local variable 'ulSize' used
dbffpt1.c(3073) : warning C4701: potentially uninitialized local variable 'ulOldSize' used
dbffpt1.c(3083) : warning C4701: potentially uninitialized local variable 'ulBlock' used
dbffpt1.c(3652) : warning C4701: potentially uninitialized local variable 'pBlock' used
* source/rdd/workarea.c
! Fixed DBI_POSITIONED value returned.
* include/hbsetup.h
* source/vm/pvalue.c
* source/rtl/fserror.c
* source/rtl/accept.c
* source/rtl/descend.c
* source/rtl/inkey.c
* source/rtl/dates.c
* source/rtl/fkmax.c
* source/rtl/natmsg.c
* source/rtl/hbinet.c
* source/rtl/dates.c
! Fixed some MSVS2008 -W4 warnings (we use -W3 as the default).
; NOTE: There is a lot more of these.
* source/rtl/dates.c
* Formatting.
* source/rtl/hbinet.c
! Bad workaround for the '__WSAFDIsSet unresolved' problem
in Pelles C 5.00.13 AMD64 mode, to make final executables
link at all. Some hbinet.c features (or the whole module)
won't properly work though.
This possible bug has been reported on the Pellec C forums:
http://forum.pellesc.de/index.php?topic=2590.0
* source/common/hbver.c
* hb_verCompiler() buffer size cleanup.
* source/rtl/hbinet.c
* Minor formatting.
* utils/hbmake/hbmake.prg
* PRG -> .prg on some screen messages.
* config/w32/xcc.cf
* config/w32/pocc.cf
+ Added ws2_32.lib. Didn't solve the problem, but
as per MS docs of some functions we use, we should
use this instead of wsock2 (everywhere actually)
[and ws2 instead of winsock for WinCE]. Someone pls
correct me if I'm wrong, or if there is any reason
we're using both and/or the older one?
* config/w32/pocc.cf
- Removed C switch -Zx (Enable Pelles C extensions).
We don't need this.
* harbour/config/w32/dm.cf
* updated for central library directory used by Harbour - not tested
* harbour/config/w32/xcc.cf
! fixed include PATH in XCC builds - Viktor be carefull with
cleaning -I<path> parameter. Some compilers use different
rulles then the one you may expect using the most popular
ones and such operation will break compilation. F.e. XCC
seems to ignore source file location for releative paths
so in GNU make builds it's necessary to add "-I$(TOP)"
instead of "-I." and when included file starts with ".."
then it does not try to use it with paths set by -I option
so we need -I$(TOP)$(ROOT) and hard coded for this compiler
directories in include/hbregex.h and include/hbzip.h
* harbour/source/hbzlib/zutil.h
! do not use fdopen() with XCC - it does not support it
* harbour/contrib/examples/pp/pp.c
* harbour/contrib/examples/pp/hbppcore.c
* harbour/source/common/hbfsapi.c
* harbour/source/rtl/fnsplit.c
* harbour/source/rtl/fstemp.c
! always use _POSIX_PATH_MAX + 1 buffers
* harbour/source/compiler/gencobj.c
* extended line buffer size
* harbour/source/rtl/gtcrs/gtcrs.h
* removed unnecessary declaration for _POSIX_PATH_MAX
it's always defined in Harbour header files
* harbour/source/rtl/inkey.c
* harbour/source/rtl/hbinet.c
* harbour/source/rtl/gtwvt/gtwvt.c
* use hb_array[SG]et*() functions insteaf of
hb_item*( hb_arrayGetItemPtr, ... )
* harbour/contrib/rddads/adsfunc.c
! fixed possibly unclosed AdsCloseSQLStatement()
* harbour/contrib/rddads/ads1.c
* minor cleanup and protection against possible strange results
caused by indexes without tags
* harbour/source/rtl/hbinet.c
! added protection against using wrong handles
! fixed possible resource leak (unclosed handle) when open handle is
passed to HB_INETCONNECT[IP]()
* harbour/source/rtl/filesys.c
* cleaned warnings
* harbour/source/rtl/hbinet.c
! fixed possible data file corruption due to wrong use of 0 handle.
0 handle is perfectly valid. By default it points to stdin but
it can be closed and then reused for any other thing, f.e. data
file. In such case any data written to socket was written to
such file and this situation was very easy to replicate with
old hbinet code.
! fixed resource leak due to unclosed handles in few cases
! fixed possible double close of the some handle what could cause
that other object handles reusing the same handle number between
first and second close (f.e. data files) was wrongly closed
! fixed s_inetRecvPattern()/HB_INETRECVLINE() - the end pattern
was wrongly checked and the code didn't detect end pattern in
streams like: "...\r\r\n" when end pattern was "\r\n"
NOTE: this code needs some general cleanup. IMHO it should be
joined with adding hbinet C API.
* source/rtl/hbinet.c
% Recently added code fixed to use HB_ERR_FUNCNAME.
! Quick fix to recently added code to compile with MSVC.
Please review, it seem that get/setsockopt() 4th parameter
is void* in Linux but char* in Windows.
* harbour/harbour-ce-spec
* harbour/harbour-w32-spec
* define whole contrib library list for new contrib/Makefile
+ added header files to respect differences between platform
native and Windows only headers
* harbour/harbour.spec
* define whole contrib library list for new contrib/Makefile
* divided libraries which needs external references into
separated packages
! removed unnecessary dependences in binaries rebuild in shared
mode
* harbour/contrib/hbodbc/odbc.c
* pacified warnings
% minor optimization
* harbour/contrib/hbcurl/hbcurl.c
* harbour/contrib/hbfbird/firebird.c
* harbour/source/vm/extrap.c
* casting to pacify warnings
* harbour/contrib/gtwvg/gtwvg.c
! fixed pointer comparison - C uses different precedence for !
operator then Clipper/xbase
* harbour/source/rtl/hbinet.c
! fixed GPF HB_INET[GS]ET{SND,RCV}BUFSIZE() when wrong
socket parameter is passed. Please remember that after
RT error the control is returned to application.
% removed any hardcoded limits for size of data passed in
single read/write call during normal stream operations
- removed iSndBufSize/iRcvBufSize
* contrib/hbtip/client.prg
* contrib/hbtip/ftpcln.prg
* contrib/hbtip/httpcln.prg
* contrib/hbtip/mail.prg
* contrib/hbtip/sendmail.prg
+ Added methods setget to interrogate buffer size send/recive
METHOD InetRcvBufSize( SocketCon, nSizeBuff )
METHOD InetSndBufSize( SocketCon, nSizeBuff )
+ Added data members to assign default buffer sizes
DATA nDefaultRcvBuffSize
DATA nDefaultSndBuffSize
+ Asigned default buffer size to 64kb only for FTP transfer, previous to open sockets
::nDefaultSndBuffSize := 65536
::nDefaultRcvBuffSize := 65536
* Fixed port ftp protocol.
* source/rtl/hbinet.c
* now works with default system buffer, for example 8kb at W2000. instead of harcoded 1400
* harbour/include/hbclass.ch
! removed:
MESSAGE <msgName> IS <mthName>
used as synonym of:
MESSAGE <msgName> METHOD <mthName>
If someone was using the removed version then please update the
code to MESSAGE ... METHOD ...
The removed command has special meaning in Class(y) and it allow
to define alternate names for existing messages. I'll add support
for them in the future.
* harbour/contrib/hbct/ctwin.c
* added disabled code which is a workaround for some possible
bad side effect caused by online shadow showing by CTWIN.
* harbour/source/rtl/errorint.c
! fixed displaying internal error message
* harbour/source/common/hbver.c
* added "Rev." prefix to shown revision number
* harbour/include/hbexprop.h
* harbour/include/hbexprb.c
* harbour/source/common/expropt1.c
* harbour/source/common/expropt2.c
+ added hb_compExprReduceNegate()
! fixed wrong negate optimizations for platforms where HB_LONG_MAX
is smaller then -HB_LONG_MIN, f.e. all x86 based CPUs.
! fixed setting the size in optimized negative numbers
! fixed some math optimizations to not use casting to double value
when it's not necessary - when double precision is smaller then HB_LONG
(f.e. on x86 it's 53 bits and HB_LONG has 64bit) such casting can damage
up to 11 less significant bits in big 64 bit numbers.
* harbour/source/rtl/hbinet.c
* replaced MAKEWORD() macro with HB_MKWORD() to pacify BCC58 warnings
* harbour/include/hbdefs.h
+ added #include <limits.h>
It should hide some warnings related to redefined integer size constants
Viktor if it will not help for BCC58 warnings then you will have to add
#include <stdint.h>
few lines below but please remember that older BCC version does not
have it so check for the exact compiler version.
! changed macros which setting default numeric item size for more strict
Clipper compatible mode. I'm not a fun of some Clipper behavior in
calculating number size and I left some notes about it in hbdefs.h
Anyhow this and some other modifications below should cover the
differences you've found recently. Some things are not addressed by
me intentionally, f.e. _itemPutNL() in Clipper always set size to 10
without checking the maximum size so it's too small for values less
then -999999999. Harbour compiler makes more compile time optimizations
then Clipper. The formatting rules used by compiler are a little bit
different then by VM so this can be source of some other differences
to Clipper. I can easy create some examples. Harbour supports 64bit
signed integers and Clipper doesn't. This is yet another situation
when we may have different results then Clipper. Most of them can
be hidden if we add new PCODE(s) for integer number with explicit
size but I do not think it's such important to increase PCODE list.
In few cases it will be necessary to disable some optimizations at
all and I do not like it. In the future when I will be adding some
new optimizations I also add compiler switch to disable/enable
optimizations which can have such side effects for people who need
strict formatting.
* harbour/include/hbvmpub.h
* harbour/source/common/hbstr.c
* harbour/source/vm/hvm.c
* harbour/source/vm/itemapi.c
* harbour/source/rtl/round.c
* updated for more Clipper compatible number formating using new macros
* harbour/source/vm/estack.c
* added missing static to s_initSymbol declaration
* harbour/include/hbgtinfo.ch
* harbour/source/rtl/scroll.c
* formatting
* harbour/common.mak
* added empty line necessary for some make systems (f.e. wmake)
* harbour/bin/hb-func.sh
* changed system libs order to avoid problems on some platforms
* harbour/bin/pack_src.sh
* collect information about repository files using 'svn status -v'
command instead of scanning .svn/entries files to avoid problems
with different formats used by SVN
* harbour/include/hbchksum.h
* harbour/include/hbset.h
! added missing extern in few function prototypes
* harbour/include/hbclass.ch
* use HB_CLS_PARAM_LIST macro instead of ... for strict C52 mode
* harbour/source/common/hbfsapi.c
+ added missing const to one declaration
* harbour/source/common/hbstr.c
* minor cleanup in hb_stricmp()
* harbour/source/rtl/inkey.c
! casting to avoid negative values during char to int translation
* harbour/source/rtl/mouse53.c
* added one internal definition
* harbour/source/rtl/philes.c
* removed unnecessary #include(s)
* added missing const to one declaration
* harbour/source/rtl/valtype.c
* harbour/source/vm/hashfunc.c
* cleanup RT error call to eliminate hb_paramError() function
* harbour/source/pp/pplib.c
* harbour/source/vm/runner.c
* harbour/source/vm/debug.c
* harbour/source/vm/arrayshb.c
* harbour/source/vm/classes.c
* harbour/source/vm/hvm.c
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/gtfunc.c
* harbour/source/rtl/hbinet.c
* harbour/source/rtl/hbregex.c
* harbour/source/rtl/idle.c
* harbour/source/rtl/errorapi.c
* harbour/source/rtl/hbtoken.c
* harbour/source/rtl/direct.c
* harbour/source/rdd/dbcmd.c
* harbour/source/rdd/dbcmd53.c
* harbour/source/rdd/fieldhb.c
* harbour/source/rdd/hbsix/sxcompr.c
* harbour/source/rdd/hbsix/sxcrypt.c
* harbour/source/compiler/hbcmplib.c
* harbour/contrib/hbrddads/adsfunc.c
* harbour/contrib/hbrddads/adsmgmnt.c
- removed unnecessary calls to hb_ret()
% replaced hb_itemRelease( hb_itemReturn( pItem ) ) with
hb_itemReturnRelease( pItem )
% replaced hb_itemPut*( hb_arrayGetItemPtr( pArray, ... ), ... ) with
hb_arraySetNI( pArray, ... )
* harbour/source/macro/macro.y
* harbour/source/macro/macro.yyc
* harbour/contrib/xhb/cstructc.c
* harbour/contrib/hbw32/w32_ole.c
* harbour/contrib/hbgtwvg/wvtcore.c
* cleaned typos with double ;;
* harbour/source/vm/extend.c
* harbour/source/rtl/math.c
* cleaned HB_EXPORT usage
* harbour/source/pp/ppcore.c
! fixed Harbour extension which allows to use match marker
at the beginning of rule definition
* harbour/source/main/harbour.c
! fixed hex conversion in FM log module - fix done by Phil Krylov
in xHarbour
* harbour/source/rdd/nulsys/nulsys.c
+ added dummy version of DBEVAL() and DBFILTER() - these functions
are used in RTL
* harbour/contrib/hbct/bitnum.c
+ added INTNEG(), INTPOS()
+ harbour/contrib/hbct/ctrand.prg
+ added RANDOM(), RAND() - borrowd from xHarbour by Pavel Tsarenko
+ harbour/contrib/hbct/setrc.c
+ added SETRC()
* harbour/contrib/hbct/getinput.prg
% minor optimization
* harbour/contrib/hbct/Makefile
* harbour/contrib/hbct/common.mak
* updated for new files
* harbour/contrib/hbnf/tempfile.prg
* use HB_FTempCreate() - modification borrowed from xHarbour
TOFIX this function uses hb_isbyref() which does not exist
in Harbour
* harbour/config/w32/msvc.cf
+ added -nologo flag for cl.exe (Phil Krylov's modification borrowed
from xHarbour
* harbour/config/w32/mingw32.cf
- removed repeated definitions
* harbour/config/w32/install.cf
! added alternative install rule for command.com with max line size limit
* make_vcce.bat
* make_vcce.mak
! Minor corrections (syncing with existing files).
* doc/genhtm.bat
! Minor fix to make it work out of the box.
- Some obsolete stuff removed from it.
* include/hbapiitm.h
* include/hbapi.h
* source/vm/itemapi.c
+ Added hb_itemPutCLConst() which is the same as
hb_itemPutCConst() but the buffer length can be passed.
Same as xhb hb_itemPutCRawStatic().
+ contrib/xhb/hbcompat.h
+ Added C level compatibility header file.
* contrib/win32/w32_ole.c
! hb_itemPutCRawStatic() -> hb_itemPutCLConst()
! Some more xhb API calls changed to Harbour ones.
! TraceLog() -> HB_TRACE()
! HB_ITEM s_OleAuto -> PHB_ITEM s_pOleAuto
TOFIX (new): s_pOleAuto is not freed on app exit.
! Fixed a few more internal accesses by using API
calls.
; NOTE: There are four more complicated problems here
to be solved:
1) hb_stackSetActionRequest() call
2) Passing direct references to HB_ITEM .value
members to external functions.
3) Storing "hidden" information in string ITEMs
prepended after the strings' actual content.
4) Not freeing s_pOleAuto (this var BTW is used in
one static function only)
* source/rtl/hbinet.c
* source/rdd/dbcmd.c
! Changed some xhb C level API calls to Harbour ones.
* contrib/xhb/Makefile
* contrib/freeimage/Makefile
* contrib/apollo/Makefile
* contrib/firebird/Makefile
* contrib/libct/Makefile
* contrib/telepath/Makefile
* contrib/pgsql/Makefile
* contrib/gd/Makefile
* contrib/libnf/Makefile
* contrib/tip/Makefile
* contrib/adordd/Makefile
* contrib/rdd_ads/Makefile
* contrib/btree/Makefile
* contrib/samples/Makefile
* contrib/mysql/Makefile
* contrib/odbc/Makefile
* contrib/pdflib/Makefile
! Added C and Harbour public headers to GNU makefiles.
! Added one missing SVN header.
* contrib/pdflib/pdfhbdoc.ch
* contrib/pdflib/pdf.ch
! Added missing SVN headers.
- contrib/pdflib/pdflib.h
- Removed this file which belongs to the pdflib
package. This package is needed anyway to use
this contrib. (but the contrib is badly broken)
* contrib/pdflib/make_b32.bat
* contrib/pdflib/make_vc.bat
! Minor typo.
* source/rtl/persist.prg
! Prefixed static var name with "s_"
+ harbour/include/hbassert.h
* harbour/include/hb_io.h
* harbour/source/rtl/gtstd/gtstd.c
* harbour/source/rtl/gtpca/gtpca.c
* harbour/source/rtl/fssize.c
* harbour/source/rtl/hbinet.c
* harbour/source/rtl/filesys.c
* harbour/source/compiler/hbfix.c
* harbour/source/compiler/hbpcode.c
* harbour/source/compiler/hbdead.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/hbopt.c
* harbour/source/compiler/gencc.c
* harbour/source/compiler/hblbl.c
* harbour/source/compiler/hbstripl.c
* harbour/utils/hbver/hbverfix.c
* harbour/utils/hbpp/hbppcore.c
* removed dependences to unsupported by new MSVC header files
most of this modifications can be enabled also for standard Win32
builds
* harbour/source/common/hbwince.c
* do not create dummy LocalLock() and LocalUnlock() function in MSVC
WinCE builds
* harbour/source/rtl/gtwin/gtwin.c
+ added HB_WINCE_USE_POCKET_CONSOLE macro which enable
console support in WINCE builds (macro suggested by Marek Paliwoda)
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
* changed default window and font size on WinCE to values suggested
by Marek Paliwoda
Marek if you have a while please make test with MSVC WinCE/PocketPC
builds and current SVN code.