* doc/whatsnew.txt
* Extended releases notes/issues section.
* config/w32/dm.cf
! Fixed to exclude "possible extraneous ';'" warnings
for every for()/while()/etc constructs with an empty body.
! Further fixes to link/lib rules.
; TOFIX1: odbc.c, gtwvg.c still don't compile.
; TOFIX2: Harbour executables won't run, by simply doing nothing.
* source/rtl/gtwvt/gtwvt.c
! Fixed to compile with __DMC__.
; NOTE: Przemek, could you please check these?
* include/hbsetup.h
! snprintf() for __DMC__.
* contrib/hbw32/dllcall.c
! Fixed casting for __DMC__.
* contrib/hbsqlit3/hbsqlit3.c
! Workaround for Pelles C 4.5 and Open Watcom, so that
sqlite3.c won't be included for these compilers.
Pelles C 4.5 crashes, Open Watcom 1.7 goes into an
infinite loop on this huge file. For thes compilers
the sqlite3 library should be supplied by the users.
* contrib/hbapollo/apollo.c
! Fixed to compile with Open Watcom.
* source/vm/mainwin.c
* source/vm/hvm.c
! Fix for __DMC__ startup problem:
'OPTLINK : Warning 134: No Start Address'
* 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, ... )
* include/hbsetup.h
* config/hpux/gcc.cf
* config/linux/gcc.cf
* config/os2/gcc.cf
* config/bsd/gcc.cf
! Never force the platform from the make files, rather
rely on the autodetection in hbsetup.h.
Compiling default parts of the software should only rely
on manually set macros if there is no reasonable chance to
make the detection automatic.
! HB_OS_LINUX, HB_OS_HPUX autodetection supposedly made more robust.
* include/hbsetup.ch
* include/hbapi.h
* source/rtl/hbffind.c
- Removed HB_FILE_VER stuff. It's lost it's importancy with SVN.
* include/Makefile
* include/hbcommon.ch
- Removed hbcommon.ch no longer needed. It only contained
HB_FILE_VER related stuff.
* contrib/rddado/Makefile
! Excluded from OS/2 builds.
* harbour/include/hbextern.ch
* include scalar classes only when HB_REQUEST_SCALLAR define is set
* harbour/source/rtl/tobject.prg
! use <obj>:className instead of __objGetClsName( <obj> ) in error
message
* doc/whatsnew.txt
* bin/hb-mkslib.sh
! Changed the way harbour.dylib is created on Darwin systems
to support universal builds. Please review and test.
! Fixed generating links for .dylibs on Darwin.
! Removed one excessive 'cd "${OTMPDIR}"' command.
(I hope this is right)
! Removed previously added $(L_USR) from Darwin dynamic
lib creation command line, as the L_USR "-arch" flags
(and probably others) cannot work here.
; TOFIX: 'ld: library not found for -lharbour' is still
present.
* include/hbsetup.h
+ Added autodetection for HB_OS_DARWIN (based on __APPLE__).
* config/darwin/gcc.cf
! Not forcing HB_OS_DARWIN from the command-line,
we're relying on the autodetection.
* source/rtl/hbzlib.c
* include/hbextern.ch
* doc/whatsnew.txt
* Harbour level functions renamed:
HB_COMPRESS -> HB_ZCOMPRESS
HB_COMPRESSBOUND -> HB_ZCOMPRESSBOUND
HB_UNCOMPRESS -> HB_ZUNCOMPRESS
HB_UNCOMPRESSLEN -> HB_ZUNCOMPRESSLEN
This is to avoid collision with xhb functions
with similar name but different parameter list.
Please modify your programs to use the new interface.
INCOMPATIBLE.
* utils/hbextern/hbextern.prg
* Disabled scanning C HB_FUNC functions in .prg files.
* Minor formatting.
* include/hbapigt.h
! Minor cosmetic.
* source/vm/runner.c
* include/hbextern.ch
* doc/whatsnew.txt
* contrib/examples/hscript/hscript.prg
* utils/hbrun/hbrun.prg
* Harbour level functions renamed:
__HRBRUN -> HB_HRBRUN
__HRBLOAD -> HB_HRBLOAD
__HRBDO -> HB_HRBDO
__HRBUNLOAD -> HB_HRBUNLOAD
__HRBGETFU -> HB_HRBGETSYMBOL
__HRBDOFU -> HB_HRBDOSYMBOL
.hrb API functions moved to the documented namespace.
Old function names still function, but are deprecated.
Please modify your programs to use the new interface.
; NOTE: HB_DBG_*() function should I believe correctly
named as __DBG*(), as they are indeed internal
functions, not meant to guaranteed for final apps.
We should do this cleanup in the future.
* tests/Makefile
- tests/spawn.prg
- tests/spawn2.prg
! Removed two obsolete tests.
* harbour/make_deb.sh
* harbour/make_tgz.sh
* harbour/make_rpm.sh
* harbour/make_rpmce.sh
* harbour/make_rpmw32.sh
* harbour/bin/pack_src.sh
* force using BASH in all files which includes hb-func.sh
* harbour/include/hbgtcore.h
* harbour/include/hbapigt.h
* harbour/include/hbextern.ch
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/inkeyapi.c
* harbour/source/rtl/inkey.c
+ added HB_KEYINS() which works like HB_KEYPUT() but numeric
key values puts at the beginning of keyboard buffer.
It does not clear keyboard buffer contents.
* harbour/source/rtl/achoice.prg
+ Added functionality for K_MOUSEMOVE.
Now if the moouse is moved over the AChoice area,
prompt ready for selection will also change, just like
in Windows.
* harbour/bin/hb-func.sh
+ recognize -mwindows -mconsole MinGW-GCC switches and update
library list for them
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
+ added support HB_SET{TERM|DISP|KEY}CP() in non Unicode builds
* harbour/bin/hb-func.sh
* harbour/source/vm/hvm.c
* harbour/source/rtl/hbgtcore.c
* added const to s_defaultGT and s_pszLinkedMain declarations
* make s_pszLinkedMain visible and functional for platforms
which does not use HARBOUR_START_PROCEDURE
* harbour/source/vm/extrap.c
+ added exception trap for SIGSEGV, SIGILL, SIGFPE and SIGBUS
for *nixes which support sigaltstack()
* harbour/include/hbwmain.c
* harbour/source/vm/mainwin.c
* use of WinMain() from hbwmain.c
* harbour/source/pp/pplib.c
* ignore all #pragma directives setting compiler switches instead
of generating RT error when user uses PP in .prg code by __PP_*()
functions
* harbour/source/Makefile
+ harbour/source/hbextern
+ harbour/source/hbextern/hbextern.prg
+ harbour/source/hbextern/Makefile
* harbour/common.mak
* harbour/make_b32.mak
* harbour/make_gcc.mak
* harbour/make_vc.mak
* harbour/make_vcce.mak
* harbour/bin/hb-func.sh
+ added hbextern library
+ added hbextern to harbour shared library. Now all functions
are registered and visible for dynamically linked applications
not only .prg ones and .c functions explicitly bound with some
.prg code
* harbour/utils/hbrun/Makefile
* harbour/utils/hbrun/hbrun.prg
* use hbextern library instead of #include "hbextern.ch"
It has no noticeable effect on static builds but greatly
reduce the size of dynamic builds, f.e. current hbrun
linked dynamically in my Linux box has 12KB.
* 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/pp/ppcore.c
* cleaned warning
* harbour/source/rtl/set.c
* do not attach ".prn" extension to known device names also
in DOS and Windows builds
* recognize "CON" as device name in DOS, Win and OS2 builds
* harbour/source/vm/classes.c
+ adding 2-nd parameter to __clsGetProperties()
When it's TRUE then __clsGetProperties() returns also exported
messages which have corresponding assign messages (with "_" prefix)
* harbour/source/rtl/objfunc.prg
+ added __objGetProperties( oObject, [ lAllExported = .F. ] ) ->
aMsgAndValues
This function returns list of PROPERTY message with their values,
when 2-nd parameter is true it also returns exported messages which
which have corresponding assign messages (with "_" prefix)
This function is designed to use in object inspectors.
* harbour/source/rtl/mlcfunc.c
! skip SOFTCR when it's on the end of extracted line.
; NOTE: MPOSTOLC() is not exactly CA-Cl*pper compatible
The returned value is intentionally updated to be
MLCTOPOS() so conversions are revertable. For me
it's a bug in CA-Cl*pper.
* harbour/source/rtl/tget.prg
! fixed translation comma/dot translation for pictures with "@E"
Viktor, please test it - I'm not very familiar with GET code
and it's possible that I made sth wrong
* harbour/contrib/hbmzip/zip.c
! fixed access to uninitialized member of z_stream by simple
initialization. Anyhow it's minor bug in MINIZIP code exploited
HB_ZipDeleteFile() which causes that TEXT flag is not set after
raw binary file updating. There is also no API call to make it
manually.
* harbour/contrib/hbmzip/hbmzip.c
* harbour/contrib/hbmzip/readme.txt
+ added HB_ZipDeleteFile( cZipFile, cFileMask ) --> nError
* harbour/common.mak
* harbour/source/rtl/Makefile
+ harbour/source/rtl/dirscan.prg
+ added HB_DirScan( cPath, cFileMask, cAttr )
* harbour/source/rtl/strmatch.c
+ added HB_FileMatch( cFile, cPattern )
* harbour/include/hbextern.ch
+ added HB_DirScan(), HB_FileMatch()
* harbour/contrib/xhb/dirrec.prg
* changed to use HB_DirScan()
* harbour/contrib/xhb/Makefile
* harbour/contrib/xhb/common.mak
+ harbour/contrib/xhb/dirrec.prg
+ added DirectoryRecurse() function. It's not exactly xHarbour
compatible as I wanted at the beginning. But when I begin
to carefully check what xHarbour exactly does then I dropped
the strict compatibility due to problems with xHarbour
implementation which have to be fixed. I left this note in the
dirrec.prg header:
This implementation uses different rules then xHarbour one.
It does not change current drive or current directory so
unlike the xHarbour version it's MT safe.
It also returns relative paths which are more similar to
DIRECTORY() function results so they can be easy used
directly in other code, f.e. to create archive without
absolute paths. Please note that user can easy convert
relative paths to absolte ones by simple adding curdir()
and/or cPath parameter passed to DirectoryRecurse() but
reverted conversion may not be possible in some cases.
The 3-rd xHarbour parameter <lCaseMach> is ignored because
harbour uses platform native rules to check filename mask
respecting SET FILECASE and SET DIRCASE settings.
xHarbour does not add "D" to attribute list used for directory
tree scanning so user always have to add it manually and later
it ignores it so it's not possible to extract file list with
directories entries. In Harbour it's fixed.
* harbour/source/rtl/philes.c
+ added hb_osFileMask()
* harbour/source/rtl/direct.c
% minor optimization
* 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.
* harbour/contrib/hbmzip/hbmzip.c
! fixed storing/setting file date, time and attributes in *nixes
* harbour/include/hbapifs.h
* harbour/source/rtl/hbffind.c
* harbour/source/rtl/filesys.c
! replaced hack with direct bit conversion in *nixes attributes
by bit testing
* harbour/source/rtl/gtwvt/gtwvt.c
* disabled SetWindowLongPtr() in 32bit MSVC WinCE builds
* harbour/source/rtl/hbffind.c
* minor cleanup.
* harbour/source/rtl/filesys.c
+ implemented hb_fsGetAttr() and hb_fsGetFileTime() for DOS, MS-Win,
OS2 and *nixes. Please test it on different platforms.
* include/hbapifs.h
* source/rtl/filesys.c
+ Added skeletons for hb_fsGetAttr() and hb_fsGetFileTime()
TODO: Implementation.
* contrib/hbclipsm/common.mak
* contrib/hbclipsm/Makefile
- contrib/hbclipsm/dbf.c
! Removed duplicate implementation of DBF() from hbclipsm.lib
; TOFIX:
I'm getting these new warnings under BCC55:
Warning W8080 source\rtl\filesys.c 2718: '_fstat(int,_stat *)' is declared but never used
Warning W8080 source\rtl\filesys.c 2718: '_disable()' is declared but never used
Warning W8080 source\rtl\filesys.c 2718: '_enable()' is declared but never used
Warning W8080 source\rtl\fssize.c 142: '_fstat(int,_stat *)' is declared but never used
* harbour/source/rtl/gtwvt/gtwvt.h
* added some definitions which seems to be missing in some MSVC-WinCE
versions
* harbour/source/rtl/gtwvt/gtwvt.c
* cleaned SetWindowLongPtr()/SetWindowLong() usage so now all calls
are protected by the same #if condition
* harbour/contrib/hbw32/dllcall.c
* minor cleanup in return values
* harbour/contrib/hbole/ole2.c
* cleaned casting in UNICODE conversions
* harbour/source/common/expropt2.c
* replicate CA-Cl*pper compile time optimization bugs:
"" $ <literString> => .T.
AT( "", <literString> ) => 1
CHR( 256 ) => ""
only when Harbour extensions (-kh) are not enabled, f.e.
in strict Clipper compatibility mode (-kc)
* harbour/utils/hbtest/rt_hvma.prg
* harbour/utils/hbtest/rt_str.prg
* updated to test Clipper and Harbour compile time modes in
the above situations
* harbour/common.mak
* harbour/source/rtl/Makefile
- harbour/source/rtl/strings.c
* harbour/source/common/hbstr.c
* moved hb_strEmpty() from RTL to COMMON library
* harbour/include/hbexprb.c
* harbour/include/hbexprop.h
* harbour/source/common/expropt2.c
+ added compile time optimization for EMPTY() function
; removed 'TODO: empty optimization' note
* harbour/source/rtl/itemseri.c
% compress trailing spaces during string item serialization
* harbour/include/hbapi.h
* harbour/source/vm/hashes.c
+ added hb_hashAddNew() - works like hb_hashAdd() but it adds item
only if new key is used
* harbour/source/vm/hvm.c
* use hb_hashAddNew() instead of hb_hashAdd() for HB_P_HASHGEN
I cannot revert the order of hash item during compilation because
it will also change the order of user expression evaluation.