* harbour/include/hbapi.h
* harbour/include/hbwmain.c
* harbour/src/vm/cmdarg.c
* moved declaration of hb_winmainArgInit() to header file
* harbour/contrib/hbmxml/3rd/minixml/mxml_fil.c
* harbour/contrib/hbmxml/3rd/minixml/mxml.h
! fixed to compile with WinCE builds
; I cannot regenerate .diff file because
../../../../bin/hb3rdpat.hbs -rediff
generates RT error:
Error BASE/1123 Argument error: HB_ATOKENS
Called from HB_ATOKENS(0)
Called from URL_GETFILENAME(810)
Called from FETCHANDEXTRACT(673)
Called from MAIN(412)
Sorry, probably I'm missing sth what was already discussed
but I was not able to follow all post on the list in last
weeks so I would like to ask Viktor or Tamas for the help.
* include/hbwmain.c
* src/vm/cmdarg.c
! Fixed missing declaration for hb_winmainArgInit()
! Fixed missing HB_EXTERN_* from around hb_winmainArgInit() declaration.
; Patches from Andi. Thank you.
* Added HB_EXPORT to the declaration in hbwmain.c.
* utils/hbmk2/hbmk2.prg
* MS-DOS LFN vs. SFN next guess: deleted hack when loading
plugin.
* include/hbwmain.c
* src/vm/cmdarg.c
* config/bin.mk
* Cygwin main entry patch from Tamas.
* INSTALL
+ Added note that all settings are case sensitive.
Not that those would read it who would need to.
* harbour/src/vm/strapi.c
* harbour/include/hbapistr.h
+ added new C function hb_wstrnlen()
* harbour/include/hbdefs.h
* harbour/src/common/hbwin.c
! fixed possible buffer overflows in hb_mb*() and hb_wc*() functions
* removed danger hb_mb*() and hb_wc*() functions which were wrongly
used in core code and corresponding HB_TCHAR_*() macros
+ added hb_mbntowccpy() function and HB_TCHAR_COPYTO() macro
it always sets trailing 0 after passed buffer just like hb_strncpy()
+ added hb_wcntombcpy() function and HB_TCHAR_COPYFROM() macro
it always sets trailing 0 after passed buffer just like hb_strncpy()
* harbour/src/rtl/gtclip.c
! fixed wrongly calculated size of string extracted from clipboard
(when unicode string was in clipboard then number of unicode characters
were used instead of number of multibyte ones)
! added protection against possible memory corruption if some external
process sets clipboard text without trailing 0
* changed hb_gt_winapi_[sg]etClipboard() functions parameters to use
PHB_ITEM as buffer
Question to windows users: different Win GTs use different encoding
for the clipboard buffer. Maybe you want to normalize it?
* harbour/src/vm/cmdarg.c
* harbour/src/vm/extrap.c
* harbour/src/common/hbgete.c
* harbour/src/common/hbffind.c
* harbour/src/common/hbtrace.c
* harbour/src/rtl/gtwin/gtwin.c
* harbour/src/rtl/fstemp.c
* harbour/src/rtl/filesys.c
* harbour/src/rtl/gtgui/gtgui.c
* harbour/src/rtl/gtwvt/gtwvt.c
* harbour/include/hbgtcore.h
* harbour/include/hbapistr.h
* harbour/include/hbwmain.c
* harbour/contrib/gtwvg/gtwvg.c
* harbour/contrib/gtwvg/wvggui.c
* harbour/contrib/gtwvg/wvgcuig.c
* harbour/contrib/gtwvg/wvgutils.c
* harbour/contrib/gtwvg/wvgcore.c
* harbour/contrib/gtwvg/wvgwing.c
* harbour/examples/gtwvw/gtwvw.c
! fixed possible buffer overflows and GPF traps due to wrongly used
HB_TCHAR_*() macros and/or corresponding hb_mb*()/hb_wc*() functions
Seems that some problems were potentially exploited even in non UNICODE
builds.
* src/vm/runner.c
* src/vm/garbage.c
* src/vm/classes.c
* src/rtl/cdpapi.c
* src/rtl/cdpapihb.c
* src/rdd/dbcmd.c
* include/hbapicdp.h
* include/hbapiitm.h
* include/hbextern.ch
* include/hbdefs.h
* include/hbsetup.h
* include/hbapi.h
- Deleted code guarded with (previously disabled) HB_LEGACY_LEVEL2
* include/rdd.api
* include/clipdefs.h
+ Permanently enabled HB_LEGACY_LEVEL2 related changes.
* contrib/xhb/bkgtsks.c
- Deleted HB_OS_WIN_USED. It wasn't used.
* include/hbapi.h
* src/vm/cmdarg.c
* hb_winmainArgGet() changed to not use Windows types.
This function is declared in hbapi.h and this header
shouldn't depend on windows.h.
* include/hbwince.h
* include/hbsetup.h
* HB_OS_HAS_DRIVE_LETTER is now configured in central
place (hbsetup.h) for WinCE platform also.
* include/hbwince.h
* include/hbdefs.h
* Windows (CE and not-CE) specific declarations moved from
hbwince.h to hbdefs.h.
* include/hbdefs.h
% hbwince.h inclusion now better guarded to not include it
for non WinCE platforms.
+ HB_OS_WIN_USED macro will now autodetected by checking
whether windows.h was included before this header.
This is required for hbwince.h. I don't like it, since
hbapi.h still depends on windows.h for WinCE platform,
which still ties us to unnecessary windows.h inclusion
rules. Rather, hbwince.h should be included directly
by .c files when needed and when HB_OS_WIN_CE is defined.
After all this our little Windows API implementation
for compilers which need it.
* include/hbdefs.h
* include/hbwmain.c
+ hb_winmainArgInit() declaration moved to hbwmain.c, the
only place where this is used.
* Deleted HB_EXPORT from hb_winmainArgInit. Pls speak up if
this is wrong. It's possible to move this back to hbdefs.h,
but parameter types should be changed to ANSI ones.
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/gtwvg.h
* contrib/gtwvg/wvggui.c
* contrib/gtwvg/wvgcuig.c
* contrib/gtwvg/wvggui.h
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvgutils.c
* contrib/gtwvg/wvgcore.c
* contrib/gtwvg/wvgwing.c
- Deleted HB_OS_WIN_USED. Now it should work without it.
windows.h was already included in non-official method, so
it's now okay also.
* harbour/source/rtl/lang.c
% simplified HB_USERLANG() code
* harbour/include/hbdefs.h
* use inline functions for HB_PUT_PTR() and HB_GET_PTR() macros in
GCC builds. It makes GCC builds alignment free and fixes the problem
with broken strict aliasing rules.
* harbour/include/hbwmain.c
* casting
* harbour/source/vm/fm.c
* harbour/include/hbwmain.c
* use HeapAlloc( GetProcessHeap(), ... ) instead of LocalAlloc()
when HB_FM_WIN32_ALLOC macro is set - Toninho's tests show that
it's a little bit more efficient - thanks.
* harbour/include/hbwmain.c
* pacified unused variable warning
* harbour/include/hbpp.h
* harbour/source/pp/ppcore.c
! do not report #if expression errors in #if PP directives when they are
in codedis activated by parent #if[def]/#elif/#else. It allows
to compiler code like:
#ifdef DEFINE
#if DEFINE >= 0x100
...
#endif
#endif
+ added logical expression reduction to not report #if expression errors
in code like:
#ifdef DEFINE && DEFINE >= 0x100
...
#endif
! fixed possible division by 0error in #if exporessions like #if 1 / 0
Now #if expression compiler error is generated
! restored some bit operators in #if directives wrongly disabled with
xHarbour stuff
* harbour/source/vm/hashfunc.c
% removed unnecessary hb_itemUnRef()
* include/hbextern.ch
* source/vm/cmdarg.c
+ Added HB_CMDLINE() .prg level function to return
the full command line. Currently it does reassemble
it from hb_argc/hb_argv.
* contrib/rddsql/mysqldd.c
! Fixed MSVC casting errors in C++ mode.
* include/hbwmain.c
* source/vm/cmdarg.c
* Moved argv[ 0 ] generation on Windows platform, so
that it now gets properly filled with the full
executable file path for console mode (GTWIN)
apps in all situations (f.e. when run from a
batch file using '%~n1.exe' macro).
* source/rtl/hbinet.c
! Fixed to use safe strerror() (named strerror_s())
under MSVS 2005 and upper.
Please test.
* source/hbzlib/gzio.c
+ Added _CRT_SECURE_NO_DEPRECATE locally to suppress
various MSVC unsafe CRT API usage warnings. Maybe it'd
be better to fix these by using Harbour APIs.
* utils/hbdoc/gentrf.prg
! Fixed missing "common.ch"
* 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/include/hbwmain.c
* harbour/source/vm/mainwin.c
! fixed unnecessary conversion of WinMain() parameters on W32/W64
when UNICODE macro is set - thanks to Chen
* harbour/source/rdd/sdf1.c
* harbour/source/rdd/delim1.c
! fixed code wrongly synced with xHarbour - in Harbour HB_SET_EOL
is char* not PHB_ITEM - thanks to Andi
* harbour/source/compiler/genc.c
! fixed file name in generated for C inline code by escaping
special characters - thanks to Andi
* harbour/source/rtl/gtwvt/gtwvt.c
* minor code cleanup
* harbour/contrib/gtwvg/wvtcore.c
! fixed setting default foreground and background color when user
does not pass it's own one. Previous versions was using _s->background
and _s->foreground - it was wrong because this variables in all
GTWVT base GTs (also in xHarbour) contains not default color but
the color recently used to redraw some part of screen - f.e. after
exposing some region - it means that they can have any value.
Such bugs are hard to locate because the same program can be executed
many times without any problem and suddenly he will use wrong colors
drawing sth - if you observed such effect then it can be the results
of the above problem. Now default color is taken from core GT code.
Two functions make it: hb_wvt_FgColorParam() and hb_wvt_BgColorParam()
Both accept also colors passed as standard Clipper strings.
The same should be also fixed in xHarbour just like the problem with
executing registered user functions when HVM is closing fixed in
previous commit - even if now it does not cause GPF (due to race
condition it may be exploited only sometimes) then it does not mean
it works correctly.
* harbour/include/hbapifs.h
* harbour/source/common/hbfsapi.c
+ added hb_fsMaxFilesError()
* harbour/source/pp/ppcore.c
* harbour/utils/hbpp/hbppcore.c
* use hb_fsMaxFilesError() to avoid direct accessing of errno
value - some compilers/platforms do not support errno
* harbour/include/hbdate.h
* harbour/source/rtl/seconds.c
+ added hb_dateMilliSeconds()
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/idle.c
* harbour/source/rtl/inkey.c
* use hb_dateMilliSeconds() to avoid using clock_t clock()
some compilers/platforms do not support it
* harbour/include/hbwince.h
* harbour/source/common/hbwince.c
* disabled clock_t clock() emulation - it's not longer used
+ added some declarations for ANSI functions emulated by us
for WinCE and some defines - code sent by Marek Paliwoda
* harbour/include/hbwmain.c
* harbour/source/vm/mainwin.c
* always use unicode translations with WinMain() parameters for compilers
which do not set UNICODE macro for WinCE
* harbour/source/rtl/fserror.c
* do not include errno.h for HB_WIN32_IO - it's not necessary
* harbour/utils/hbver/hbverfix.c
* do not include errno.h for _MSC_VER and HB_WINCE builds
* harbour/contrib/libmisc/dates2.c
- commented DATETIME() function - this was not standard DATETIME()
value but raw ctime() function output and some compilers/platforms
do not support ctime()
* harbour/contrib/libnf/getenvrn.c
+ added HB_OS_WIN_32_USED
* harbour/contrib/mtpl.mak
* harbour/contrib/pdflib/pdflib.h
* replaced TABs with SPACEs
* harbour/include/hbsetup.ch
! reenabled HB_EXTENSION in default builds - disabling it makes
a lot of RDD code unusable and breaks default builds due to
insufficient dependences
* harbour/include/hbwince.h
* put functions declarations inside HB_EXTERN_BEGIN / HB_EXTERN_END
+ harbour/include/hbwmain.c
+ added WinMain() to main() wrapper
* harbour/include/hbexprb.c
* harbour/source/common/expropt1.c
! fixed typo reported by Chen
* harbour/source/pp/hbppgen.c
* harbour/source/main/harbour.c
* harbour/utils/hbpp/hbpp.c
* use hbwmain.c when main() is not supported by C compiler/platform
* harbour/source/rtl/gtwin/gtwin.c
* include wincon.h in all builds except LCC
* harbour/source/rtl/fserror.c
* harbour/source/rtl/fstemp.c
* harbour/source/rtl/filesys.c
* use HB_OS_WIN_32_USED as in other files (still on TOFIX list)
* harbour/source/rtl/seconds.c
+ added HB_OS_WIN_32_USED
* harbour/source/compiler/hbcomp.c
! fixed typo: stderr was used instead of stdout