* src/rtl/fscopy.c
+ using hb_file*() API instead of hb_fs*() API.
Completing TODO originating from:
https://groups.google.com/d/msg/harbour-devel/0QY0SJ8HBFU/rWbUvJXygWYJ
; review me. I had to add an ugly-looking hack for win, because
error 38 was returned when reaching the end of file successfully.
with hb_fs*() API this didn't happen.
* harbour/include/hbapifs.h
* harbour/src/common/hbffind.c
! fixed potential freeing uninitialized handlers on some platforms
* hide private members
* harbour/src/codepage/Makefile
* harbour/include/hbcpage.hbx
+ harbour/src/codepage/cp950.c
+ harbour/src/codepage/cp_950.c
+ added new Harbour codepage "CP950". It's similar to BIG5 and
used by MS-Windows. Please test and inform me if you can replace
BIG5 in your applications with CP950 without any problems.
* harbour/contrib/hbnf/hbnf.hbx
+ added FT_IDLE()
* harbour/src/rtl/hbsocket.c
! fixed problems with missing error setting in select() executed
for asynchronous connect() (windows builds) and overwritten error
codes in connect() and accept() (all builds). Many thanks for
Mindaugas for locating the problem and patch.
* src/compiler/hbopt.c
! fixed -w3 warning 'Variable ... is assigned but not used' in case of
BEGIN SEQUENCE/END SEQUENCE sentence. Ex.:
BEGIN SEQUENCE
nI := 1
BREAK(NIL)
RECOVER
? nI
END SEQUENCE
* harbour/include/hbapicdp.h
* harbour/src/rtl/cdpapi.c
+ added new C functions:
hb_cdpDupn(), hb_cdpStrDupU16(), hb_cdpnStrDupU16()
* harbour/include/hbwinuni.h
+ added new macros: HB_CHARDUP() and HB_CHARDUPN()
Warning: this macros uses HVM functions so cannot be used in
code which is executed without active HVM i.e. in
pure harbour compiler code (common library)
* harbour/src/rtl/filesys.c
* use hb_cdpStrDupU16()
* harbour/src/rtl/hbproces.c
! fixed double OS codepage conversion in hb_fsProcessRun()
* use HB_CHARDUP*() macros to respect _SET_CODEPAGE and _SET_OSCODEPAGE
in Windows builds
* src/common/hbverdsp.c
* do not show '(WINANSI)' in the list of version flags.
* utils/hbmk2/hbmk2.prg
+ add -inc to xbuild and xmate converted projects, this being
the default mode of operation (AFAI guess) of these tools.
* contrib/hbct/disk.c
* contrib/hbnf/kspeed.c
* contrib/hbnf/peek.c
* contrib/hbnf/proper.c
* contrib/hbnf/ftidle.c
* contrib/hbnf/mouse.c
* contrib/hbnf/stod.c
* contrib/hbnf/getvid.c
* contrib/hbnf/getver.c
* contrib/hbnf/getenvrn.c
* contrib/hbnf/mkdir.c
* contrib/hbnf/rmdir.c
! formatting
* 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