* bin/3rdpatch.hb
* contrib/make.hb
* changed to be executed by hbmk2
- contrib/hbrun/extdyn.prg
- contrib/hbrun/hbrun.prg
- contrib/hbrun/hbrun.rc
- contrib/hbrun/headers.prg
- contrib/hbrun/p_ext.hb
- contrib/hbrun/plugins.prg
* contrib/hbrun/hbrun.hbp
% changed to use hbmk2 sources and make file to build hbrun,
implementing the build method described in previous ChangeLog
entry. The lost feature is netio management plugin, which
is now not loaded by default. Plus, since this is a static
build, dynamic extensions don't work.
* contrib/make.hb
* src/pp/ppcore.c
* deleted reference to hbrun in comment
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* contrib/hbnetio/utils/hbnetio/netiomgm.hb
* __hbrun_plugin() -> __hbshell_plugin()
* INSTALL
* minor in previous change
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
- contrib/hbnetio/utils/hbnetio/netiomgm.prg
+ contrib/hbnetio/utils/hbnetio/netiomgm.hb
* renamed hbrun/hbmk2 shell plugin code to .hb extension
* contrib/hbnetio/utils/hbnetio/netiosvc.prg
! added missing copyright and SVN ID header
* utils/hbmk2/hbmk2.prg
+ documented '.' parameter on -help screen.
; With this, hbmk2 has all the features of hbrun. Except:
- it doesn't contain the selection of statically linked
contribs:
hbct, hbxpp, hbexpat, hbmemio, hbmzip, hbnetio, hbunix, hbwin
These can now be loaded on-demand, f.e. by speccing
them in envvar HB_EXTENSION, from shell prompt or
#require directive, etc
- it doesn't contain the 'hbnetio management console' shell
plugin.
It now can be loaded by copying /contrib/hbnetio/utils/hbnetio/netiomgm.hb
to <home>/.harbour/.
It means hbmk2 can now be used to:
- convert Harbour source code to various kind of executables/binaries
- run Harbour source code directly
- serve as an interactive Harbour prompt/shell.
; As a next steps, HB_BUILD_CONTRIB_DYN may be enabled by
default, hbrun be deleted and hbmk2 renamed to f.e. simply 'hb'.
; Needs testing on non-Windows envs
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbrun/plugins.prg
- deleted .hbs script support from places where it was
unlikely to be used in the wild
* contrib/hbide/ideplugins.prg
* changed to support .hb extension for plugins instead of
.hbs (plus, same applies as above0
* config/postinst.hbs
* implemented same ASORT() fix as in prev commit by Przemek.
(it may be important once we modify hbrun/hbmk2 to run
scripts under UTF8 CP)
* contrib/hbnetio/utils/hbnetio/modules.hbp
- contrib/hbnetio/utils/hbnetio/rpcdemo.hbs
+ contrib/hbnetio/utils/hbnetio/rpcdemo.hb
- contrib/hbide/plugins/hbide_script_qtgui.hbs
+ contrib/hbide/plugins/hbide_script_qtgui.hb
- contrib/hbide/plugins/hbide_plugin_savebackup.hbs
+ contrib/hbide/plugins/hbide_plugin_savebackup.hb
- utils/hbmk2/examples/plug_tpl.hbs
+ utils/hbmk2/examples/plug_tpl.hb
- tests/stripdoc.hbs
+ tests/stripdoc.hb
* .hbs -> .hb for Harbour scripts.
* tests/stripdoc.hb
+ use directry.ch
* utils/hbmk2/hbmk2.prg
* .hb? input make files are now considered with UTF8 encoding.
+ enabled full UTF8 CP on *nix systems. EXPERIMENTAL.
* debian/copyright
* package/winuni/mpkg_win_uni.nsi
* utils/hbmk2/hbmk2.prg
* contrib/hbpost.hbm
* contrib/hbnetio/utils/hbnetio/modules.hbp
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbqt/hbqt_common.hbm
* contrib/hbide/ideedit.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/idesaveload.prg
* contrib/hbrun/hbrun.prg
* contrib/hbrun/plugins.prg
* config/postinst.hbs
* COPYING
+ added support for .hb extension for Harbour scripts.
I plan to make a full switch to .hb from .hbs.
* src/3rd/pcre/Makefile
+ enabled UTF8 support in PCRE (binary size overhead ~150KB)
+ enabled unicode properties support in PCRE (binary size overhead ~50KB)
* src/rtl/hbregex.c
+ added commented logic to detect UTF8 support in PCRE
and enable UTF8 mode when the HVM CP is also UTF8. Latter
logic is missing yet and subject to review.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* contrib/hbnetio/utils/hbnetio/netiomgm.prg
* contrib/hbrun/hbrun.prg
* tests/ac_test.prg
* tests/ac_test2.prg
* tests/tstmacro.prg
* tests/tstalias.prg
* formatted using automatic tools
* contrib/hbmysql/utils/hbmk.hbm
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
* contrib/hbnetio/utils/hbnetioq/hbnetioq.hbp
* contrib/hbformat/utils/hbformat.hbp
+ removed relative path from .hbc references
* utils/hbmk2/hbmk2.prg
+ show warning when referenced .hbc file could not be found
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiosvc.prg
+ use latest hbwin/wapi capabilities to install service thus
allowing to change back the default run mode to interactive
+ install service as auto-start
+ added Windows service related option to cmdline help screen
+ display textual error msg on service related errors
! minor typo in an error msg
* harbour/include/hbapifs.h
* harbour/src/rtl/filesys.c
% removed unnecessary PID setting in POSIX file lock function.
+ added new C function:
int hb_fsLockTest( HB_FHANDLE hFileHandle, HB_FOFFSET nStart,
HB_FOFFSET nLength, HB_USHORT uiMode );
It allows to test file range lock status.
It returns -1 on error, 0 when lock can be set and value greater
then 0 if part of given range is locked by other process. In POSIX
systems this value is PID of current lock owner. In other systems
it's always 1.
In uiMode only FLX_SHARED bit is significant.
* harbour/include/hbapifs.h
* harbour/src/rtl/filebuf.c
+ added new C function:
int hb_fileLockTest( PHB_FILE pFile, HB_FOFFSET nStart,
HB_FOFFSET nLen, int iType );
It's redirected to hb_fsLockTest()
* harbour/contrib/hbnetio/netio.h
* harbour/contrib/hbnetio/netiocli.c
* harbour/contrib/hbnetio/netiosrv.c
* harbour/contrib/hbmemio/memio.c
+ implemented hb_fileLockTest() low level code
* harbour/include/dbinfo.ch
+ added DBI_LOCKTEST
* harbour/src/rdd/dbf1.c
% small code simplification
+ implemented DBI_LOCKTEST
dbInfo( DBI_LOCKTEST [, <nRecNo> ] ) -> <nStatus>
returns corresponding results to C level hb_fsLockTest() function.
If current workarea is already locked then 0 is returned.
If low level FS is located on POSIX system (accessed directly or by
HBNETIO) then value greater then 0 is PID of current lock owner.
If the lock is hold by aliased area or other thread of calling
process then <nStatus> is current PID. In Other systems 1 is returned
when lock cannot be set in current workarea.
If <nRecNo> is given then the test is for RLOCK() otherwise FLOCK()
operation.
* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtcore/hbqtcore.hbx
- deleted HBQT_FINDCHILD(). it used raw pointer. was used by hbqtuitools.
% deleted unused extern.
* package/winuni/mpkg_win_uni.bat
* contrib/hbnetio/utils/hbnetioq/hbnetioq.hbp
* contrib/hbqt/hbqt.hbc
* contrib/hbqt/hbqt_all.hbp
- contrib/hbqt/tests/QtUiTools.txt
- contrib/hbqt/qtuitools
- contrib/hbqt/hbqtuitools.hbc
* contrib/hbide/hbide.hbp
- deleted dynamic UI loading. it had too many hopeless TOFIXes
and it required raw pointers. and a lot of bloat.
Should be reimplemented by loading and processing .ui files
manually.
* utils/hbmk2/hbmk2.prg
+ new filter values: lngcpp and lngc. Can be used to
check forced C++/C mode.
* contrib/hbmzip/3rd/minizip/ioapi.h
* contrib/hbmzip/3rd/minizip/zip.h
* contrib/hbmzip/3rd/minizip/minizip.dif
! C++ -> ANSI C comments
* contrib/hbmzip/3rd/minizip/minizip.hbp
! Override c89 mode with gnu89. For f*64() functions.
* contrib/rddads/rddads.hbp
! Override c89 mode with gnu89. ADS headers need it.
* contrib/hbpre.hbm
+ Forcing c89 mode for GCC family compilers (in non C++ forced mode)
Results were pretty good and Harbour/3rd party code complies
very well.
* contrib/hbunix/hbunix.hbp
* contrib/hbcurl/hbcurl.hbm
* contrib/hbnetio/hbnetio.hbp
* contrib/gtwvg/gtwvg.hbp
* contrib/hbwin/hbwin.hbp
* contrib/hbsqlit3/hbsqlit3.hbp
* contrib/hbexpat/hbexpat.hbp
* contrib/hbmemio/hbmemio.hbp
- Deleted just added local c89 mode forcage. Now it's done global.
* contrib/hbqt/qtgui/hbqtgui.h
! Fixed HBQT_TYPE_QIcon redefinintion. Pls check, I didn't rebuild the
whole package after the mod.
* contrib/hbunix/hbunix.hbp
* contrib/hbcurl/hbcurl.hbm
* contrib/hbnetio/hbnetio.hbp
* contrib/hbnetio/hbnetio.hbx
* contrib/gtwvg/gtwvg.hbp
* contrib/hbwin/hbwin.hbp
* contrib/hbsqlit3/hbsqlit3.hbp
* contrib/hbexpat/hbexpat.hbp
+ Enabled -std=c89 option when building with any gcc compiler.
(TOFIX: now GTWVG breaks with error)
I mean this as an experiment which I'd like to extend
gradually to whole Harbour as it seems a good way to
ensure the code being truly ANSI C as we claim it. It
can certainly avoid a few unnecessary rounds with
committed code problems.
Now that there are multiple ANSI C standards we may
want to discuss which level we want to stick with
(C89/C90, C99, C1X) until then let's assume C89 even though
not all of Harbour code complies ATM. F.e.:
../../../hbprintf.c:543:4: warning: implicit declaration of function 'modfl'
../../../hbprintf.c:1146:25: warning: implicit declaration of function 'isfinite'
* contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.cpp
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp
* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
! Converted C++ style comments to ANSI C.
Even though it's C++ code it's good to stick with one
comment style (ANSI C) accross Harbour to avoid getting wrong customs.
Pls stick to it.
* harbour/contrib/hbnetio/netiosrv.c
* harbour/contrib/hbnetio/readme.txt
+ added new server function:
NETIO_VERIFYCLIENT( <pConnectionSocket> ) -> <lAccepted>
By default client verification is done inside NETIO_SERVER()
function but some servers may want to verify client password
before they execute some expensive initialization code necessary
for RPC executed from NETIO_SERVER()
* harbour/src/vm/itemapi.c
* set NIL to item passed by reference when hb_itemParamStoreForward()
or hb_itemParamStoreRelease() is called with NULL pItem parameter.
* harbour/contrib/hbnetio/netiosrv.c
! fixed possible memory leak when
NETIO_SRVSTATUS( ..., NETIO_SRVINFO_PEERADDRESS, ... )
is called without 3-rd parameter passed by reference
* harbour/examples/gtwvw/gtwvw.c
* replaced repeated TONE code with hb_gt_winapi_tone()
+ added MOUSE_GETPOS() method
* harbour/examples/gtwvw/wvwtbar.c
! fixed to compile with Harbour
* harbour/src/rtl/hbproces.c
! fixed one HB_TRUE wrongly used instead of TRUE
* minor simplification
* harbour/include/hbgtinfo.ch
* harbour/src/rtl/hbgtcore.c
+ added HB_GTI_VERSION - it returns version information just like
hb_gtVersion() - usually the same but can be different in some
multilevel GTs, i.e. when different GT drivers are used locally
and remotely.
* harbour/include/inkey.ch
* harbour/src/rtl/hbgtcore.c
+ added HB_K_CONNECT and HB_K_DISCONNECT inkey codes.
They can be used to signal that remote terminal is connected or
diconnected.
* harbour/tests/gtkeys.prg
+ added HB_K_* keycodes
* harbour/contrib/hbnetio/netiosrv.c
* removed unnecessary casting
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ contrib/hbnetio/utils/hbnetio/netiosvc.prg
+ hbnetio will act as a service on Windows platform.
To run it interactively from console, use: 'hbnetio -a'
; TOFIX: I'm getting 'error 1067' when starting up the
service. It get resolved when I build hbnetio in
-st mode. (I use mingw and did a full rebuild)
* contrib/rddads/rddads.hbp
! Suppressing annoying mingw warning in ace.h.
; TOFIX: hbmk2 overrides this ATM.
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
* contrib/hbformat/utils/hbformat.hbp
* contrib/hbrun/hbrun.hbp
- Deleted nxcompat (and friends) flags from local .hbp files.
They are enabled by config/hbpost.hbm, in more precise manner.
* utils/hbmk2/hbmk2.hbp
* utils/hbi18n/hbi18n.hbp
* utils/hbtest/hbtest.hbp
- Deleted also from here. (These .hbp files are not used
by core make.)
+ contrib/hbrun/hbrun.rc
+ Missed from prev commit.
! Enable mft/ver features only for msvc, bcc and mingw, the
rest will die various deaths.
* package/harb_win.rc
* Tweak a little to not cause most RC to die.
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
* contrib/hbrun/hbrun.hbp
* Enabled security options only on win platform.
* contrib/hbrun/hbrun.hbp
+ Added msvcarm option to avoid fatal compiler error in headers.c.
* contrib/hbrun/hbrun.prg
* contrib/hbrun/hbrun.hbp
+ contrib/hbrun/plugins.prg
+ Added plugin support.
+ Added hbnetio management console to hbrun, as plugin.
Use: "netio.<command> <params>" format to access it.
Or enter netio command domain with ".netio" and use
regular netio commands. Exit netio command domain with
"." command.
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
* contrib/hbplist
- Stdalone hbnetio management console is not built or
included in distro anymore. Use hbrun.
* contrib/hbrun/hbrun.prg
* contrib/hbrun/hbrun.hbp
+ contrib/hbrun/headers.prg
* Moved headers to separate file.
* contrib/hbrun/pullext.prg
* Minor.
* contrib/hbnetio/utils/hbnetio/netioeng.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* Renamed entry function for console plugin.
+ contrib/hbnetio/utils/hbnetio/netioeng.prg
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
* contrib/hbnetio/utils/hbnetio/hbnetioc.hbp
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* contrib/hbnetio/utils/hbnetio/netiocmd.prg
+ netio management client-side command handling moved to
a separate module and rewritten to act as a command
handler plugin. This makes it possible to move the
whole logic inside console hosts, f.e. hbrun.
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Accepting notification events coming from the server
in a separate thread, so now they are realtime-ish
(it's poll). It's little rough around the edges yet.
* contrib/hbnetio/utils/hbnetio/hbnetioc.hbp
+ Enabled MT mode also for console client.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ Send out 'shutdown' notifications to mgmnt clients.
* ChangeLog
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
! Set netio root data dir to 'data' subdir by default to
avoid overwriting anything in the daemon's own
directory (f.e. its settings)
! Set netio root data dir to invalid dir name ("*?:*?:")
to prevent management clients to create any files
on server. QUESTION: Is there a better way to prevent
RDD I/O redirection for given server session?
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
! Enabled: "Stop" a connection, either via toolbar icon or
context menu on a connection row in the browser.
% Fixed: to refresh browser every 3 seconds.
* src/common/hbverdsp.c
+ Instead of adding "(UNICODE)" marker in build info for UNICODE
builds, now it will add "(WINANSI)" for non-UNICODE builds.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* Using more hb_StrFormat()
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* Tweak to one cmd help.
* utils/hbrun/hbrun.prg
* Formatting.
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
! Ebnabled to get information from netiosrv daemon.
Currently only connections info. Time interva to refresh
browser is 10 seconds currently. Still a lot to be
implemented based on latest features of netiosrv daemon.
A work-in-progress.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
- Deleted filtering on client host name.
* contrib/hbnetio/utils/hbnetio/netiocon.prg
! Fixed RTE when there were no notifications.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
+ Reworked and reenabled host name based filtering.
NOTE: Host name lookup is not implemented for win platforms
in hbsocket.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Resolved remaining TODOs regarding client notifications.
+ Added automatic deletion of (abnormally) disconnected clients
from notification list.
* Commented filter code dealing with host names until we find
out how to get those from IP.
* contrib/hbhttpd/core.prg
! English translation of one word.
* contrib/hbformat/hbformat.prg
! Added missing ASCAN() from list of functions.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
+ Implemented notifications to management clients about
server side event, curently connection/disconnections.
Quite many TODOs are left, and since the console client
is ST yet, the display of server events is done after
processing a console command.
F.e. a GUI client can use such information to refresh
list of clients.
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
* Cleanups.
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
* Roughly reworked to act as management client UI.
I didn't touch any GUI logic.
+ Accept server port and password in ini file, which
is now named 'hbnetioq.exe.config'. This can also
be extended and fine tuned at will.
; To test, run it like the console client, f.e.:
hbnetio -adminpass=toptopsecret
hbnetioq -pass=toptopsecret
; NOTE: Only one RPC call is implemented, pls fill the rest,
plus some periodic refresh would have to implemented
for the browse. Pls see
contrib/hbnetio/utils/hbnetio/netiocon.prg
for possible RPC commands and returned values.
* harbour/src/rdd/dbf1.c
! fixed DBI_ENCRYPT to use previously set password if no new one
is given
* harbour/src/rdd/hbsix/sxtable.c
! fixed wrong parameter checking in SX_SETPASS()
! removed wrong comment about optional parameter in SX_DBFENCRYPT()
* harbour/src/vm/cmdarg.c
! added missing OS CP conversion in HB_ARGV()
* harbour/contrib/hbct/ctmisc.prg
* use HB_PROGNAME() instead of HB_ARGV( 0 ) in EXENAME()
* harbour/contrib/hbnetio/readme.txt
! fixed two typos in description
* contrib/hbnetio/utils/hbnetioq/netiosrq.prg
! Fixed casing in #include lines.
Please remember that case-sensitive file systems exist.
Patch by Tamas.
* 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)