* 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/include/hbrdddbf.h
* moved DBF record lock range for DB_DBFLOCK_HB64 to avoid potential
problems with integer overflows in system or network transport layer.
Warning: INCOMPATIBLE!
all applications using DB_DBFLOCK_HB64 locking mode should
be updated - it is not safe to concurrently access the
same files using programs compiled with older Harbour
versions and current one.
* harbour/include/hbrdddbf.h
* modified DB_DBFLOCK_HB64 locking scheme
- extended RLOCK/FLOCK area from 2^31-2 to 2^32-2
it effectively changes maximum number of records in this
locking scheme to 4'294'967'294
- use COMIX like hyper locking mode
it should increase performance
Warning: INCOMPATIBLE!
all applications using DB_DBFLOCK_HB64 locking mode should
be updated - it is not safe to concurrently access the
same files using programs compiled with older Harbour
versions and current one.
* renamed the following DB_DBFLOCK_* macros:
DB_DBFLOCK_CLIP to DB_DBFLOCK_CLIPPER
DB_DBFLOCK_CL53 to DB_DBFLOCK_COMIX
DB_DBFLOCK_CL53EXT to DB_DBFLOCK_HB32
* added new locking scheme: DB_DBFLOCK_CLIPPER2
This locking scheme is designed to replicate _real_ locking scheme
used by Cl*pper applications linked with NTXLOCK2.OBJ
It's different then the documented one.
; Now Harbour supports the following locking schemes:
DB_DBFLOCK_CLIPPER 1 default Clipper locking scheme
DB_DBFLOCK_COMIX 2 COMIX and CL53 DBFCDX hyper locking scheme
DB_DBFLOCK_VFP 3 [V]FP, CL52 DBFCDX, SIx3 SIXCDX, CDXLOCK.OBJ
DB_DBFLOCK_HB32 4 Harbour hyper locking scheme for 32bit file API
DB_DBFLOCK_HB64 5 Harbour hyper locking scheme for 64bit file API
DB_DBFLOCK_CLIPPER2 6 extended Clipper locking scheme NTXLOCK2.OBJ
* harbour/include/hbrdddbf.h
* harbour/include/hbrddntx.h
* harbour/include/hbrddnsx.h
* harbour/include/hbrddcdx.h
* harbour/src/rdd/dbf1.c
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
+ finished support for COMIX like hyper locking.
This modification enables periodical switch to write locks
by readers to eliminate starvation effect on some systems
where many readers can completely block writer.
By default readers use exclusive lock once per each 16 operations.
+ added optional support for delayed index write locks (flush locks)
in hyper locking modes.
If index RDD can use such locks then write lock can be divided into
two parts:
1) block writers and new readers (write lock)
[prepare index modifications in memory]
2) wait for old readers still active (flush lock)
[write modifications to index file]
[release locks]
This mode reduces time when index is locked exclusively increasing
reader performance and also increase writer performance because
waiting for active readers it can prepare index modifications in
memory.
* harbour/src/rdd/dbfcdx/dbfcdx1.c
+ added support for delayed index write locks (flush locks) in DBFCDX
* harbour/src/rtl/filebuf.c
* automatically change write file locks to read locks when file is
open in readonly mode in POSIX systems.
* harbour/src/vm/classes.c
* disabled inheriting of class variables values from ancestor classes
when new class is dynamically created.
Warning: INCOMPATIBLE!
This modification is not backward compatible and can
interact with some existing code which has to be updated
for new behavior.
* harbour/include/hbpp.h
* harbour/include/hbcomp.h
* harbour/src/pp/ppcore.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbcmplib.c
+ added support for setting starting line number in code compiled
from memory buffer
! removed unnecessary EF_CANDEFULT flag from recently added
compiler RTE
* harbour/include/hbpp.h
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbcomp.c
* harbour/src/compiler/hbgenerr.c
+ added support for redirecting compiler warning and error messages
to user function.
* harbour/src/compiler/hbcmplib.c
+ optional support for generating RTE in HB_COMPILE*() functions
on compile errors.
* harbour/include/hbapicdp.h
* harbour/src/rtl/cdpapi.c
- removed hb_cdpchrcmp() function and HB_CDP_ISBYTESORT() macro
+ added new function:
const HB_UCHAR * hb_cdpGetSortTab( PHB_CODEPAGE cdp );
it returns binary sort table or NULL if given CP uses more
complicated sorting algorithm.
* harbour/include/hbrddcdx.h
* harbour/src/rdd/dbfcdx/dbfcdx1.c
% use hb_cdpGetSortTab() to take binary sort table used by WA CP
instead of creating new one for each WA.
* harbour/include/hbgtcore.h
* harbour/src/rtl/gtclip.c
! fixed possible random data settings by hb_gt_winapi_setClipboard()
! fixed possible memory leak in hb_gt_winapi_setClipboard()
+ added new C function for WIN32 builds:
HB_BOOL hb_gt_winapi_setClipboardRaw( HB_UINT uFormat,
void * pData, HB_SIZE nSize );
* harbour/include/hbtrace.h
* harbour/src/common/hbtrace.c
+ added new C function:
const char * hb_tracemode( const char * szNewMode );
it can be called with "a" or "w" parameter to set open
mode for newly created by hb_tracefile() log files.
* harbour/src/rtl/trace.c
+ added new PRG function:
HB_TRACEMODE( [<cNewMode>] ) -> <cPrevMode>
* include/hbapi.h
* src/rtl/hbrandom.c
+ Changed Harbour's core pseudo-random generator from STD C rand()/srand()
to superior implementation. New implementation fixed MT problems with
the standard solution on certain targets (f.e. win/mingw, win/msvc)
Based on Przemek's patch which is in turn based on algorithm by
Steve Park: http://www.cs.wm.edu/~va/software/park/ suggested by me
on the list. Further modifications:
* HB_RANDOMINTMAX() adapted. Checkme, I'm not sure about this.
* HB_RANDOMSEED() updated.
+ headers cleaned, copyright updated, note added
+ automatic seed defaulting like in previous version (checkme,
we may as well drop it, though it will be create incompatibility)
; per-thread seed didn't work well for me (even with new engine)
so I didn't implement it.
+ added proto for hb_random_seed()
* harbour/include/hbgtinfo.ch
+ added new hb_gtInfo() action: HB_GTI_FONTATTRIBUTE and attributes:
HB_GTI_FONTA_FIXMETRIC, HB_GTI_FONTA_CLRBKG, HB_GTI_FONTA_DRAWBOX
* harbour/src/rtl/gtxwc/gtxwc.c
+ implemented HB_GTI_FONTATTRIBUTE.
Now user can make:
hb_gtInfo( HB_GTI_FONTATTRIBUTE, HB_GTI_FONTA_FIXMETRIC + ;
HB_GTI_FONTA_CLRBKG + HB_GTI_FONTA_DRAWBOX )
and use also fonts with broken metrics.
* harbour/include/hbstack.h
* harbour/src/vm/estack.c
+ added internal function hb_stackLockCount()
* harbour/src/vm/hvm.c
* modified hb_vmRequestReenter() to return HB_FALSE instead of GPF
when called from non HVM thread.
* extended hb_vmRequestReenter[Ext]()/hb_vmRequestRestore() to
save and restore HVM stack lock state and lock HVM stack before
successful return.
This extensions is critical for MT applications which need
to safely reenter HVM also from code encapsulated inside unknown
number of hb_vnUnlock()/hb_vnLock() calls.
[TOMERGE 3.0]
* harbour/src/compiler/cmdcheck.c
% removed redundant conditions
* 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
* include/extend.api
* include/hbdefs.h
* include/hbapi.h
* include/clipdefs.h
* contrib/hbpost.hbm
* contrib/hbfimage/hbfimage.hbp
* config/rules.mk
- deleted HB_LEGACY_TYPES_OFF macro. it is the default
in post 3.0.x Harbour versions.
+ added HB_LEGACY_TYPES_ON macro. This should be used when
building C code which uses Clipper/Harbour legacy types
(f.e. LONG or BOOL).
It will stay until next stable version when all legacy
types will be permanently removed. This gives time for
3rd party developers to update code to use Harbour
(non-legacy) types in C code.
See '2009-11-01 11:35 UTC+0100 Viktor Szakats' ChangeLog
entry about non-legacy Harbour types.
* harbour/include/hbgtinfo.ch
* harbour/src/rtl/gtwvt/gtwvt.c
+ added support for HB_GTI_MAXIMIZED
Patch created by Heinz V. Bergen - thank you.
* harbour/src/common/hbstr.c
% simplified hb_strAt() code and added missing stop condition.
This modification also quite nicely optimized the average speed
of AT() function and $ operator.
* src/rtl/strtran.c
! minor in webpage URL
* src/rtl/gtwvt/gtwvt.c
! Patch from Heinz V. Bergen, fixing full screen and alt-enter
GT features when GTWVT windows was not open yet, also fixing
screen positioning/sizing regression.
* src/rtl/inkey.c
* include/harbour.hbx
+ added HB_KEYLAST() which allows to pass a mask
(I'm not sure if this is ultimate solution, but there is goes
for now. Pls remove it if there is better one)
* package/winuni/RELNOTES
* updated 3rd party version numbers
* harbour/include/hbapifs.h
* harbour/src/rtl/filesys.c
% removed unnecessary PID setting in POSIX file lock function.
+ added new C function:
int hb_fsLockTest( HB_FHANDLE hFileHandle, HB_FOFFSET nStart,
HB_FOFFSET nLength, HB_USHORT uiMode );
It allows to test file range lock status.
It returns -1 on error, 0 when lock can be set and value greater
then 0 if part of given range is locked by other process. In POSIX
systems this value is PID of current lock owner. In other systems
it's always 1.
In uiMode only FLX_SHARED bit is significant.
* harbour/include/hbapifs.h
* harbour/src/rtl/filebuf.c
+ added new C function:
int hb_fileLockTest( PHB_FILE pFile, HB_FOFFSET nStart,
HB_FOFFSET nLen, int iType );
It's redirected to hb_fsLockTest()
* harbour/contrib/hbnetio/netio.h
* harbour/contrib/hbnetio/netiocli.c
* harbour/contrib/hbnetio/netiosrv.c
* harbour/contrib/hbmemio/memio.c
+ implemented hb_fileLockTest() low level code
* harbour/include/dbinfo.ch
+ added DBI_LOCKTEST
* harbour/src/rdd/dbf1.c
% small code simplification
+ implemented DBI_LOCKTEST
dbInfo( DBI_LOCKTEST [, <nRecNo> ] ) -> <nStatus>
returns corresponding results to C level hb_fsLockTest() function.
If current workarea is already locked then 0 is returned.
If low level FS is located on POSIX system (accessed directly or by
HBNETIO) then value greater then 0 is PID of current lock owner.
If the lock is hold by aliased area or other thread of calling
process then <nStatus> is current PID. In Other systems 1 is returned
when lock cannot be set in current workarea.
If <nRecNo> is given then the test is for RLOCK() otherwise FLOCK()
operation.
* harbour/src/vm/thread.c
* set sleep timeout in *nix version of hb_threadReleaseCPU() to 10 ms
* harbour/src/compiler/hbpcode.c
! fixed typo which could cause compile time crash when debugger code
is generated (-b) and file name with extenssion has only one or
two characters
* harbour/include/hbcompdf.h
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbstripl.c
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
! removed old code designed to optimize line numbers generated in PCODE.
It cannot work correctly and in some cases it was generating HB_P_LINE
pcodes in wrong places.
% enabled new code for HB_P_LINE PCODEs optimization also in debugger (-b)
compilation so it can be used to replaced the old one.
* include/harbour.hbx
* src/rtl/hbrandom.c
* HB_RANDOMMAX() -> HB_RANDOMINTMAX()
; TOFIX: now broken under mingw in all places where HB_RANDOMINT()
is potentially called with larger than HB_RANDOMINTMAX()
value. This will be impossible f.e. in RANDOM() CT function.
* src/rtl/hbrandom.c
* src/rtl/hbrand.c
+ hb_random_block() changed to use ARC4 backend.
* examples/httpsrv/modules/showcounter.prg
% hb_ntos()
* 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>
* include/harbour.hbx
* src/rtl/hbrandom.c
+ HB_RAND32() -> <32-bit random number>
; TOFIX: random numbers are broken under mingw 4.5.2, only high 16bits are random.
in all HB_RAND*() functions
* 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>
* include/harbour.hbx
* src/vm/runner.c
+ HB_HRBGETFUNLIST() -> <aArray>: New function posted to the
list by Francesco Saverio Giudice
(NOTE: I changed the name a little bit)
* tests/gfx.prg
! fixed console output. Patch by Tamas Tevesz
* changed rest of ? commands to outstd()
* harbour/include/hbapi.h
* harbour/src/vm/hashes.c
+ add new public C function: HB_BOOL hb_hashClear( PHB_ITEM pHash )
* do not generate RTE when unexisting key is passed to HB_HDEL()
now code which makes sth like:
if xKey $ hValue
hb_hDel( hValue, xKey )
endif
can be reduced to:
hb_hDel( hValue, xKey )
* harbour/src/vm/hashfunc.c
+ added new PRG function: HB_HCLEAR( <hValue> ) -> <hValue>
* include/hbtrace.ch
* added way to disable HB_TR_ALWAYS
for more: 2011-04-16 23:04 UTC+0200 Viktor Szakats
* contrib/hbxbp/hbxbp.hbp
* contrib/hbqt/hbqt_common.hbm
+ disabled HB_TR_ALWAYS permanent messages from SVN builds
; TODO: move this logic to hbpre.hbm
* include/Makefile
+ include/hbstrict.ch
* contrib/hbpost.hbm
+ added experimental -u+ header to catch some common code style
problems. currently IF() is caught, but it interferec with std.ch
hbsix.ch and possibly more, so it's not enabled
* config/global.mk
* src/dynlib/2nd/Makefile
* src/dynlib/Makefile
* secondary harbour dynlib is now enabled by __HB_BUILD_DYN_2ND=yes
* renamed secondary harbour dynlib to harbour2*
+ it's now possible (again) to build harbour .dll in ST mode by
using __HB_BUILD_DYN_ST=yes. if used together with __HB_BUILD_DYN_2ND=yes,
the secondary dynlib will be MT. (pls note the secondary dynlib
is never directly used by hbmk2, so it's there for mere build convenience
only)
* contrib/hbxbp/xbpmenubar.prg
* contrib/hbxbp/xbprtf.prg
* contrib/hbxbp/xbpfiledialog.prg
* contrib/hbxbp/xbpprintdialog.prg
* contrib/hbxbp/xbpscrollbar.prg
* contrib/hbxbp/xbpprinter.prg
* contrib/hbxbp/xbpdataref.prg
! IF() -> IIF() (with the help of hbstrict.ch)
* contrib/hbformat/hbfmtcls.prg
! fixed mistakenly changed '==' to LEFTEQUAL() in prev commit
* harbour/include/hbinit.h
* formatting
* harbour/src/common/hbstr.c
* pacified warnings generated by C compilers having
modf() function wrongly defined in header files
* harbour/src/rtl/hbtoken.c
! fixed bug reported by Patrick on xHarbour devel list
* harbour/src/rdd/dbfcdx/dbfcdx1.c
* modified to use different startup function names as workaround
for problems with non unique function names reported by compilers
using HB_INITSEG_STARTUP - it's not a fix but workaround only.
* include/harbour.hbx
* include/hbapi.h
* src/common/hbver.c
* src/rtl/version.c
+ hb_verHostCPU() to return CPU architecture the host OS
is running under. (long time TODO)
It may or may not give precise answer depending on
target OS. For win, it works as exptected.
+ HB_OSCPU() -> <cCPU> same for .prg level apps.
* contrib/hbmxml/3rd/minixml/mxml_str.c
! Ultimate isdigit() fix. [Tamas Tevesz]
* harbour/src/vm/procaddr.c
! removed dummy entry at the end of function table
* harbour/src/common/hbstr.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
* harbour/src/rdd/hsx/hsx.c
* harbour/contrib/xhb/fparse.c
* pacified warnings
* harbour/include/hbsetup.h
* disabled flatten function attribute in ANDROID builds,
it causes that Android_NDK-GCC GPFs compiling src/vm/procaddr.c
* harbour/include/hbdate.h
* enabled localtime_r() in Android builds
* harbour/src/common/hbgete.c
* enabled setenv() in Android builds
* harbour/src/common/hbtrace.c
! fixed ANDROID_LOG_* flags
; QUESTION: why Android log is used instead of syslog?
It causes that harbour has to be linked with
log library (-llog).
* harbour/src/common/hbprintf.c
* disabled modfl() in Android builds
* harbour/src/rtl/filesys.c
* added hack for missing functions in android libc library
* harbour/src/rtl/diskspac.c
* harbour/src/rtl/disksphb.c
* use statfs instead of statvfs in Android builds
* harbour/contrib/hbct/dattime3.c
* disabled stime() in Android builds
* harbour/contrib/hbmzip/3rd/minizip/ioapi.h
* do not use 64bit FILE functions in Android builds
* harbour/contrib/xhb/hbsyslog.c
* disabled using Android log in Android builds - use standard syslog
instead. This code needs deeper modification to switch to Android log.
; I have just recompiled whole Harbour code for android-3, android-5
and android-9 at ARM using standard Harbour Linux build files.
Android does not have pthread and rt libraries (they are merged
with android c library) so to avoid link errors I simply created
soft links from libpthread.a and librt.a to libc.a.
With this hack could use unmodified hbmk2 and linux .mk files.
BTW exporting HB_CPU="arm" was not enough to switch to cross build
in my x86@64 Linux machine so I had to export HB_HOST_BIN and set
HB_BUILD_3RDEXT="no"
* harbour/include/hbapifs.h
* harbour/src/rtl/filesys.c
+ added new C function:
int hb_fsIsPipeOrSock( HB_FHANDLE hPipeHandle );
* harbour/src/rtl/filesys.c
+ added protection against slow function interrupting by signals
in *nixes