* contrib/hbwin/win_reg.prg
* contrib/hbwin/tests/test_reg.prg
* added nRegSam (access mask) parameter into functions: win_regRead,
win_regWrite, win_regGet, win_regDelete, win_regQuery, win_regSet.
This parameter can be used in win32 applications, running under
win64 systems for access to 32-bit or 64-bit registry.
* contrib/hbwin/mapi.c
! fixed UNICODE conflict after recent LoadLibrary patch.
this file has forced UNICODE off due to MS idiocy so I had
to add more idiocy to interface with properly UNICODE setting
compliant local API
Note, I didn't test non-UNICODE build, if you're interested
in it, pls do it
* contrib/hbwin/tests/testmapi.prg
+ simpleio
* contrib/hbqt/hbmk2_qt.hbs
% Deleted now unnecessary .prg wrapper generation logic.
* Moved .qth processing to "pre_c" phase.
! Deleted HB_FUNC_EXTERN for constructor now declared locally.
! Added constructor to symbol table.
* contrib/3rd/sqlite3/sqlite3.hbp
* contrib/hbbz2/3rd/bz2/bz2.hbp
* contrib/hbexpat/3rd/expat/expat.hbp
* contrib/hbhpdf/3rd/libhpdf/libhpdf.hbp
* contrib/hblzf/3rd/liblzf/lzf.hbp
* contrib/hbmlzo/3rd/minilzo/minilzo.hbp
* contrib/hbmzip/3rd/minizip/minizip.hbp
* contrib/hbmxml/3rd/minixml/mxml.hbp
* contrib/hbxdiff/3rd/libxdiff/xdiff.hbp
+ Added -pic option to 3rd party libs. This switch will
make them use -pic when creating their static libs,
which allows to link them to contrib dynlibs when
using HB_BUILD_CONTRIB_DYN=yes.
* contrib/hbwin/tests/dlg.prg
* Minor formatting.
* contrib/hbwin/win_svc.c
* contrib/hbwin/tests/testsvc.prg
+ WIN_SERVICESTART() changed to accept codeblock and
function reference as second parameter (was string).
INCOMPATIBLE: Pls update your code to use new method.
NOTE: If someone knows how to add string support without
duplicating code and other hacks, pls do, however
I think that codeblock and function reference is
much more modern and fool-proof solution.
* harbour/contrib/hbnetio/netiomt.prg
+ added 8-th parameter <sSrvFunc> to NETIO_MTSERVER().
It allows to set own server function which can be used for
statistic or connection INIT/EXIT code. By default it's
@netio_server() is used.
User functions may look like:
function custom_netio_server( pConnectionSocket )
register_connection( pConnectionSocket )
begin sequence
netio_server( pConnectionSocket )
finally
unregister_connection( pConnectionSocket )
end sequence
return nil
* harbour/contrib/hbnetio/netiosrv.c
+ added new server function
NETIO_SRVSOCKET( <pConnectionSocket> ) -> <pHbSocket>
<pHbSocket> can be used with Harbour socket functions (hb_socket*())
Please remember that <pHbSocket> handle can be used only for statistics
and must not be used for any send/receive operations.
* harbour/contrib/hbnetio/readme.txt
* updated
* harbour/contrib/hbwin/tests/olesrv1.prg
* modified to return HVM error object as OLE object to the client
on RTE
* src/rtl/hbsocket.c
! hb_socketSetReuseAddr() changed on win platforms to use
SO_EXCLUSIVEADDRUSE instead of SO_REUSEADDR. See http://paste.lisp.org/display/59751.
Rough patch, maybe the logic isn't applied to the right place,
maybe extra win version checks are required, please test it
and patch it further if needed.
* src/rtl/hbinet.c
* s_inetBind() changed back to call hb_socketSetReuseAddr() also
on win platforms.
* contrib/hbwin/tests/testole.prg
+ Added shortcut creation example.
* contrib/hbide/idemisc.prg
! Fixed HBIDE_PATHNORMALIZED() to _never_ lowercase passed
filename. As discussed very long time ago, such behavior
is not portable. For comparison purposes HB_FILEMATCH()
should be used, for other purposes _no_ change should be
done by hbide in filename casing. Ever.
This is brute force fix only applied to low-level code.
It will cause regressions on the higher level, which have
to be fixed.
; TODO: Delete this second parameter from all calls, now
the value is ignored.
; TOFIX: Review all
HBIDE_PATHNORMALIZED() and
HBIDE_PATHNORMALIZED( p, .T. )
calls if they are used in comparison context and change
caller code to use HB_FILEMATCH().
; TOFIX: All current code which uses LOWER()/UPPER() to
"normalize" filename before comparison with '=='
operator should also be changed to HB_FILEMATCH().
(except for cases where extension is used in the
sense of file type).
; TOFIX: Rest of cases where LOWER()/UPPER() is applied to
filenames.
! Fixed HBIDE_PATHFILE() to never uppercase drive letter.
It's not strictly required since all so far known systems
supporting drive letter are case insensitive, but it's
nevertheless not the job of hbide to reformat pathnames.
* contrib/hbide/ideactions.prg
* contrib/hbide/idesaveload.prg
* contrib/hbide/ideharbourhelp.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idesources.prg
! Fixed some code to use HB_FILEMATCH() instead of unconditional
uppercasing/lowercasing. Please review and finish this modification,
there might be more hidden places and might have overlooked anything
in this patch.
* contrib/hbwin/tests/testcom1.prg
* contrib/hbwin/tests/testcom2.prg
* contrib/hbwin/win_tcom.prg
* contrib/hbwin/win_com.c
! Fixed samples to not query error value (since it RTEs if
the port is not open)
+ WIN_COMISVALID( <nPort> ) -> <l> added to check if port number is a valid one.
+ WIN_COMERRORCLEAR( <nPort> ) added to clear last error.
! WIN_COMERROR() changed to not clear the error on read.
+ WIN_COM():ERROR() method added to retrieve last error in numeric form.
* Samples changed to use :ERRORTEXT() to show errors.
; INCOMPATIBLE changes.
; DISCLAIMER: I'm not a user of this, so to raise your chances for
a fix, pls submit patches. I also couldn't spend huge
time to rethink the whole concept of these interfaces.
IOW: Contribute.
* harbour/contrib/hbwin/axcore.c
+ added support for obtaining default callback event interface.
__AxRegisterHandler( pDisp, bHandler [, cIID ] ) parameter can be:
- event interface ID, i.e. "{...}";
- event interface name, ex., DWebBrowserEvents;
- otherwise default event interface is tried to obtain.
; NOTE: some regresions are possible. IDispatch is not the default
value for cIID. To force the previous behaviour, you should use
__AxRegisterHandler(,, "{00020420-0000-0000-C000-000000000046}"),
but I guess this should never be required.
; Don't ask me how I've wrote this code :)
* harbour/contrib/hbwin/tests/pdfcreat.prg
* changed to sync with new __AxRegisterHandler() behaviour
* harbour/contrib/hbwin/tests/testole.prg
+ added new Internet Explorer test to show OLE callback events
* harbour/contrib/hbwin/tests/pdfcreat.prg
! fixed warning for whose who uses alternatve sample branch #if 0
* harbour/src/rtl/gtstd/gtstd.c
! fixed console input pooling for Windows (you don't need to keep
a key pressed to run application)
* harbour/contrib/hbwin/olecore.c
+ added possibility to use more than one parameter in property put
call. This allows to make a workaround for non-existant Harbour
language syntax:
object.name(param) = value
Workaround syntax:
object._name(param, value)
+ added comment documenting OLE automation behaviour for various
VBScript sentences
+ harbour/contrib/hbwin/tests/pdfcreat.prg
+ added sample code for producing .pdf documents using OLE and PDFCreator
* contrib/hbwin/hbwin.hbp
+ contrib/hbwin/win_rpc.c
+ contrib/hbwin/tests/testrpc.prg
+ Added WIN_UUIDCREATESTRING() function to generate UUIDs
via Windows API. Requires W2K or upper as per MSDN.
If not supported, it returns empty string.
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyh
* harbour/src/compiler/harbour.yyc
* increase the maximum bison stack size limit
from 10000 items to 100000
* harbour/src/rtl/gtsln/kbsln.c
+ added support for HB_K_RESIZE
* harbour/contrib/hbwin/axcore.c
* harbour/contrib/hbwin/hbolesrv.c
* do not pass message ID (DISPID) as first parameter of codeblock
or function taken from hash array indexed by DISPIDs.
This modification restores old format, i.e. the one expected
by GTWVG code.
* harbour/contrib/hbwin/tests/olesrv1.prg
! comment
* harbour/contrib/hbwin/olecore.c
! fixed old bug in passing parameters by reference to OLE objects
(they were cleared in reverted order so half of the complex variants
were cleared before coping to HVM items)
+ harbour/contrib/hbwin/tests/oletst4.prg
+ harbour/contrib/hbwin/tests/olesrv4.hbp
+ harbour/contrib/hbwin/tests/olesrv4.prg
+ harbour/contrib/hbwin/tests/oletst4.hbp
+ added example of OLE server returning to client HVM objects as
OLE object and also some other values using parameters passed by
reference with client code.
Remember about registering the server by 'regsvr32 olesrv2.dll'
before testing the client code.
* src/common/hbver.c
+ Fine tuned SunPro version detection.
Patch submitted by Tamas Tevesz.
* contrib/hbwin/win_shell.c
* contrib/hbwin/tests/testcopy.prg
! WIN_SHFILEOPERATION() fixed after initial upload.
+ Added more test code.
* contrib/hbmisc/calldll.prg
+ HB_DYNCALL1() will now cut the number of parameters
according to passed nCount parameter, just to mimic
exact behavior of original function.
+ contrib/hbmisc/tests/testcall.prg
+ Added test code for CALLDLL32() and HB_DYNCALL1().
* contrib/hbwin/tests/testcopy.prg
* Copyright year.
* contrib/hbwin/wapi_wingdi.c
* contrib/hbwin/hbolesrv.c
! Fixed for msvcarm.
* contrib/hbwin/hbwin.ch
* contrib/hbwin/win_shell.c
+ contrib/hbwin/tests/testcopy.prg
+ Added:
WIN_SHFileOperation( [<hWnd>], [<nFunction>], [<cFrom>|<aFrom>], [<cTo>|<aTo>],
[<nFlags>], [<@lAnyOperationAborted>],
[<aNameMappings>], [<cProgressTitle>] ) -> <nResult>
; Przemek, if you have some time pls review s_StringList()
function which I adapted from similar function in win_dlg.c,
but it might not be perfect. '<s1><\0><s2><\0><\0>' format
is required by this SHFileOperation() Windows function.
* include/hbapi.h
! Added HB_EXPORT to hb_memvarGet() and hb_memvarSetValue()
used by new OLE server code in hbwin when created -shared
OLE server .dlls.
+ contrib/hbwin/hbolesrv.hbc
+ Added .hbc file to help creating OLE servers.
* contrib/hbwin/tests/olesrv1.hbp
* contrib/hbwin/tests/olesrv2.hbp
* contrib/hbwin/tests/olesrv3.hbp
% Changed to use hbolesrv.hbc.
- Deleted '-static' option to also allow to build -shared
OLE servers. (I tested them OK)
* contrib/hbwin/tests/olesrv2.prg
+ Tweak to allow case-insensitive access of OLE functions.
* utils/hbmk2/hbmk2.prg
+ Added support for .def files in source= .hbc line.
* contrib/hbwin/tests/oletst1.hbp
* contrib/hbwin/tests/olesrv1.hbp
* contrib/hbwin/tests/oletst2.hbp
* contrib/hbwin/tests/olesrv2.hbp
* contrib/hbwin/tests/oletst3.hbp
* contrib/hbwin/tests/olesrv3.hbp
* Changed to reference .hbp files instead of libs.
% Deleted redundant settings already supplied
by .hbm files. (if the goal is to make them
current dir independent, we can add a simple
@hbmk.hbm reference to them)
* contrib/hbwin/hbolesrv-mgw.def
* contrib/hbwin/hbolesrv.def
* contrib/hbwin/hbolesrv-ow.def
+ Added SVN ID as comments.
(I hope watcom supports it, if not pls tell)
; TODO: We should somehow merge these into one .def,
even if it requires some extra hbmk2 "magic".
* contrib/hbwin/tests/oletst1.hbp
* contrib/hbwin/tests/olesrv1.hbp
* contrib/hbwin/tests/oletst2.hbp
* contrib/hbwin/tests/olesrv2.hbp
* contrib/hbwin/tests/oletst3.hbp
* contrib/hbwin/tests/olesrv3.hbp
* contrib/hbwin/hbolesrv-mgw.def
* contrib/hbwin/hbolesrv.def
* contrib/hbwin/hbolesrv-ow.def
+ Added SVN props.
* harbour/contrib/hbwin/Makefile
+ harbour/contrib/hbwin/hbolesrv.c
+ added inproc OLE server implementation. It allows to create OLE/ACTIVEX
COM server in Harbour. Such OLE server allows can be used by programs
written in any languages supporting OLE automation (also in other
Harbour applications)
User ole server code should be linked as DLL which later can be
register in MS-Windows by regsvr32.exe program, i.e.:
regsvr32 myolesrv.dll
The OLE server code should contain DLLMAIN() PRG function which
is executed just after loading OLE inproc DLL server as server from
other application and also by regsrv32.exe during registration and
unregistration procedure. It has to initialize at least OLE server
ID and name usinf WIN_OleServerInit().
+ added new PRG function which intitialize OLE server:
WIN_OleServerInit( <cClassID>, <cServerName>, ;
[ <hAction> | <oAction> | <bAction> | <sAction> ], ;
[ <lHashClone> | <lAcceptAll> ] ) -> <lServerActive>
<cClassID> is registered OLE server class GUID
<cServerName> is OLE server class name
<hAction> is optional parameter with hash array containing messages
and instance variables used by OLE server. The keys in hash array
are strings with message names and values are actions. Codeblock
and symbol items means that given message is a method call and
any other value means that it's variable.
By default the same hash array is shared between all objects
created by registered server. It's important when hash array
contains values which are neither codeblock nor symbol items
so they are not used as method but rather as instance variables
because such instance variables are shared between OLE objects.
Setting 4-th parameter <lHashClone> to .T. causes that each
objects receives it's own copy of <hAction> item so instance
variables inside hash array are also local to OLE object.
Alternatively programmer can use <bAction> or <sAction> to create
seprate copy of hash array for each object, i.e.:
bAction := {|| hb_hClone( hValue ) }
When hash array contains symbol item (@funcName()) then when it's
executed by OLE object message it's possible to access the hash
array bound with given OLE object using QSelf() function. It maybe
useful if hash array contains instance variables and programmer
wants to access them.
Please remember that using hash array which was initialized to keep
original assign order by HB_HKEEPORDER( <hAction>, .T. ) before
adding its items you can define strict message numbers (DISPIDs), i.e.:
hAction := {=>}
HB_HKEEPORDER( hAction, .T. )
hAction[ "OPEN" ] := @myole_open() // DISPID=1
hAction[ "CLOSE" ] := @myole_close() // DISPID=2
hAction[ "SAVE" ] := @myole_save() // DISPID=3
hAction[ "LOAD" ] := @myole_load() // DISPID=4
hAction[ "PRINT" ] := @myole_print() // DISPID=5
(see example in olesrv2.prg)
<oAction> is optional parameter with Harbour object which is used
as base for all newly created OLE objects. All messages (method and
instance variables) supported explicitly by <oAction> object (except
ONERROR message redirecting) are inherited by OLE objects. Each
newly created OLE object uses the same <oAction> object so its
instance variables are shared between all of them. If programmer
wants to create separate Harbour object for each OLE object then
he should use <bAction> or <sAction>, i.e.:
bAction := {|| myClass():new() }
<bAction> is optional parameter with codeblock executed when new
OLE object is created. It should return hash array or Harbour object
which will be used as base for newly created OLE object.
<sAction> is optional parameter with function symbol. This function
is executed when new OLE object is created and should return hash
array or Harbour object which is used as base for newly created
OLE object.
If the 3-rd parameter is <oAction>, <bAction> or <sAction> then
it's possible to also set 4-th parameter <lAcceptAll> to .T. and
in such case <xAction> parameter is used in different way. Newly
created OLE object accepts any massage names invoking for each
of them EVAL() message which is sent to <xAction> with OLE message
name inserted as the 1-st item to OLE object parameters.
It allows to create OLE server which will accept unknown messages
redirecting them to some other code, i.e.:
if netio_connect( cServer,,, cPasswd )
WIN_OleServerInit( cClassID, cServerName, @netio_funcExec(), .T. )
endif
initialize OLE server which redirects all messages to default netio
connection establish by netio_connect().
If 3-rd parameter is not given then all HVM functions becomes
OLE methods and HVM memvars (public and private variables) are
OLE object instance variables so they are shared with all OLE
objects created by this interface. It works just like xHarbour.com
OLE server described at
http://xharbour.com/index.asp?page=add_on_oleserver&show_sub=7&show_i=1
; TODO: add support for MT RPC servers. Current implementation cannot
be safely used in MT programs creating OLE objects and executing
their methods simultaneously in different threads without
additional user code which will serialize these operations.
; TODO: replace message handler API in WIN_AxGetControl()/
__AxRegisterHandler() which uses only fixed method IDs
and do not support method names with above one so user
can easy create activex controls which support message
names. This modificaiton will force updating user and 3-rd
party code but IMO should be done. Current interface is
simply too much limited to keep it.
; Possible TODO: add support for user defined fixed message numbers
(DISPIDs) which are not continuous small numbers so
users cannot easy use hash arrays with strict order.
Is such functionality necessary? Can someone with
ActiveX experience say sth about it?
Above implementation has undocumented feature:
it supports hash arrays with keys using numbers only
which can be used like in __AxRegisterHandler() but
I haven't decided yet I should keep, extend or remove
such functionality.
Please make real life test.
I do not have any practice with MS-Windows and OLE and most of above
code I wrote using only documentation so I'm very interesting in real
test results and user opinions about it. If some important functionality
is missing then please inform me about it.
BTW There are some 3-rd party activex implementation for [x]Harbour, i.e.
xharbour.com or FiveWin ones. Maybe someone familiar with them can create
PRG compatibility layer for Harbour. I cannot do that myself because I
do not know that products and their PRG API used in OLE/COM/ActiveX
implementations but if someone can describe it then I can help in such
implementation.
+ harbour/contrib/hbwin/hbolesrv.def
+ harbour/contrib/hbwin/hbolesrv-mgw.def
+ harbour/contrib/hbwin/hbolesrv-ow.def
+ added .DEF link files which are necessary to correctly export
inproc OLE server DLL functions. It's possible that other compilers
or even different versions of the same compilers may use different
a little bit different .DEF files. I tested above with BCC5.5,
MinGW 3.4.5 and OpenWatcom 1.8.
+ harbour/contrib/hbwin/test/olesrv1.prg
+ harbour/contrib/hbwin/test/olesrv1.hbp
+ harbour/contrib/hbwin/test/oletst1.prg
+ harbour/contrib/hbwin/test/oletst1.hbp
+ added example of NETIO-RPC OLE server code with Harbour (PRG) client.
This server redirects all messages sent to its OLE objects to remote
HBNETIO server as function calls. It understands the following
messages:
CONNECT() - creates connection to the server, parameters like in
NETIO_CONNECT() and NETIO_GETCONNECTION() functions
DISCONNECT() - closes current connection
PROCEXISTS() - works like NETIO_PROCEXISTS()
PROCEXEC() - works like NETIO_PROCEXEC()
PROCEXECW() - works like NETIO_PROCEXECW()
FUNCEXEC() - works like NETIO_FUNCEXEC()
All other messages are redirected directly to RPS server as function
calls.
CONNECT() message should be executed by client to create
connection to the server. Each NETIO-RPC OLE object uses its own
connection which should be initialized. If CONNECT() is executed
more then once the current connection is closed.
DISCONNECT() is executed automatically when OLE object is destroyed
so it's not necessary to call it explicitly.
Please use hbmk2 and olesrv1.hbp to compile OLE server. OLE inproc
servers have to export some DLL entry functions which are defined
in .def files which have to be passed to linker.
Before client code can be tested the server has to be registered.
The server can be registered in given MS-Windows system using
regsvr32.exe command. To register the server use:
regsvr32 olesrv1.dll
and to unregister:
regsvr32 /u olesrv1.dll
+ harbour/contrib/hbwin/test/olesrv2.prg
+ harbour/contrib/hbwin/test/olesrv2.hbp
+ harbour/contrib/hbwin/test/oletst2.prg
+ harbour/contrib/hbwin/test/oletst2.hbp
+ added very simple example of OLE server using hash array with
strict item order (associative hash array) to define OLE objects
with fixed message numbers (DISPIDs)
Remember about registering the server by 'regsvr32 olesrv2.dll'
+ harbour/contrib/hbwin/test/olesrv3.prg
+ harbour/contrib/hbwin/test/olesrv3.hbp
+ harbour/contrib/hbwin/test/oletst3.prg
+ harbour/contrib/hbwin/test/oletst3.hbp
+ harbour/contrib/hbwin/test/oletst3.bas
+ added example of OLE server code with Harbour (PRG)
and Visual Basic (BAS) clients.
This server redirects all messages sent to its OLE objects to HVM
functions and messages to HVM memver (public and private) variables
This server should work as xHarbour.com OLE servers described at:
http://xharbour.com/index.asp?page=add_on_oleserver&show_sub=7&show_i=1
The server and clients code are nearly the same so users can easy
compare them.
Remember about registering the server by 'regsvr32 olesrv2.dll'
* contrib/hbwin/win_svc.c
! Fixed callback definitions to be the ones required by Windows.
! Fixed main service entry callback to use TCHAR rather than simple char.
+ Added support to pass service launch parameters to Harbour entry
function.
* contrib/hbwin/tests/testsvc.prg
+ Added code to demonstrate parameter passing feature.
* contrib/hbwin/win_srv.c
* Renamed more variables.
* Moved around hb_strfree() calls to fully avoid the possibility
of freeing string pointers still assigned inside Windows
structures.
! WIN_SERVICESTART() fixed to set last error.
* contrib/hbwin/tests/testsrv.prg
! Fixed to have the default action called
when started without parameter. Required
to make it start when started as service.
+ Test service changed to create a file in
a predictable place (next to .exe) and
fill that with output. Made sure that file is
readable by other processes.
* Cleaned service ID/description.
; I've made successful test with current code.
* contrib/hbwin/win_srv.c
! Fixed static variable types and usage.
! Fixed wrongly used string types.
! Fixed storing temporary pointers to static variables.
Making a copy of the strings instead.
% Deleted unnecessary function declarations.
% Using HB_SIZEOFARRAY() instead of repeating size.
! Fixed variable names to reflect type.
; These fixed previously found errors.
* contrib/hbwin/tests/testsrv.prg
* Replaced ALERT() with '?'.
! Fixed to use HB_TR_ALWAYS to avoid Harbour warning.
% FUNCTION -> PROCEDURE
* doc/howtosvn.txt
+ Made it more clear that 'Chr(36)' should be replaced by '$'.
* ChangeLog
! Stripped accented char. Pls keep all files in 7-bit mode.
* contrib/hbwin/hbwin.ch
* contrib/hbwin/win_srv.c
* contrib/hbwin/tests/testsrv.prg
! Cleanup fixes:
! Fixed missing SVN props (pls see howtosvn.txt and my e-mail today about them)
! Fixed SVN header
! Stripped accented char.
! Deleted <windows.h>.
! Tabs converted to spaces.
! Fixed indentation and formatting.
% Optimized code to have less redundancy.
! Fixed name of static vars.
% Made callbacks static.
! Fixed hbwin.ch constants to have WIN_ prefix.
! Fixed references to unknown functions in test code.
% Test code reworked to have user selectable modes via cmdline parameter.
! Fixed to define all functions also in WinCE mode, but
with dummy functionality.
! Fixed memory potential leak in WIN_SERVICEDELETE().
! Added some casts.
% Variables declarations moved to inner scopes.
; TOFIX:
- UNICODE build problem in hbwin_SrvFunction().
- possible memory corruption in WIN_SERVICESTART()?
- 'implicit declaration of function 'Sets_ServiceStatus'' in hbwin_SrvFunction().
; All the above are shown as mingw warnings.
+ contrib/hbwin/win_srv.c
+ contrib/hbwin/tests/testsrv.prg
* contrib/hbwin/hbwin.ch
* contrib/hbwin/Makefile
+ Basical support for running a harbour application as a windows server.
See tests/testsrv.prg.
* src/common/hbtrace.c
* INSTALL
+ Added trace output support to syslog() for *nix systems
(except watcom builds).
It's enabled by HB_TR_SYSOUT=yes envvar, which now
supercedes previous HB_TR_WINOUT setting.
Windows users pls change HB_TR_WINOUT to HB_TR_SYSOUT.
! Fixed potential problem in HB_TR_WINOUT code, where
the same vararg holder variable was used multiple
times. On *nix this caused GPF. The safest is to make
a copy of it for each usage.
* contrib/hbwin/hbwin.ch
* contrib/hbwin/Makefile
+ contrib/hbwin/tests/testevnt.prg
+ contrib/hbwin/win_evnt.c
+ Added function to add a new event to the Windows event log:
WIN_REPORTEVENT( [<cServerName]>, <cEventLog>,
<nType>, [<nCategory>], [<nEventID>],
<cString> | <acString>, [<cRawData>] ) -> <lSuccess>
* contrib/hbwin/win_prn2.c
! Fixed wce warning.
* utils/hbmk2/examples/contribf.hbc
* utils/hbmk2/examples/contrib.hbc
+ Added minizip lib.
+ config/ren_sfn.prg
- external/bzip2/cnv_hb2o.bat
- external/bzip2/cnv_o2hb.bat
+ external/bzip2/ren_sfn.txt
- external/libhpdf/cnv_o2hb.bat
- external/libhpdf/cnv_hb2o.bat
+ external/libhpdf/ren_sfn.txt
- external/pcre/cnv_o2hb.bat
- external/pcre/cnv_hb2o.bat
+ external/pcre/ren_sfn.txt
+ Replaced .bat method for converting long filenames to
short ones to a .prg script and simple text input file.
Also much of the logic is automatized.
* src/rtl/gtwvt/gtwvt.c
* Minor in old comment.
* INSTALL
- Deleted no more relevant restriction with HB_BUILD_PKG.
* contrib/hbwin/wapi_winuser.c
* contrib/hbwin/hbwin.ch
+ Added WAPI_SETWINDOWPOS() + relevant constants.
+ Added WIN_WS_* constants.
+ Added WAPI_ISICONIC(), WAPI_ISZOOMED().
* contrib/hbwin/tests/testax.prg
! Fixed to compile without warning.
* Using hbwin.ch.
* src/rtl/fstemp.c
! Using hb_fsTempDir() in HB_FTEMPCREATEEX() instead of
old solution. This should fix it for some non-*nix
platforms where *nix specific TEMPDIR envvar was used
to determine temp directory.
* contrib/hbwin/Makefile
* include/Makefile
* src/rtl/Makefile
- contrib/hbwin/hbdyn.ch
+ include/hbdyn.ch
- contrib/hbwin/hbdyn.c
+ src/rtl/hbdyn.c
- contrib/hbwin/win_dllc.c
+ src/rtl/hbdynhb.c
- contrib/hbwin/tests/testdll.c
+ tests/testdyn.c
- contrib/hbwin/tests/testdll.prg
+ tests/testdyn.prg
- contrib/hbwin/tests/testdll1.prg
+ tests/testdyn1.prg
- contrib/hbwin/hbdyn.h
* include/hbapi.h
* Moved dynamic library call related functions to
core (RTL).
* Windows specific test code (currently all) guarded
for platform.
* Changed default calling convention to cdecl.
Tests adaptd accordingly.
* Terminology change: 'dll' -> 'dynamic library'
; HB_DYNCALL() is now part of core Harbour, and it's
platform independent. It's platform (ABI) dependent though,
and currently x64 and x86/stdcall/syscall/cdecl
is supported and these were tested (except OS/2 syscall).
* contrib/hbwin/hbwin.h
* contrib/hbwin/win_misc.c
* contrib/hbwin/legacycd.c
* Low level hbwin_getprocaddress() function moved
to legacy file and made static.
* contrib/xpp/Makefile
* contrib/xpp/dllx.c
* contrib/xpp/xpp.hbc
+ Enabled DLL*() functions for all platforms.
- Deleted dependence on hbwin library.
* contrib/xpp/tests/testdll.prg
* Windows specific parts (currently the whole test) guarded
for platform.
* contrib/hbct/Makefile
- contrib/hbct/diskhb.prg
* contrib/hbct/disk.c
* contrib/xhb/Makefile
+ contrib/xhb/diskhb.prg
* GETVOLINFO() moved from hbct to xhb.
* ChangeLog
* Marked some TODO/TOFIX items as DONE.