+ harbour/config/linux/icc.cf
* harbour/config/linux/gcc.cf
* harbour/bin/hb-func.sh
* harbour/bin/postinst.sh
* harbour/source/common/hbver.c
+ added support for Intel(R) C/C++ compiler
* harbour/bin/postinst.sh
% use hb-mkdyn symlink instead of regenerating it as hb-mkslib
It will work also in DOS/Windows (MSys/DJGPP emulates ln -s ...)
* harbour/source/vm/thread.c
* removed all references to HB_THREAD_EQUAL()/HB_THREAD_SELF() in
non MT builds
* harbour/source/rtl/console.c
! fixed default color setting in hb_dispOutAtBox()
* harbour/contrib/gtwvg/wvggui.h
* harbour/contrib/gtwvg/wvgwin.c
* harbour/contrib/gtwvg/wincallb.c
* harbour/contrib/gtwvg/wvgsink.c
! fixes for C++ compilation:
- this is reserved word in C++ - do not use it as variable name
- class is reserved word in C++ - do not use it as variable name
- use macros to hide differences between C and C++ WinAPI
- casting
* harbour/source/rtl/gtxwc/gtxwc.c
! fixed typo which caused GPF when palette was set before console window
initialization
* harbour/source/rtl/gttrm/gttrm.c
* reset console color palette to default on application exist
* harbour/source/rtl/gtxwc/gtxwc.c
* harbour/source/rtl/gttrm/gttrm.c
* reverted the RGB numeric color definition to be compatible
with Windows GTs which seems to use RGB values directly.
Users who use to define RGB colors in hex notation (0xRRGGBB)
should now remember that it's BGR definition (0xBBGGRR).
Why MS have to make everything in reverted way?
* harbour/source/vm/classes.c
* cleanup comment
* harbour/source/rtl/gttrm/gttrm.c
+ added support for HB_GTI_PALETTE - it's supported only by Linux console
and PuTTY/PTerm
* harbour/source/rtl/gtxwc/gtxwc.c
* harbour/source/rtl/gtwvt/gtwvt.c
* harbour/contrib/gtwvg/gtwvg.c
! fixed indexes in
hb_gtInfo( HB_GTI_PALLETE, <nIndex> [, <nNewRGBcolor> ] )
They should be the same as in our screen buffer: 0-based not one
based.
* harbour/include/hbgtinfo.ch
+ added HB_GTI_FONTSEL
* harbour/source/rtl/gtxwc/gtxwc.c
+ added support for HB_GTI_FONTSEL
+ added support for HB_GTI_PALETTE
+ harbour/tests/gtxfnt.prg
+ added small demonstration/test code for HB_GTI_FONTSEL
and XWindow GTs
* harbour/source/rtl/hbproces.c
* replaced execv() with execvp() in *nix builds
* harbour/source/rtl/gtwvt/gtwvt.c
* Fixed not to generate RT if class is already been registered.
Useful in cases where multiple windows are implemented.
* config/win/bcc32.cf
* Synced flags with non-GNU make. This adds MT support.
* config/win/install.cf
! Install command modified to not give errors and block
the whole build process if the target file already exists.
The workaround consisted of changing 'copy' to 'xcopy /d /y'.
* include/inkey.ch
+ Added comments on K_MM*DOWN codes.
These also should be protected, and moved to
local the local headers belonging to GTs
supporting this feature (GTWVG notably).
* source/rtl/gtwvt/gtwvt.c
+ Protected non-Clipper compatible extension regarding
K_MM*DOWN with __HB_GTWVT_GEN_K_MMDOWN_EVENTS #define.
Also see notes in about app level code modification
needed if you want to continue using default Harbour build:
2009-02-18 12:20 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
* common.mak
* source/rtl/Makefile
* source/rtl/mouse53.c
+ Added HB_MMIDDLEDOWN() functions, plus MMIDDLEDOWN() alias.
These are always available regardless of the CLIP53
compatibility setting.
; TOFIX: K_MM*DOWN events _override_ C5.3 compatible
K_MOUSEMOVE events (in GTWVT only), which created
an unfortunate incompatibility with our target
C5.x compiler when using some specific GT. Ideas
are welcome how to fix this. We should probably
either send out both codes and let the inkey queue
do the filtering as requested by app (we need a
new filter then), or remove these event code and
generate proper K_MOUSEMOVE events instead. Apps
using this these incompatible keycodes are encouraged
to replace expressions:
'( key == K_KK*DOWN )' with the compatible:
'( key == K_MOUSEMOVE .AND. M*DOWN() )' to prepare
for the fix.
* harbour/include/hbapi.h
* harbour/source/vm/cmdarg.c
* harbour/source/vm/hvm.c
* added hb_cmdargUpdate() function which makes final argc/argv updating
(code moved from hb_cmdargInit())
! use hb_cmdargUpdate() - it fixes GPF in MT mode when some fs* functions
were called before allocating HVM stack
; TOFIX: change some hb_setGet*() functions to work without HVM stack.
* harbour/source/rtl/hbtoken.c
* formatting
* source/rtl/listbox.prg
! Restored _SET_EXACT dependent code parts to have the
same logic as before my modifications a few years ago.
Przemek, is it right now? I honestly didn't understand
the issue here.
* doc/dirstruc.txt
* Updated to reflect current state.
* source/compiler/hbusage.c
* source/lang/msghe862.c
* source/lang/msghewin.c
* source/rtl/tone.c
* source/rtl/gtos2/gtos2.c
* Update my email on source files
(didn't bother to change those under doc).
* harbour/include/hbpp.h
* harbour/source/pp/hbpp.c
* harbour/source/pp/ppcore.c
* harbour/source/compiler/hbmain.c
+ added support for dynamically calculated #define results
! removed old code which was adding __FILE__ #define constant
It was not working correctly like in other compilers ignoring
#include
+ added __FILE__ and __LINE__ #define directives using dynamically
calculated results - now it works as expected respecting #include
directives and the implementation is local to PP without any hacks
in core compiler code.
* harbour/contrib/hbct/files.c
* added support for optional milliseconds part in HB_FSETDATETIME()/
HB_FGETDATETIME().
* harbour/source/rtl/philes.c
! minor fix in return value
* source/rtl/binnumx.c
* Added rewritten versions of these functions:
a proper license: BIN2U(), W2BIN(), U2BIN()
; Work of Przemek.
* source/rtl/binnum.c
! Readded old copyright holder as co-holder.
* COPYING
* doc/license.txt
* source/rtl/binnum.c
* Added rewritten versions of these functions, now with
a proper license: BIN2W(), BIN2I(), BIN2L(), I2BIN(), L2BIN()
; Thanks to Przemek.
* COPYING
* source/rtl/philes.c
! Fixed license to have the Harbour exception, in agreement
with the group and main copyright holders.
* Minor cleanup to HB_FGETDATETIME().
* harbour/include/hbextern.ch
* harbour/source/rtl/philes.c
+ added HB_FGETDATETIME(). A "brother" of function HB_FGETDATETIME().
; TODO: BTW, hb_fs*() functions can get a better precision
(milliseconds). It would be nice to support it also at .prg level.
* source/rtl/gtwvt/gtwvt.c
* BYTE -> CHAR (Windows) - UNDONE.
* include/hbdefs.h
+ Added (commented) new types. Work in progress, incomplete.
* contrib/hbssl/ssl.c
- Temporary disabled SSL_GET_READ_AHEAD() as a workaround for
BCC linking problem with SSL_get_read_ahead() OpenSSL
library function (symbol is unresolved due to missing
leading underscore in implib generated ssleay32.lib file).
* source/vm/set.c
% hb_fsFile() -> hb_fsFileExists()
* source/rtl/hbffind.c
* HB_WIN_32_MATCH -> HB_WIN_MATCH
* doc/whatsnew.txt
* include/hbsetup.h
* source/vm/fm.c
* #define HB_FM_WIN32_ALLOC renamed to HB_FM_WIN_ALLOC.
; INCOMPATIBLE: For those who are using this switch, please
update your make files.
* source/rtl/tpopup.prg
! Fixed to draw separator lines with BOX GT attributes,
so that they appear properly.
* harbour/include/hbapi.h
* harbour/source/vm/cmdarg.c
+ added const char * hb_cmdargARGVN( int argc )
* harbour/source/vm/cmdarg.c
* try to convert executable file name argument in argv[0] to
absolute path if it's relative one. Respect PATH envvar it necessary.
* harbour/source/common/hbdate.c
* formatting
* harbour/source/rtl/philes.c
* harbour/source/rtl/errorint.c
* harbour/source/rtl/filesys.c
! use hb_cmdargARGVN(n) instead of hb_cmdargARGV()[n] to avoid
possible GPF if some function will be called before argument
initialization
* removed additional logic which tries to convert relative paths
in file name from hb_fsBaseDirBuff() and HB_PROGNAME() functions
* contrib/hbssl/Makefile
+ Added new detection dir.
* source/rtl/gtwvt/gtwvt.c
+ Added support for HB_GTI_BOXCP.
(available for UNICODE builds only).
* source/rtl/filesys.c
+ Added (untested) support for *NIX system to
hb_fsBaseDirBuff() / HB_DIRBASE().
* harbour/source/vm/classes.c
* covered some old functions marked as deprecated long time ago
by HB_LEGACY_LEVEL2 macro
* harbour/source/rtl/hbgtcore.c
* harbour/contrib/hbct/ctwin.c
* harbour/contrib/hbct/keyset.c
* harbour/contrib/hbct/misc3.c
* harbour/contrib/hbnf/numlock.c
* harbour/contrib/hbnf/shift.c
* harbour/contrib/hbnf/alt.c
* harbour/contrib/hbnf/ctrl.c
* harbour/contrib/hbnf/caplock.c
* use memset( >Info, 0, sizeof( gtInfo ) ); to initialize
HB_GT_INFO structure - it also fixes possible problems with
uninitialized pNewVal2 member in few cases.
* doc/whatsnew.txt
* include/clipdefs.h
* include/filesys.api
* include/gt.api
* include/hbapi.h
* include/hbapierr.h
* include/hbapifs.h
* include/hbapigt.h
* include/hbapiitm.h
* include/hbapirdd.h
* include/hbdefs.h
* include/hbgfxdef.ch
* include/hbgtinfo.ch
* include/hbsetup.ch
* include/hbsetup.h
* include/item.api
* include/rdd.api
* source/rtl/errorapi.c
* source/rtl/filesys.c
* source/vm/cmdarg.c
* common.mak
- source/vm/debugold.c
* source/vm/Makefile
* source/vm/vmmt/Makefile
- Permanently disabled HB_LEGACY_LEVEL support.
+ Added HB_LEGACY_LEVEL2 support to protect some
recently made incompatible changes. Old methods
are supported until Harbour 1.2. Please update
your code until then. To test your code for
compatibility with recent changes, you can turn
off legacy support manually by #defining HB_LEGACY_OFF.
(HB_USER_CFLAGS=-DHB_LEGACY_OFF)
This is recommended on local systems for all
Harbour developers.
* include/hbapigt.h
* source/rtl/gtfunc.c
+ Extended HB_GT_INFO structure with nPCount member.
* include/hbgtinfo.ch
* include/hbgtcore.h
* source/rtl/hbgtcore.c
+ Added HB_GTI_CARGO. This can be used to store whatever
user defined value on a per GT basis.
HB_GTINFO( HB_GTI_CARGO[, <xValue ] ) -> <xPrevValue>
* source/rtl/hbgtcore.c
! hb_gt_def_Alert() fixed to also initialize pNewVal2 with NULL.
(didn't cause any real-world harm).
* contrib/hbwin/win_tprn.prg
% Minor optimizations.
* source/rtl/fstemp.c
! Added cast for MSVC warning. (this code part was
formerly only active for non-Windows builds)
* include/hbapifs.h
* source/rtl/fstemp.c
* source/rtl/filebuf.c
* UCHAR -> BYTE in new FS functions, for consistency.
* include/hbapifs.h
* source/rtl/spfiles.c
+ Added hb_spFileExists(). Same as hb_spFile(), but uses
the more efficient (especially on networks) hb_fsFileExists()
call to check for file exitance.
[ not very elegant solution, as I've just copied the
whole function, and changed the file existance call, maybe
a worker function + passing the check function pointer
could help, but the hb_fsFile() and hb_fsFileExists() workings
differ slightly. ]
* source/rdd/dbfntx/dbfntx1.c
* source/rdd/dbfnsx/dbfnsx1.c
* source/rdd/dbfcdx/dbfcdx1.c
* source/rdd/dbf1.c
% Using hb_spFileExists() instead of hb_spFile().
This API also works for dirs where use doesn't have file listing
rights, which may create a slight incompatibility by finding
files which weren't found by former method (and by Clipper).
C:\WINDOWS\TEMP\*.* were such when logged in as non-admin user,
but this dir is only used as a default TEMP dir for DOS programs.
Please speak up if you find this issue (or something else) to
be problem.
* source/rtl/file.c
* File naming standardized.
* doc/whatsnew.txt
* Minor updates.
* include/hbapifs.h
* include/hbextern.ch
* source/rtl/fstemp.c
* source/rtl/filebuf.c
+ Added hb_fsCreateTempEx(). Similar to hb_fsCreateTemp(),
but allows to control the extension. Note, that the
ordering of parameters ha slightly changed compared to
hb_fsCreateTemp().
+ Added hb_fileCreateTempEx(). See above.
+ Added Harbour level HB_FTEMPCREATEEX(). See above.
; Please review & test.
* harbour/include/hbdefs.h
* harbour/include/hbapi.h
* moved HB_ISSPACE(), HB_ISFIRSTIDCHAR() and HB_ISNEXTIDCHAR() from
hbapi.h to hbdefs.h
+ HB_ISXDIGIT() macro
* harbour/include/hbpp.h
* updated other HB_PP_IS*() macros definitions to internally use HB_IS*()
ones
* harbour/source/rtl/fstemp.c
! fixed unterminated ASCIIZ string
TODO: new macros HB_CHARVAL( c ), HB_CHARXVAL( c ),
HB_VALDIGIT( i ), HB_VALXDIGIT( i )
* harbour/source/rtl/philes.c
* harbour/source/rtl/dirdrive.c
* harbour/source/rtl/philesx.c
* harbour/source/rtl/filesys.c
! fixed CURDRIVE() and DISKNAME() to not return "A" in OS-es which
does not use drive letters
! eliminated toupper()
% minor cleanup and speed improvement
* harbour/config/bin.cf
* harbour/config/test.cf
* removed quoting for TOP=$(GRANDP) nested GNU make call parameters
* config/os2/dir.cf
* use $(COMSPEC) instead of calling cmd.exe directly
* config/os2/gcc.cf
* rewrote create_library rule to work with make -jn without
breaking shell environment/command line size.
* source/rtl/hbproces.c
* included sys/waith.h in OS/2 build. I think that initial
#defines can be simplified a bit.
* config/os2/install.cf
* rewrote install_rule to work with make -jn without
breaking shell environment/command line size.
* config/lib.cf
* removed unnecessary double quotes around TOP definition
* harbour/include/hbstack.h
* harbour/source/vm/estack.c
! fixed typo in one internal function name
* harbour/include/hbapi.h
* harbour/include/hbstack.h
* harbour/source/vm/estack.c
* harbour/source/vm/dynsym.c
* harbour/source/vm/memvars.c
% changed code used for memvars clear in MT mode - it greatly
reduce the cost of HVM thread exit
% changed code for memvars copping/sharing when thread is started
it greatly reduce the time of thread creation when existing memvars
are shared or copied
Both modifications reduced the cost of simple
hb_threadJoin( hb_threadCreate( {|| NIL } ) )
few times depending on number of symbols and memvars.
* harbour/source/rtl/gttrm/gttrm.c
* harbour/source/rtl/gtsln/gtsln.c
* harbour/source/rtl/gtsln/gtsln.h
* harbour/source/rtl/gtpca/gtpca.c
% added better initial cursor position detection and eliminated sscanf()
* harbour/source/Makefile
! fixed concurrent dependencies in cross builds