* src/rtl/fslink.c
* contrib/hbmzip/mzip.c
! fixed missing Windows macro for legacy C compilers (bcc, lcc, dmc)
regression from 2012-03-28 20:09 UTC+0200 and 2012-03-19 12:55 UTC+0100
reported by Grigory Filatov
* src/rtl/fstemp.c
* hb_fsCreateTempEx(): changed to have only one return point
! hb_fsCreateTempEx(): do not call hb_fsNameConv() before
calling hb_fsCreateEx(). Latter does this since a few
commits, causing a regression here.
! low level hb_fsTempName() fixed to use HB_FSNAMECONV()
instead of HB_TCHAR_*() macros. This is slightly inappropriate
for 'prefix' parameter, but will do for now.
! low level hb_fsTempName() fixed to convert back result
to _SET_OSCODEPAGE. This fixes caller hb_fsCreateTemp()
which passes the value to hb_fsCreateEx().
! hb_fsTempDir(): fixed to convert result to _SET_OSCODEPAGE.
; NOTE: These are supposed to fix some recent and not so recent
oddities with HB_FCREATETEMP[EX]() and HB_DIRTEMP()
functions when used with non-ASCII chars, especially
on Windows. Tests done only on Windows, please review
and test, also on other platforms, non-UNICODE mode.
Regressions are possible.
Oddly, HB_FCREATETEMP() won't work well without properly
set _SET_OSCODEPAGE, probably something requiring further
fixes (and/or internal unicode support?).
; NOTE: As a loose rule of thumb, each Harbour high-level (.prg)
and low-level (.c) public APIs should expect and return
strings in _SET_CODEPAGE, while applying FSCONV transformations
on input filenames, and converting to/from _SET_OSCODEPAGE
when interfacing with OS-level FS APIs (_SET_OSCODEPAGE
should be ignored if OS-level FS APIs are capable of
handling unicode, f.e. in Windows default build mode).
Currently, low-level code uses a mixture of different
methods to achieve this, HB_TCHAR_* macros and equivalent
APIs, HB_FSNAMECONV(), hb_osDecodeCP()/hb_osEncodeCP(),
hb_fsNameConv(), Str API.
* contrib/hbmzip/mzip.c
+ Changed to use HB_FSNAMECONV() instead of HB_TCHAR_*() macros.
; review me!
* src/rtl/fslink.c
+ replaced HB_TCHAR_CONVTO() with HB_FSNAMECONV() on win
+ added hb_fsNameConv() support on *nix
!!! review me !!!
! HB_FLINKSYM()/hb_fsLinkSym() fixed to work with directories on win,
performance should be better also
! HB_FLINKREAD()/hb_fsLinkRead() fixed to return information for
directories on win.
+ HB_FLINKREAD()/hb_fsLinkRead() now returns value in core codepage.
TOFIX: It crashes now on *nix, after hours of trying I give up,
please review the hb_osDecodeCP() call and fix it.
; TODO: this leaves only one HB_TCHAR_COPYFROM() macro in this file.
* tests/flink.prg
! fixed typo in HB_FLINKSYM() directory test
* minor cleanup for directory link name
* src/rtl/tbrowse.prg
! ignore non-string column picture value like Clipper (instead of RTE)
(reported by Rossine)
; review/check me
* INSTALL
+ added TROUBLESHOOTING / 13. on testing compatibility components
against original implementation.
* harbour/include/hbcdpreg.h
+ added few macros for extended CP definition
* harbour/src/codepage/cp_big5.c
* harbour/src/codepage/cp_utf8.c
* harbour/src/codepage/cp_u16le.c
* updated macros for CP definition
* harbour/tests/big5_gen.prg
% added small improvement in code hashing character
translation tables so they are a little bit smaller
* harbour/src/codepage/big5.c
* regenerated
* harbour/src/rtl/cdpapi.c
* harbour/src/rtl/cdpapihb.c
* harbour/src/codepage/cp_utf8.c
* slightly modified algorithms for decoding UTF8 characters to work
better with broken UTF8 strings (i.e. to not eat characters after
broken and unclosed multibyte one)
* some minor improvements in HB_UTF8STUFF()
* formating
* harbour/include/hbwinuni.h
+ added HB_FSNAMECONV() macro - it's automatically redirected to
hb_fsNameConv() or hb_fsNameConvU16() functions depending on
UNICODE windows macro
* harbour/include/hbapifs.h
* harbour/src/rtl/filesys.c
+ added hb_fsNameConvU16() C function - it makes similar operatin to
hb_fsNameConv() but returns UTF16 string.
+ added hb_fsPipeUnblock() C function - currently it works only
in POSIX systems
* HB_FSNAMECONV() instead of HB_TCHAR_*() macros
* harbour/src/rtl/hbcom.c
* HB_FSNAMECONV() instead of HB_TCHAR_*() macros
% encapsulate port open and close operations inside
hb_vmUnlock()/hb_vmLock() - on some systems this can
be slow operations, i.e. close() is delayed until
byte in output buffer are not transmitted.
* harbour/src/rtl/hbproces.c
% prefer read then write in pipe operations
! in POSIX systems set unblocking mode for PIPE handles in
hb_fsProcessRun() function - it fixes potential deadlock
* harbour/src/common/strwild.c
* formatting
* harbour/src/rtl/dircmd.prg
% use space( n ) instead of repl( chr( 0 ), n ) for allocating
dirty buffer
* harbour/src/rtl/gttrm/gttrm.c
* harbour/src/rtl/gtsln/kbsln.c
* ignore broken UTF8 characters in input
* harbour/package/harbour.spec
! added missing attribute for harbour.ld.conf file
! added optional hbhttpds library
* harbour/contrib/hbct/envparam.c
* harbour/contrib/hbct/dummy.c
* harbour/contrib/hbct/hbct.hbp
* harbour/contrib/hbct/hbct.hbx
+ added ENVPARM() - now it's implemented for all platforms but
it should be tested on different *nixes - some of them may not
support 'char * environ' public variable
* harbour/contrib/xhb/hbserv.c
* added missing dummy functions in DOS builds
* harbour/utils/hbmk2/hbmk2.prg
! do not set binding to hb_forceLinkMainWin() when -nohblib and -gui
switches are used together
* harbour/include/hbapicdp.h
* harbour/src/rtl/cdpapi.c
+ added new C functions hb_cdpnDupUpper(), hb_cdpnDupLower(),
hb_cdpnDup2Upper() and hb_cdpnDup2Lower().
They should be used instead of hb_strUpper() and hb_strLower()
functions because they can work well with CPs where upper and
lower characters uses different number of bytes, i.e. UTF8 has
such characters.
* harbour/src/rtl/strcase.c
* harbour/src/rtl/fstemp.c
* harbour/src/rtl/filesys.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
* harbour/src/rdd/hbsix/sxsem.c
* replaced obsolete hb_strUpper() and hb_strLower() functions with
new hb_cdpnDup*Upper()/hb_cdpnDup*Lower() ones.
* harbour/src/rdd/hbsix/sxutil.c
* replaced obsolete hb_charUpper() function with hb_cdpnDupUpper()
* harbour/contrib/sddpg/sddpg.c
* harbour/contrib/sddsqlt3/sddsqlt3.c
* harbour/contrib/sddmy/sddmy.c
* harbour/contrib/sddfb/sddfb.c
* harbour/contrib/sddodbc/sddodbc.c
* harbour/contrib/sddoci/sddoci.c
! fixed memory leaks
* replaced obsolete hb_strUpper() and hb_strLower() functions with
new hb_cdpnDup*Upper()/hb_cdpnDup*Lower() ones.
; TODO: these conversions are redundant - I'll remove them in next
commit.
* harbour/include/hbcompdf.h
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbcomp.c
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
! fixed compile time GPF exploited by strings used in CASE values
of SWITCH statement compiled with active TEXHIDDEN pragma.
Warning: strings used in such context (CASE values) are not encrypted
in generated code, i.e. ".jpeg", ".jpg", ".png" in this code:
SWITCH hb_FNameExt( cFileName )
CASE ".jpeg"
CASE ".jpg"
CASE ".png"
show_pict( "Article picture", cFileName )
ENDSWITCH
* harbour/src/3rd/zlib/zutil.h
* removed not longer necessary workaround for fdopen(),
current ZLIB do not use stdio file functions
* harbour/src/3rd/zlib/zlib.dif
* rediffed with ../../../bin/hb3rdpat.hbs -rediff
* harbour/src/3rd/zlib/gzlib.c
! do not use _lseeki64 in MinGWCE builds - such function does not
exists in CTRL
* harbour/contrib/3rd/sqlite3/sqlite3.c
! fixed declaration of 64bit integer constant value in WinCE builds
; TOFIX: in WInCE builds the following error is generated:
implicit declaration of function 'osUnlockFileEx'
and of course such functions does not exists (it's internal
SQLITE3 macro)
* harbour/contrib/3rd/sqlite3/sqlite3.hbp
! fixed declaration of _WIN32_WCE macro - it should be set to
WinCE API version number.
* harbour/contrib/3rd/sqlite3/sqlite3.dif
* rediffed with ../../../bin/hb3rdpat.hbs -rediff
* harbour/contrib/hbzebra/qrcode.c
* pacified warning
* harbour/include/hbcom.ch
* harbour/src/rtl/hbcom.c
+ added new serial error code: HB_COM_ERR_PIPE
It's usable for some devices which use EPIPE error to
signal disconnected state.
* harbour/src/3rd/zlib/zlib.h
+ added missing declarations for exported public functions
* harbour/src/3rd/zlib/gzlib.c
* harbour/src/3rd/zlib/gzguts.h
! fixed POCC and XCC compilation
* enabled support for vsnprintf() in OpenWatcom builds
* harbour/src/3rd/zlib/Makefile
! fixed all non windows and WATCOM builds - critical macro
set by ./configure in ZLIB was not defined
; warning long file support is broken on most of 32bit platforms
so be careful with GZIP functions.
* harbour/contrib/gtwvg/gtwvg.h
+ define WINVER 0x0500 - it's necessary for some macros and
structures used by GTWVG code
* harbour/contrib/gtwvg/wvgwin.c
* removed redundant line with 'break;' instruction
* src/3rd/pcre/Makefile
+ added translation for JIT files from PCRE package
PCRE JIT is work of Zoltan Herczeg (hzmester/at/freemail.hu)
ARM v5/v7/thumb2, MIPS 32, x86/x64, PPC32/64 CPU
platforms are currently supported.
+ enabled PCRE JIT for mingw and msvc/x86/x64 (mainstream)
compilers. Some alternate C compilers like bcc and
watcom are not supported, others not tested. Enable
those which work.
+ enabled PCRE JIT for linux and darwin (EXPERIMENTAL).
Please test and adjust platform/compiler filters as
required.
; fallouts are possible because this is brand new code
never tested on Harbour platforms.
; TODO: to enable JIT on more platforms
(*nixes, MS-DOS, etc). (Cygwin fails)
* src/3rd/pcre/pcrejitc.c
* src/3rd/pcre/pcre.dif
+ manual patch for sjlir.c inclusion
(to be determined why hb3rdpat didn't apply this automatically)
+ src/3rd/pcre/sjmipsc.c
+ src/3rd/pcre/sjexeca.c
+ src/3rd/pcre/sjppcc.c
+ src/3rd/pcre/sjlir.c
+ src/3rd/pcre/sjx86c.c
+ src/3rd/pcre/sjconf.h
+ src/3rd/pcre/sjx8632.c
+ src/3rd/pcre/sjarmv5.c
+ src/3rd/pcre/sjlir.h
+ src/3rd/pcre/sjppc64.c
+ src/3rd/pcre/sjarmth2.c
+ src/3rd/pcre/sjutils.c
+ src/3rd/pcre/sjconfi.h
+ src/3rd/pcre/sjmips32.c
+ src/3rd/pcre/sjppc32.c
+ src/3rd/pcre/sjx8664.c
+ added PCRE JIT sources
* src/vm/set.c
! SET( _SET_DEVICE ) to accept anything starting with "PRIN"
as "PRINTER" for Cl*pper compatibility.
* src/rtl/filesys.c
! use utimes() instead of utime() on non-watcom linux platform
to avoid warning (and to follow the other similar utimes() call).
; lightly tested, review me
* harbour/src/pp/ppcore.c
! added resetting conditional compilation stack in hb_pp_reset()
Before this modification unclosed #if[def] statements were
significant for next PRG files passed to Harbour compiler
as single command (in such way works also HBMK2 with build
in compiler).
* clean stream functions and user operators in hb_pp_reset()
* src/rtl/getsyshb.prg
% optimization
* contrib/hbqt/hbmk2_qt.hbs
! fixed version guards to add complete .prg level
interface when the whole class is unsupported
in the QT version we're building against
* src/rtl/tget.prg
* src/rtl/getsyshb.prg
+ added support for hash GET variables
* utils/hbmk2/hbmk2.prg
+ added REQUESTs to blowfish, md5, sha1 and few sha2 functions
for 3rd party plugins
* contrib/hbhttpd/core.prg
* fmt
* src/vm/hashes.c
* src/vm/hashfunc.c
+ implemented posibility to use hashes a sorted arays with binary search.
Implemented HB_BOOL hb_hashScanSoft( pHash, pKey, &nPos ). Function
if similar to, but returns nPos even if pKey is not found in pHash.
Extended HB_HHASKEY( aHash, xKey [, @nPos ] ) --> lFound
Function optionaly returns position of the item with a largest key
smaller or equal to xKey. If xKey is less than all keys in hash,
zero position is returned. I.e.,
aHash := {10=>, 20=>}
? HB_HHASKEY( aHash, 5, @nPos ), nPos // .F. 0
? HB_HHASKEY( aHash, 10, @nPos ), nPos // .T. 1
? HB_HHASKEY( aHash, 15, @nPos ), nPos // .F. 1
? HB_HHASKEY( aHash, 20, @nPos ), nPos // .T. 2
? HB_HHASKEY( aHash, 25, @nPos ), nPos // .F. 2
- src/rtl/hbdynhb.c
- deleted support to accept raw function pointers. INCOMPATIBLE.
(note the C-level and XBase++ compatibility .prg-level interfaces
continue to offer that option)
; HB_DYNCALL() should be called as follows:
HB_DYNCALL( { <cFunction>, <cLibrary> | <pLibrary> [, <nFuncFlags> [, <nArgFlags1>, ..., <nArgFlagsn> ]] }, ... ) -> <xResult>
where
<nFuncFlags> can be:
hb_bitOr( HB_DYN_CTYPE_*, HB_DYN_ENC_*, HB_DYN_CALLCONV_* )
<nArgFlags*> can be:
hb_bitOr( HB_DYN_CTYPE_*, HB_DYN_ENC_* )
* contrib/hbcairo/core.c
! fixed typo
* contrib/hbssl/ssl.c
! fixed typo in SSL_GET_MODE()
* contrib/hbssl/hbssl.h
* contrib/hbssl/x509.c
* contrib/hbssl/ssl.c
+ implemented release option for X509 collectable pointer
; openSSL increments reference counter for X509 returned
by SSL_get_peer_certificate(), but does not increment it
for SSL_get_certificate(). Unnecessary freeing of X509
pointer caused random GPF later
* src/rtl/hbsockhb.c
* changed .prg level hb_socketSetBlockingIO() return value
type from lSuccess to nSuccess, to have the same return
value meaning precision as C level function
* src/rtl/hbsockhb.c
* include/harbour.hbx
+ hb_socketGetFD( hSocket ) --> nFD
* harbour/include/hbhrb.ch
* harbour/src/vm/runner.c
* disabled access to INIT and EXIT functions in
HB_HRBGETFUNSYM() and HB_HRBGETFUNLIST()
+ added 2-nd parameter <nType> to HB_HRBGETFUNLIST()
HB_HRBGETFUNLIST( <pHRB> [, <nType>] ) -> <aFuncList>
<nType> is defined in hbhrb.ch:
HB_HRB_FUNC_PUBLIC - locally defined public functions
HB_HRB_FUNC_STATIC - locally defined static functions
HB_HRB_FUNC_LOCAL - locally defined functions
HB_HRB_FUNC_EXTERN - external functions used in HRB module
* harbour/src/rdd/dbf1.c
! fixed default initialization value in UNICODE fields after
APPEND BLANK. Many thanks to Phil Krylov for information about
the problem and patch. The fix I committed is slightly different
just to follow idea of this code.