* contrib/hbwin/win_reg.prg
* contrib/hbwin/tests/test_reg.prg
* added nRegSam (access mask) parameter into functions: win_regRead,
win_regWrite, win_regGet, win_regDelete, win_regQuery, win_regSet.
This parameter can be used in win32 applications, running under
win64 systems for access to 32-bit or 64-bit registry.
* src/rtl/run.c
* src/rtl/hbrunfun.c
* experimental: use hb_processRun() on all win targets
(was wince targets) instead of system() from C RTL.
QUESTION: do the same for all platforms?
* contrib/hbwin/win_prn1.c
* contrib/hbwin/hbwin.ch
* contrib/hbwin/hbwin.hbx
+ WIN_ENUMFONTS() modified to work also when no HDC is passed.
+ WIN_ENUMFONTFAMILIES( [ <nCharset> ][, <cName> ] ) -> <aFonts>
* contrib/gtwvg/wvgcuig.c
* contrib/gtwvg/wvgcore.c
! fixed possible GPF in some functions if font name was not passed
* contrib/hbct/hbct.hbp
* contrib/hbwin/hbwin.hbp
* contrib/xhb/xhb.hbp
+ install .h headers to contrib dir only (and not anymore to
the central Harbour include dir). This means that 3rd party
or user code that uses these C-level contrib headers will now have
to add contrib package using <contrib>.hbc hbmk2 option instead
of manual -l options. INCOMPATIBLE.
* harbour/contrib/hbwin/hbwapi.h
* harbour/contrib/hbwin/wapi_winbase.c
* harbour/contrib/hbwin/hbwin.hbx
+ added to new WIN API wrappers:
WAPI_QueryPerformanceCounter( @nCounter ) -> <lSuccess>
WAPI_QueryPerformanceFrequency( @nFrequency ) -> <lSuccess>
Warning: read in MSDN about above functions and possible
interactions with multi CPU machines.
* harbour/contrib/hbwin/win_misc.c
* harbour/contrib/hbwin/hbwin.hbx
+ added new function which converts QueryPerformance counters
to seconds:
WIN_QPCOUNTER2SEC( nCounter ) -> <nSeconds>
I suggest to use it to convert difference between two calls
to WAPI_QueryPerformanceCounter(), i.e.:
WAPI_QueryPerformanceCounter( @nCounterStart )
[...]
WAPI_QueryPerformanceCounter( @nCounterEnd )
? "total time:", ;
WIN_QPCOUNTER2SEC( nCounterEnd - nCounterStart ), "sec."
* harbour/src/vm/fm.c
! do not enable by default DLMALLOC in WinCE builds.
It was the source of problems reported by Jarek with file read/write
operation in WinCE builds. Now it should work correctly - please
make some tests with real devices - I used emulator only.
* harbour/contrib/hbwin/wapi_wingdi_font.c
+ added WAPI_ADDFONTRESOURCE() and WAPI_REMOVEFONTRESOURCE()
* harbour/src/vm/classes.c
! added missing initialization of onError and destructor flags.
The problem could be exploited when class inherits from more
then one parent classes and onError handler[s] or destructor[s]
were neither defined in the class nor in the first ancestor.
* harbour/contrib/hbwin/olecore.c
+ added helper PRG functions:
__oleInvokeMethod(), __oleInvokePut(), __oleInvokeGet(),
__oleGetNameId()
* harbour/src/rtl/hbcomhb.c
* indenting
* harbour/contrib/xhb/xhb.hbp
- harbour/contrib/xhb/xthrow.prg
+ harbour/contrib/xhb/xthrow.c
* rewritten THROW() function in C
* harbour/contrib/hbwin/olecore.c
+ add PRG function __OLEISDISP() which can be used to verify if given
parameter is Harbour OLE pointer item.
* harbour/src/vm/runner.c
* do not execute EXIT procedures inside HB_HRBDO() call.
This modification allows to call HB_HRBDO() more then
once for the same HRB module without activating INIT
and EXIT procedures on each call. EXIT procedures will
be activated when HRB modules is unloaded or on HVM QUIT.
* harbour/contrib/hbwin/axcore.c
! cleaned casting
* harbour/contrib/hbwin/olecore.c
! fixed to use Harbour STR API instead of hardcoded ANSI CP for
conversions between Harbour and OLE items.
Patch provided by Phil Krylov with some minor modifications.
* include/extend.api
* include/harbour.hbx
* include/hbdefs.h
* include/hbapi.h
* include/hbvm.h
* include/hbapigt.h
* include/clipdefs.h
- src/pp/pplib3.c
* src/pp/Makefile
* src/vm/hvm.c
* src/rtl/hbtoken.c
* src/rtl/inkey.c
* src/rdd/usrrdd/usrrdd.c
* contrib/hbmysql/hbmysql.hbx
- contrib/hbmysql/mysqlold.c
* contrib/hbmysql/mysql.c
* contrib/hbmysql/hbmysql.hbp
* contrib/hbmysql/mysql.ch
* contrib/hbpgsql/hbpgsql.hbx
* contrib/hbpgsql/postgres.c
* contrib/hbwin/hbwin.hbp
* contrib/hbwin/hbwin.hbx
- contrib/hbwin/legacy.prg
- contrib/hbwin/legacycd.c
- contrib/hbwin/legacyco.c
- contrib/hbwin/legacycp.c
* contrib/hbodbc/hbodbc.hbx
- contrib/hbodbc/odbcold.c
* contrib/hbodbc/odbc.c
* contrib/hbodbc/hbodbc.hbp
* contrib/hbtip/utils.c
* contrib/hbtip/hbtip.hbx
* deleted things marked with HB_LEGACY_LEVEL3, finishing cleanup
job started many years ago.
; this also means that windows.h and os2.h will no longer be
included by Harbour headers, HB_OS_WIN_USED is thus ineffective,
so if someone needs these headers to access system APIs, they
should be manually included in each source file. Some old
hacks have also been removed which disabled some Clipper
compatibility macros/types in compatibility headers (clipdefs.h, *.api),
if someone uses these alongside windows.h/os2.h inclusion, it will
be broken, here the strategy is to move to Harbour types and
Harbour API headers, simply Clipper headers and newer OS headers
are not compatible.
; HB_DONT_DEFINE_BASIC_TYPES is not effective anymore.
; INKEY_RAW is no more, use HB_INKEY_RAW instead.
; NEXTKEY() hidden parameter extension is disabled. Use HB_KEYNEXT()
Harbour alternative which has it.
; Some legacy PP functions are no more.
; hb_vmPushState()/hb_vmPopState() APIs were now permanently deleted.
; __STR*() token handling legacy functions are no more, use native HB_TOKEN*()
ones instead.
; WRITEBHEADER in USRRDD is no more, WRITEDBHEADER is the replacement.
; hbmysql, hbodbc compatibilty and deprecated functions were deleted
; hbwin compatibility functions were deleted. If there is demand, mainly to
help migrating xhb users, they can be readded to xhb lib by interested
developers, now deleted code should be changed to fall back to dummies
on non-Windows builds.
; some deprecated hbpgsql functions were deleted
; hbtip HB_BASE64() is deleted. Use core HB_BASE64ENCODE() instead.
; Anyone affected by above changes has the option to stick with 3.0.x Harbour
versions or to update their source code according to above instructions
(or instructions included in past ChangeLog entries)
; Some fallouts in Harbour build is possible after these changes
* contrib/hbwin/mapi.c
! fixed UNICODE conflict after recent LoadLibrary patch.
this file has forced UNICODE off due to MS idiocy so I had
to add more idiocy to interface with properly UNICODE setting
compliant local API
Note, I didn't test non-UNICODE build, if you're interested
in it, pls do it
* contrib/hbwin/tests/testmapi.prg
+ simpleio
* harbour/src/rtl/valtoexp.prg
! fixed typo in recent modifications causing RTE in HB_VALTOEXP()
* harbour/contrib/hbwin/win_prn2.c
! allocate dynamic memory for print buffer in WIN_PRINTFILERAW()
32KB variable on process execution stack is potential source of
random GPFs in programs using deeper recursive calls and killer
for MT mode when smaller thread stack is allocated.
! fixed potential data lost in WIN_PRINTFILERAW() when not all data
is transfered in single WritePrinter() call
! interrupt printing in WIN_PRINTFILERAW() if WritePrinter() returns
error
* harbour/include/harbour.hbx
* harbour/src/rtl/hbrandom.c
! restored my old fix - it was correct and the results over RAND_MAX
range expected
+ added new PRG function:
HB_RANDOMMAX() -> <nRAND_MAX>
* harbour/src/rtl/gtxwc/gtxwc.c
* harbour/src/rtl/gtwvt/gtwvt.c
* harbour/contrib/xhb/hboutdbg.c
* harbour/contrib/xhb/xhbfunc.c
! use 'hb_cmdargARGVN( 0 )' instead of 'hb_cmdargARGV()[ 0 ]' to avoid
GPF when no arguments are initialized
* harbour/contrib/hbwin/hbolesrv.hbc
* use {allmingw} instead of {mingw} macro for MinGW64 builds
* harbour/src/codepage/Makefile
* harbour/src/codepage/uc646_yu.c
+ harbour/src/codepage/uc646yuc.c
* harbour/include/hbapicdp.h
+ added JUS I.B1.003 - Cyrillic script variant of ISO-646-YU
for Serbian and Macedonian language
* harbour/src/codepage/Makefile
+ harbour/src/codepage/cpsr646.c
+ harbour/src/codepage/cpsr646c.c
* harbour/include/hbcpage.hbx
+ added SR646 and SR646C Harbour codeapges.
Both code pages uses the same 8-bit representation but different
unicode values - SR646 uses Latin script and SR646C Cyrillic script.
It means that it's useless to make any translations between SR646
and SR646C because both versions uses the same ASCII values but they
can help in translation to other encodings or CPs, i.e. to convert
some Serbian text in one of the above CPs to Latin letters in UTF8
encoding then it's enough to make:
hb_strToUTF8( <cText>, "SR646" ) -> <cUtf8LatinText>
and for conversion to UTF8+Cyrillic:
hb_strToUTF8( <cText>, "SR646C" ) -> <cUtf8CyrillicText>
* contrib/hbwin/hbwin.ch
* contrib/hbwin/win_svc.c
+ added 4th param to WIN_SERVICEINSTALL() to spec start type
+ added related constants
* contrib/hbwin/wapi_misc.c
! cast for win64
* harbour/src/rtl/memofile.c
% eliminated two call to hb_fsSeek() and one hb_fsRead() from
non *nix version of MEMOREAD() function
! do not write final EOF character if write failed in MEMOWRIT()
function
; TOFIX: In *nixes support for EOF character in MEMOREAD() and
MEMOWRITE() is disabled by default - IMHO it's wrong
because it's not possible to use these functions to exchange
safely data with CA-Cl*pper applications or even DOS/Windows
versions of Harbour applications.
* harbour/src/rtl/hbcom.c
* replaced infinite waiting for reading/writing from/to serial port
in *nix builds with loops checking periodically (once per second)
for HVM events (i.e. thread interrupting).
* harbour/src/codepage/uc88591b.c
* converted hex digit to uppercase
* harbour/contrib/hbwin/win_dlg.c
+ added support for setting default file name in
WIN_GETOPENFILENAME() and WIN_GETSAVEFILENAME() functions:
WIN_GETOPENFILENAME( [[@]<nFlags>], [<cTitle>], [<cInitDir>],
[<cDefExt>], [<acFilter>], [[@]<nFilterIndex>],
[<nBufferSize>], [<cDefName>] )
-> <cFilePath> |
<cPath> + e"\0" + <cFile1> [ + e"\0" + <cFileN> ] |
""
WIN_GETSAVEFILENAME( [[@]<nFlags>], [<cTitle>], [<cInitDir>],
[<cDefExt>], [<acFilter>], [[@]<nFilterIndex>],
[<nBufferSize>], [<cDefName>] )
-> <cFilePath> |
<cPath> + e"\0" + <cFile1> [ + e"\0" + <cFileN> ] |
""
* contrib/hbwin/wapi_misc.c
! trying to make hbwapi_LoadLibrarySystem() really safe
by using LoadLibraryEx() with special flag. On win7/64 tested
with 32-bit or 64-bit exe, it still tries to load f.e. winspool.drv
from the apps own dir, at least as per procmon. GetSystemDirectory()
will return system32 as the .dll dir, though it is SysWOW64, but
this seems to be fixed internall by kernel.
(safety is apparently fully going against MS's will, but anyway,
maybe I'm not getting it)
* contrib/hbwin/wce_simc.c
* contrib/hbwin/wce_smsc.c
* contrib/hbwin/hbwin.hbx
* contrib/hbwin/wce_sim.prg
! fixed to always define wce (and compiler) specific .prg level functions
* contrib/hbwin/hbwapi.h
* contrib/hbwin/wapi_misc.c
* hbwapi_FileNameAtSystemDir() made static
+ hbwapi_LoadLibrarySystem() public function added
this is safe version of LoadLibrary() when loading Windows
system dlls. it will avoid dll hijacking vulnerability.
! deleted HB_EXPORT from hbwapi_t*() functions, they are
public to this lib due to UNICODE setting dependance
; TODO: make hbwapi_LoadLibrarySystem() effective also for WinCE,
for now it will not add any system path under this platform.
* contrib/hbwin/axcore.c
* contrib/hbwin/mapi.c
* contrib/hbwin/win_prn2.c
* contrib/hbwin/win_prn3.c
* contrib/hbwin/wapi_shellapi.c
! LoadLibrary() -> hbwapi_LoadLibrarySystem()
thus fixing dll hijack vulnerability
+ contrib/hbwin/wapi_misc.c
* contrib/hbwin/hbwin.hbp
* contrib/hbwin/hbwapi.h
* contrib/hbwin/win_prn3.c
* hb_tstrlen() -> hbwapi_tstrlen() and made public
* hb_tstrncat() -> hbwapi_tstrncat() and made public
+ hbwapi_tstrdup()
+ hbwapi_FileNameAtSystemDir() public function
please review it, I'm notoriously bad with 1 byte over/underruns
* contrib/hbct/hbct.hbp
* raise c dialect to gnu90 on linux for stime()
* contrib/hbwin/wapi_winbase.c
! define WAPI_GET*PATHNAME() as noop functions on wce
* contrib/hbwin/win_shell.c
! made WIN_SHELLNOTIFYICON() a dummy on wce
* contrib/hbwin/mapi.c
! do not undef UNICODE for wce (results in missing LoadLibraryA() on link)
* contrib/hbwin/wapi_commctrl.c
! made WAPI_IMAGELIST_LOADIMAGE() a dummy on wce
* contrib/sddfb/sddfb.hbp
* contrib/hbfbird/hbfbird.hbp
* set c dialect to gnu90 for fbird headers
* contrib/hbpre.hbm
* set c dialect to gnu90 for wce/allmingw for cegcc Windows headers