* contrib/hbwin/hbwin.hbp
+ contrib/hbwin/oleuuid.c
! Fixed linking Harbour OLE functions when using watcom
compiler. It also caused build errors with HB_BUILD_CONTRIB_DYN=yes.
Many thanks to Andi for suggesting the solution.
* contrib/xhb/hbsyslog.c
* Guard cleanup. Patch from Tamas.
* contrib/hbodbc/odbc.c
! Added workaround for OpenWatcom (1.9) missing an entry for
SQLSetStmtAttr() function's wide version (SQLSetStmtAttrW),
while it has it properly present in the header.
The workaround will disable UNICODE for hbodbc lib when
built for win/watcom.
[ I'd appreciate if someone could report this problem
upstream. ]
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
! Fixed casing in #include lines.
Please remember that case-sensitive file systems exist.
Patch by Tamas.
* utils/hbmk2/hbmk2.prg
+ Implemented experimental link script for mingw compilers with
-hbdyn targets. If it works out it can be extended to -hbexe
outputs, too. With further work it can be extended for os2 and
dos platforms. I will only do this if someone actually
reports such problems and can do tests.
; Please retest mingw build with HBQT contrib enabled, long HB_BUILD_NAME,
and HB_BUILD_CONTRIB_DYN=yes, and also normal cases.
* utils/hbmk2/hbmk2.prg
+ Adding clib3s lib to system lib list for win/watcom when
in -hbdyn mode. This is to fix link errors of 3rd (non-Harbour)
dynamic libs in HB_BUILD_CONTRIB_DYN=yes mode.
I have no idea why it's needed, so please extended or tweak
this fix if you have a better understanding of it.
(maybe the lib should be add for all platforms, or for
all link modes, etc)
* contrib/hbhpdf/3rd/libhpdf/libhpdf.hbp
+ Enabled for win/watcom. I don't know since when it builds and
what fixed it, so it's possible it's still broken with older
watcom verions. Now it builds fine with 1.9.
; TOFIX: watcom still has problems with missing externals when
building hbwin dll:
Error! E2028: IID_IDispatch is an undefined reference
Error! E2028: IID_IOleObject is an undefined reference
Error! E2028: IID_IUnknown is an undefined reference
Error! E2028: GUID_NULL is an undefined reference
Error! E2028: IID_IProvideClassInfo2 is an undefined reference
Error! E2028: IID_IProvideClassInfo is an undefined reference
Error! E2028: IID_IConnectionPointContainer is an undefined reference
Error! E2028: IID_IEnumVARIANT is an undefined reference
gtwvg dll:
Error! E2028: IID_IPicture is an undefined reference
and hbodbc dll:
Error! E2028: _SQLSetStmtAttrW@16 is an undefined reference
Any idea?
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Added GPL license.
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
+ Added GPL license. (once the server code is
deleted and only the UI remains, this should
be updated)
* contrib/make.hbs
! Fixed to not define _HB_BUILD_ when doing a custom build
(explicitly passed .hbp file) in stdalone mode.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ Enabled keepsort on the saved configuration hash.
* contrib/hbhpdf/harupdf.c
- Deleted wrapper to HPDF_PDFA_GENERATEID(), what rather seems
an internal function.
* Tweaked previous fix to HPDF_PDFA_SETPDFACONFORMANCE(), so that
now it's included in dynamic builds, just returning dummy result.
Still a pending TOFIX though, as it's not right that dynamic
and static version of the same lib works differently. Any tips
which way to choose? It would be great asking libharu developers
about whether HPDF_PDFA_SetPDFAConformance() is meant as a
public function.
* harbour/src/vm/hashfunc.c
* harbour/src/vm/hashes.c
* moved HB_HASH_RESORT setting to avoid potential problems when some
3-rd party code didn't set it correctly.
* harbour/src/rtl/itemseri.c
! fixed restoring hash arrays with strict order - they were not resorted
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Added RPC and console command to save filters.
They will be reloaded automatically when starting
up the server daemon.
* ChangeLog
! Fixed previous entry header.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ Keep order of filter lists.
* utils/hbmk2/hbmk2.prg
! Use _hbmkcpp_<cFirstFile>.cpp (instead of _hbmkcpp.cpp) on
non MS-DOS platforms.
* harbour/utils/hbmk2/hbmk2.prg
! do not use the first source file name to set hbmk[ _HBMK_cPROGNAME ]
when -gh switch is used - in such case multiple files are generated
so there is no single output file.
+ added support for incremental builds when -gh option is used
! clean .hrb files when -gh and -clean options are used
! clean .ppo, ppt and .pot files when -clean option is used in
incremental mode.
! use _hbmkaut_<cFirstFile>.[r]c instead of _hbmkaut.[r]c on
non DOS platforms to resolve name conflicts in multitarget builds
% do not check dependencies when -clean option is used
% do not rebuild/update .po files when -clean option is used
* added info message "Target(s) up to date." when none of
.hrb file have to be rebuild in -inc mode
; TODO: copy .hrb files created in -workdir to output directory
specified by -o option or to the current one
; NOTE: please verify above modifications
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Added console commands to add/remove filters.
+ Added rpc and console commands to list filters.
* include/harbour.hbx
* src/rtl/hbfilehi.prg
! HB_DIRADDPATHSEP() fixed to not add pathsep to plain dirspec.
! HB_DIRDELPATHSEP() fixed to not remove double pathspec from UNC root.
! Fixed to work if HB_OSDRIVESEPARATOR()'s length is not 1:
HB_PATHMAKERELATIVE(), HB_DIRUNBUILD(), HB_DIRDELPATHSEP().
(QUESTION: is this a valid possibility, or is this over-design?)
+ Added TODO to HB_CWD() to also be able to change dir.
This will require adding Harbour versions of DIRCHANGE() and
DISKCHANGE(), or moving the implementation to C level.
(possibly the latter)
- Deleted HB_FNAMEDIREXTSET(). Doesn't satisfy a general need.
* src/rtl/hbfilehi.prg
% Minor optimization, cleanups.
* contrib/hbide/idemisc.prg
* contrib/hbide/ideprojmanager.prg
* Cleaned PathProc() to have the name PathMakeAbsolute().
Deleted duplicate copies under different names.
* src/rtl/dirdrive.c
+ Added HB_DIRCREATE(), which is same as MAKEDIR() C5.3 function,
but it's always available, not just when HB_COMPAT_C53 is enabled.
+ Added HB_DIRDELETE(), which is same as DIRREMOVE() C5.3 function,
but it's always available, not just when HB_COMPAT_C53 is enabled.
* contrib/hbnetio/tests/netiotst.prg
* contrib/hbnetio/tests/netiot03.prg
* contrib/hbfimage/tests/fitest.prg
* contrib/hbide/idesaveload.prg
* utils/hbmk2/hbmk2.prg
* utils/hbrun/hbrun.prg
* tests/wcecon.prg
* tests/flink.prg
* bin/hb3rdpat.hbs
* examples/hbdoc2/gentpl.prg
* Replaced MakeDir() with universally available hb_DirCreate().
; TODO: same in config/postinst.hbs (delayed to avoid a million
false bug reports)
* src/rtl/Makefile
+ src/rtl/hbfilehi.prg
+ Added generic file/dir/path handling functions.
They are taken from hbmk2 code, added parameter checking,
did two minor change to DirBuild() to be generic,
renamed to have HB_ prefix.
Please note the parameter list and any details are
subject to change yet, IOW these APIs are not yet finalized:
hb_cwd() -> <cPath>
hb_PathNormalize( <cPath> ) -> <cPath>
hb_PathMakeAbsolute( <cPathRel>, <cPathAbs> ) -> <cPath>
hb_PathMakeRelative( <cPathBase>, <cPathTarget>, <lForceRelative> ) -> <cPath>
hb_DirAddPathSep( <cDir> ) -> <cDir>
hb_DirDelPathSep( <cDir> ) -> <cDir>
hb_DirBuild( <cDir> ) -> <lSuccess>
hb_DirUnbuild( <cDir> ) -> <lSuccess>
hb_FNameDirGet( <cFileName> ) -> <cDir>
hb_FNameNameGet( <cFileName> ) -> <cName>
hb_FNameNameExtGet( <cFileName> ) -> <cNameExt>
hb_FNameExtGet( <cFileName> ) -> <cExt>
hb_FNameExtDef( <cFileName>, <cDefExt> ) -> <cFileName>
hb_FNameExtSet( <cFileName>, <cExt> ) -> <cFileName>
hb_FNameDirExtSet( <cFileName>, <cDirNew>, <cExtNew> ) -> <cFileName>
; TODO: Review, clean interface.
; TODO: Use these functions in .hbs files, utils, hbide.
* include/harbour.hbx
* Updated.
* utils/hbmk2/hbmk2.prg
* One internal function renamed.
* contrib/hbide/idemisc.prg
! Applied FN_FromArray() fix to the copy in HBIDE.
; QUESTION: Should we make some of these file manipulation
functions part of core (possibly with
reorganized names)? These are generally useful,
and some of them are not trivial, some others
are often used, and all of them generic:
Some possible candidates from hbmk2:
hb_pwd()
PathNormalize( ... )
PathMakeAbsolute( ... )
PathMakeRelative( ... )
PathSepToSelf( ... )
DirAddPathSep( ... )
DirDelPathSep( ... )
DirBuild( ... )
DirUnbuild( ... )
FNameDirGet( ... )
FNameDirExtSet( ... )
FNameNameGet( ... )
FNameNameExtGet( ... )
FNameExtGet( ... )
FNameExtDef( ... )
FNameExtSet( ... )
FNameEscape( ... )
* harbour/utils/hbmk2/hbmk2.prg
! small fix in FN_FromArray() which caused that relative paths were
converted to the root directory, i.e. -workdir=. was not working
correctly
* utils/hbmk2/hbmk2.prg
+ Enabled to use link scripts with msvc compilers, to avoid
too long cmdline problems. (experienced when creating
qtgui lib in dynamic version (HB_BUILD_CONTRIB_DYN=yes)
with HB_BUILD_NAME set to a longer name, so it was quite
a stress case and should not cause a problem for most
users.)
* contrib/hbide/ideformat.prg
! Provided: to view formatted results of select text.
Now if "Selected Text" checkbox is checked then only
selected source is supplied for the formatting.
+ Added HB_EXPORT flag to these functions: (required by xhb, hbfship)
hb_stackBaseOffset()
hb_stackItem()
hb_stackBaseProcOffset()
hb_stackGetRecoverBase()
hb_stackWithObjectOffset()
hb_memvarSaveInArray()
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ Added client address filtering engine for both data and
management interface. It will do quick match against
IP, then wildcard match against IP, then quick host name match,
wildcard hostname match. Block filter has priority over
allow filter. It's possible to control via management RPC,
console UI not yet extended to use it. A lot of other
TODO is quickly generated by this feature, f.e. making
settings persistent, supporting IP subnet masks, etc.
I didn't test this at all, pls do.
* src/rtl/strmatch.c
! Typo in comment.
* harbour/src/pp/ppcore.c
! fixed to not strip path in .d dependencies list for files included
from -I<directories>
* harbour/utils/hbmk2/hbmk2.prg
% do not use FindHeader() for dependencies list extracted from .d
files - they should contain full paths so it's not necessary
* contrib/hbnetio/utils/hbnetioq/hbnetioq.hbp
+ contrib/hbnetio/utils/hbnetioq/manageips.ui
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
* contrib/hbnetio/utils/hbnetioq/netiosrq.qrc
+ contrib/hbnetio/utils/hbnetioq/refresh.png
+ Implemented: activate/deactivate banning IPs from connecting
to server. This implementation provides for the -ini=cINIFile
command line switch. <cINIFile> contains the info about IPs.
User-interface to manage activations is via toolbar button
which allows to <Add><Delete><Save> IPs and also to flag
to activate/deactivate IPs on-the-go.
TODO: take use of console daemon by separating the user inetrface.
Hopefully by next week.
* src/rtl/Makefile
- src/rtl/base64.prg
+ src/rtl/base64d.c
+ Replaced HB_BASE64DECODE() with an optimized C implementation.
The core code is borrowed from libb64 project
(http://sourceforge.net/projects/libb64) and has been places
to public domain by author Chris Venter.
I've reformatted the code and made some minor modifications.
I had used the Harbour license for the whole file.
This code is 50-100 times faster than old Harbour code doing
the same job. Please review it, especially the buffer size
calculation.
BTW the C code uses a unique trick called 'Duff's device'.
* contrib/hbqt/hbqt_hbmk2_plugin.hbs
! Fixed to initialize pText value to avoid GPF when reaching hb_strfree(),
if non-string parameter is passed instead of string type.
Pls review, test, etc.
* contrib/hbide/hbide.hbp
! Added static libs required for embedded Harbour compiler.
* contrib/hbhpdf/harupdf.c
! Fixed to build in dynamic mode (HB_BUILD_CONTRIB_DYN=yes).
Two recently added wrappers (PDF/A related) are not exported
from libharu, which may either be a design decision or a bug.
Requires further fix once we've found out.
* contrib/hbwin/hbolesrv.c
! Fixed doubly defined symbols in HB_BUILD_CONTRIB_DYN=yes.
'hbmaindllp.lib(dllpcode.obj) : error LNK2005: _DllMain@12 already defined in hbolesrv.obj'
OLE server code will be left out of the .dll version of hbwin lib,
please refine it if needed.
* src/rtl/listbox.prg
! LISTBOX(): Fixed RTE (and 5.3 incompatibility) when
non-logical/non-NIL type is passed as 5th parameter.
This makes the ListBox() example included in 5.3 NG behave
exactly the same in Harbour as in C5.3. (Yes, the
example passes wrong parameter, plus it has a compiler
stopping typo, and it still RTEs even after the fix,
so better find some better example.)
* src/rtl/listbox.prg
! _LISTBOX_(): Fixed very old bug (can't access ViewVC ATM, but around ~r7550)
causing incompatibility with C5.3 regarding IsOpen initial value. It was
wrongly initialized by parameter what is now correctly renamed to lScrollBar.
Was wrongly named lIsOpen before this fix.
% Don't pass default style value to ScrollBar()
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.*.po
! Fixed RTE in FindNewerHeaders() when using autohbc feature.
(it's regression from around 2010-08-05 15:58 UTC+0200 Viktor Szakats)
+ Added -head=dep option to help.
* harbour/utils/hbmk2/hbmk2.prg
! fixed dependences checking for -head=full and @.clp files
+ added automatic dependencies checking for .prg files using .d
files generated by harbour compiler (-head=dep)
; TODO: extend it for .c files and GCC based compilers
* src/rtl/listbox.prg
* Internal var renamed to reflect its type.
* src/rtl/einstvar.prg
* src/rtl/einstv52.prg
* Fixed to use manifest constants.
* utils/hbrun/hbrun.prg
! Fixed to allow case-insensitive match for headers on
non-*nix platforms.
* harbour/utils/hbmk2/hbmk2.prg
! remove .d files from .hbmk working dir when -clean option is used
! do not ignore dependencies list read from .d files
* check dependencies specified by .d files for .c and .o files
generated from .prg ones
% some minor optimizations
; TOFIX: it's not safe to call FindNewerHeaders() with 3-rd parameter
set to NIL (RTE) and HBMK2 does it when -autohbc option is used
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
+ Added hbnetio management console to winuni distro.
(only the 32-bit build, because the 64-bit has no
advantage at all in case of this thin client app)
* contrib/make.hbs
+ Defined _HB_BUILD_=yes to tell .hbp files we're building
for a Harbour build.
* contrib/hbnetio/utils/hbnetio/hbnetioc.hbp
* contrib/hbformat/utils/hbformat.hbp
+ Tweak to not build in -shared mode when directly building
the .hbp file (and not as part of Harbour build).
* contrib/hbnetio/utils/hbnetioq/hbnetioq.hbp
* contrib/hbide/hbide.hbp
+ Added tweak to build in shared mode when building as
part of Harbour build. This will make the distro size
noticeably smaller.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Show server config feature converted to client-server.
* contrib/hbplist
+ Added hbnetioc to tools automatically built.
This is management console for hbnetio deamon.
* contrib/hbnetio/utils/hbnetio/hbnetioc.hbp
* Tweak to build hbformat in shared mode for
win/wce/os2 systems.
* utils/hbmk2/hbmk2.hu_HU.po
! Minor fix.
* utils/hbmk2/hbmk2.prg
! Resolved TOFIXes related to cygwin.
+ Added -head=dep option. Nothing fancy, just making room for it.
* utils/hbmk2/hbmk2.prg
+ Changed to use hb_milliSeconds() to measure build time
when using -debugtime option. This will now work precisely
for builds taking more than 1 day.
* utils/hbmk2/hbmk2.prg
+ Added experimental support for creating extern headers in .hbx.
It's currently only supported for static libs (-hblib mode),
and only for gcc based compilers (can be extended to all
platorms where 'nm' tool is available), msvc, pocc, watcom
and bcc compilers. Some of these have not been tested.
The feature implements the same functionality which already
exists in Harbour build system (enabled with HB_REBUILD_EXTERN=yes),
but now integrated into hbmk2 and with few minor enhancements.