* include/hbapifs.h
* src/common/hbfsapi.c
+ added automatic file handle table resizing to hb_fsOS2DosOpenL()
+ added new C function: hb_fsOS2DosOpen() which is wrapper to DosOpen()
with automatic file handle table resizing.
Please remember that unlike hb_fsOS2DosOpenL() this function is
pure wrapper to DosOpen() so it does not make file name conversions
and does not set hb_fsError().
* src/rtl/filesys.c
* src/rtl/hbcom.c
* src/rtl/hbproces.c
* use hb_fsOS2DosOpen() instead of DosOpen()
* src/vm/cmdarg.c
* set the initial size of file handle table to 256 in OS2 OpenWatcom
builds if user does not set it explicitly by //F:<n> switch
* config/global.mk
- removed set HARBOUR=F:100 - it's not necessary with automatic FHT
resizing
; Please test it in real OS2 environment
* *
% remove brandings and homepage [1] from copyright header. Pass 1 - using script.
[1] nobody has access to it anymore AFAIK - and it's also just
a redirect since long
! update url in copyright header
; this should make the diff between 3.4 and 3.2 easier to manage
* contrib/hbtip/encurlc.c
! fixed C&P typos in tip_URLEncode() and tip_URLDecode() in may
previous commit
* src/pp/ppcore.c
* pacified warning
* src/common/hbver.c
* src/rtl/hbsocket.c
* updated for Digital Mars C compilation
* include/hbsocket.h
* src/rtl/hbsockhb.c
+ added new C function:
HB_BOOL hb_sockexItemReplace( PHB_ITEM pItem, PHB_SOCKEX pSock );
* contrib/hbssl/ssl_sock.c
+ replace passed socket structure to hb_socketNewSSL_connect() and
hb_socketNewSSL_accept() with new one using SSL filter if it was
passed by reference, current syntax is:
hb_socketNewSSL_connect( [@]<pSocket>, <pSSL> [, <nTimeout> ] )
-> <pSocketSSL>
hb_socketNewSSL_accept( [@]<pSocket>, <pSSL> [, <nTimeout> ] )
-> <pSocketSSL>
* contrib/hbssl/hbssl.hbm
* contrib/hbssl/hbssl.hbx
+ contrib/hbssl/ssl_hbcon.prg
+ added new PRG functions which can be used for fast initialization of
SSL connection:
hb_SSL_new() -> <pSSL>
hb_SSL_connect_inet( <pSocket>, [ <nTimeOut> ], [ @<cInfo> ] )
-> <lConnected>
hb_SSL_connect_socket( <pSocket>, [ <nTimeOut> ], [ @<cInfo> ] )
-> <lConnected>
They do not need any addiitonal initialization code and can be called
as first and the only SSL functions in user code.
* contrib/hbtip/mail.prg
! fixed bug reported by Lorenzo - thanks
* use hb_MemoWrit() in :detachFile() to honor Harbour File IO API
* cleanup
* src/common/hbffind.c
* src/rtl/gtos2/gtos2.c
* src/rtl/hbproces.c
* cleaned DosAllocMem() flags
* src/common/hbfsapi.c
* src/rtl/hbproces.c
* pacified OS2 GCC warnings
* config/global.mk
* show information about HB_MT build parameter if set by user
* src/common/hbffind.c
+ added support for link attribute (HB_FA_LINK -> "L") passed to
Directory() and other functions using hb_fsFindFirst()/hb_fsFindNext()
When this attribute is passed then softlinks are presented "as is"
without following target.
* src/rtl/dirscan.prg
+ added new PRG function hb_DirRemoveAll( <cDir> ) -> <lResult>
BE CAREFUL! This function removed recursively whole directories
with it's body so hb_DirRemoveAll( hb_ps() ) can remove all
files and directories from your disk.
* src/nortl/nortl.c
+ added hb_fsSetError()
* include/hbapifs.h
* src/common/hbfsapi.c
+ added new C function for OS2 builds: hb_fsOS2QueryPathInfo()
Unlike DosQueryPathInfo() it uses dir entries so it does not need to
open the file what can create file sharing violation problem.
+ added new C function for OS2 builds: hb_isWSeB()
It returns true if OS2 version supports long file API
(IBM OS/2 Warp Server for e-Business)
+ added new C functions for OS2 builds:
hb_fsOS2DosOpenL(), hb_fsOS2DosSetFileLocksL(),
hb_fsOS2DosSetFilePtrL(), hb_fsOS2DosSetFileSizeL()
These are dynamically initialized wrappers to OS2 long file API
functions if such functions exists in given OS2 version.
* src/common/hbfsapi.c
* use hb_fsQueryPathInfo() in OS2 builds of hb_fsNameExists(),
hb_fsFileExists() and hb_fsDirExists()
* src/common/hbffind.c
+ added support for long files (longer then 4GB) in OS2 builds.
It also detects OS2 version to check if long file API is supported.
! fixed file error setting in OS2 builds
* src/rtl/filesys.c
* use hb_fsQueryPathInfo() in OS2 builds of hb_fsGetFileTime() and
hb_fsGetAttr()
* use hb_fsOS2*() functions for long files
* src/rtl/fssize.c
* use hb_fsQueryPathInfo() in OS2 builds of hb_fsFSize()
; please make real life tests in OS2
* src/common/hbprintf.c
* removed modfl() protection with old HB_OS_IPHONE macro.
If someone will need it for some old iOS versions then please read
it protected by HB_OS_IOS and __IPHONE_OS_VERSION_MIN_REQUIRED
macros or inform me about the exact iOS version which do not support
modfl() and I'll add it.
* include/hbatomic.h
* disable GCC atomic macros for GCC <= 4.5 in OS2 builds.
They can be manually enabled by users using:
set HB_USER_CFLAGS=-DHB_USE_GCCATOMIC
* include/hbsetup.h
* set HB_OS_IOS when __IPHONE_OS_VERSION_MIN_REQUIRED is defined
* include/hbsetup.h
* src/common/hbver.c
* detect 64bit ARM CPUs
* contrib/hbct/envparam.c
* contrib/hbnf/getenvrn.c
! disabled ENVPARAM() and FT_GETE() in iOS builds
+ added support for FT_GETE() in OS2 builds
* contrib/hbssl/tests/inetssl.prg
* contrib/rddads/ads1.c
* src/rtl/teditor.prg
* formatting of my recent modifications taken from Viktor's branch
* src/common/hbfsapi.c
* src/compiler/complex.c
* formatting
* include/hbset.h
* src/vm/set.c
* src/nortl/nortl.c
+ add new C functions to change HVM set values:
hb_setSetFileCase(), hb_setSetDirCase(), hb_setSetDirSeparator(),
hb_setSetTrimFileName()
* include/hbcomp.h
* include/hbcompdf.h
* src/compiler/cmdcheck.c
* src/compiler/hbmain.c
* src/compiler/ppcomp.c
* src/compiler/genc.c
* src/compiler/hbusage.c
* src/nortl/nortl.c
* rewritten code used to parse command line and environment parameters.
New code is covered by GPL + Harbour exception license.
All parameters are decoded by only one function and whole code is
smaller so it's much easier to modify this code.
! fixed some small bugs and incompatibilities with Cl*pper in parameter
parsing
! fixed -y undocumented (YYDEBUG) switch
- removed -x[<prefix>] set symbol init function name prefix (for .c only)
compiler command line switch
* moved -fn[:[l|u]|-] -fd[:[l|u]|-] -fp[:<char>] and -fs[-] switches
parsing to core compiler library. Now these switches are also works
with compiler library linked with HBMK2.
; TOFIX: HBMK2 ignores -fn/-fd switches and allocates temporary names
which are not compatible with names used later by harbour
compiler when above switches are activated. HBMK2 should
parse parameters and update SET FILECASE / SET DIRCASE before
it creates temporary files.
* include/hbcompdf.h
* include/hbexprb.c
* src/common/funcid.c
* src/vm/hvm.c
% optimize Array() function by replacing function call with HB_P_ARRAYDIM
PCODE. Because this optimization changes RTE and interacts with broken
code like
aVal := Array( 10, 0, "A" )
then it's not enabled by default. User can enable it by -ko switch.
* utils/hbtest/rt_array.prg
* use #pragma -ko- to for tests which interacts with above modification
* src/rtl/hbproces.c
% optimize memory allocation for redirected STDOUT and STDERR buffers in
hb_processRun() function.
The previous implementation was extremly inneficient when
hb_processRun() was used to extract very long output from
child process.
* src/rtl/hbtoken.c
+ added support for dividing text into lines using EOLs used by different
platform. To enable it it's enough to specify .T. as delimiter.
* src/rtl/filesys.c
* pacified MSVC warning - in fact this modification is significant only
for bugy code which changes current directory in MT programs. It's bug
on all platforms using current directory as process not thread
attribute (common behavior).
* include/inkey.ch
* src/rtl/hbgtcore.c
+ added new extended keycodes:
HB_K_TERMINATE
HB_K_MENU
* contrib/gtqtc/gtqtc1.cpp
+ center and rescale to console window dimension keeping aspect size ratio
picture passed to HB_GTI_DISPIMAGE when second parameter is .T.
+ added support for HB_K_MENU key
! fixed dynamic font size modification in fullscreen, maximized and
HB_GTI_RESIZEMODE_ROWS modes
* include/hbapi.h
* src/common/hbstr.c
+ added new function hb_strAtI() - it works like hb_strAt() but it
ignores the case of the ASCII characters
* src/rtl/ati.c
* renamed local static function hb_strAtI() to s_strAtI() to avoid
conflict with new public hb_strAtI() function.
* contrib/xhb/xhbat.c
- removed local static function hb_strAtI() - current public hb_strAtI()
is compatible with it.
* contrib/sddsqlt3/core.c
+ added new code to set column type giving the highest priority SQLITE3
declared column types.
Please test - I haven't made any.
! do not cast floating point values to integer
* contrib/hbwin/hbwin.hbx
* contrib/hbwin/win_prn2.c
! fixed win_printerGetDefault() in Win9x builds - fix and some
formatting and casting borrowed from Viktor's fork.
+ added new PRG function:
win_PrintDataRaw( <cPrinter>, <cData> [, <cDocName>] )
-> <nBytesPrinted>
It's similar to win_PrintFileRaw() but sends to given printer passed
in 2-nd parameter <cData> instead of file body.
On error it returns negative value.
* cleaned casting and minor formatting
* src/rtl/gtxwc/gtxwc.c
+ added support for HB_GTI_DISPIMAGE. It's slightly modified code sent
by Rolf to Harbour devel list. In comparison to original version it
supports <nDepth> as 4-th item of array with bitmap description to use
with some other GTs which can support different color depths or can
make conversion. It also supports bitmaps passed as strings.
% slightly improved HB_GFX_GETPIXEL
* src/common/hbdate.c
! fixed typo in hb_timeUTCOffset() - this code was used in POSIX
systems which do not support gmtime_r()/localtime_r() - many
thanks to Teo.
* src/debug/dbgentry.c
* src/debug/debugger.prg
* prepare the code to return error object when evaluated expression
fails as proposed by Teo. This functionality is not enabled yet.
I'm waiting for information about current public debugger API used
in 3-rd party projects before I decide to change it.
* src/common/hbfopen.c
* use _wfopen() instead of fopen() in MS-Windows UNICODE builds of
hb_fopen(). It means that now hb_fopen() makes exactly the same file
name conversions as hb_fs*() Harbour RTL functions, i.e. hb_fsOpen()
* contrib/hbmxml/core.c
! fixed unnecessary conversions to UTF8 used for file names passed
to hb_fopen()
* contrib/hbmzip/3rd/minizip/ioapi.c
* contrib/hbmzip/3rd/minizip/minizip.dif
! fixed wrongly used hb_fopen() instead of fopen() what caused double
file name conversions when 32-bit stdio API was used.
* src/common/hbfsapi.c
* src/rtl/filesys.c
* src/rtl/filebuf.c
* contrib/hbmzip/mzip.c
* contrib/xhb/filestat.c
! if available always use stat64() instead of stat() in *nixes builds.
On 32-bit platforms stat() fails for larger files (>2GB).
It should fix problem reported by Lorenzo.
* include/hbwince.h
- removed GetProcAddress() redefinition which forced ANSI
version not supported in recent Windows Mobile MSVC libraries
* include/hbwinuni.h
+ added new macros which hide differences between Windows systems
in GetProcAddress() usage: HB_WINAPI_GETPROCADDRESS() and
HB_WINAPI_GETPROCADDRESST()
The second one adds "W" or "A" suffix to function names.
- removed not longer used HB_WINAPI_FUNCTION_NAME() macro
* src/vm/dynlibhb.c
* updated hb_libSymAddr() to work with Unicode version of
GetProcAddress() in WinCE builds
* src/vm/maindllp/dllpcode.c
* updated hb_dllGetProcAddress() to work with Unicode version of
GetProcAddress() in WinCE builds
* contrib/hbwin/wapi_winbase.c
* updated WAPI_GetProcAddress() to work with Unicode version of
GetProcAddress() in WinCE builds
* src/common/hbdate.c
* src/common/hbver.c
* src/rtl/diskspac.c
* src/rtl/disksphb.c
* src/rtl/fslink.c
* src/rtl/gtwin/gtwin.c
* src/rtl/gtwvt/gtwvt.c
* src/vm/extrap.c
* contrib/gtwvg/gtwvgd.c
* contrib/gtwvg/wvgwin.c
* contrib/hbwin/axcore.c
* contrib/hbwin/mapi.c
* contrib/hbwin/wapi_shellapi.c
* contrib/hbwin/wapi_winbase.c
* contrib/hbwin/wapi_wingdi_font.c
* contrib/hbwin/win_prn2.c
* contrib/hbwin/win_prn3.c
* contrib/hbwin/win_rpc.c
* extras/gtwvw/gtwvwd.c
* use HB_WINAPI_GETPROCADDRESS*()
* contrib/hbct/ctnet.c
! fixed copy and past typo in previous commit
* src/rdd/hbsix/sxcompat.prg
! fixed sx_Compress() and sx_Decompress() used with arrays
; modifications below comes from Viktor fork:
* include/dbinfo.ch
* src/rdd/workarea.c
+ added support for new dbInfo() action: DBI_CODEPAGE
It returns Harbour CP used by current work area.
* src/common/expropt2.c
* change instruction order to protect against NULL references
if we ever add support for dummy lists
* src/common/hbver.c
! CLANG detection
* src/lang/l_fr.c
* src/lang/l_hu.c
* updated translations
* src/rtl/cdpapihb.c
* include/harbour.hbx
+ added function hb_cdpExists( <cCDP> ) -> <lExists>
it returns .T. if the passed codepage is supported
and linked, .F. otherwise
* src/rtl/hbrand.c
* include/harbour.hbx
+ added hb_randStr( <nLen> ) -> <cBytes> which returns a strong
random stream of bytes of requested length
* src/vm/hashfunc.c
* include/harbour.hbx
+ New hash function to easily check for the existence
of a key and at the same time retrieving its corresponding
value:
hb_HGetRef( <hHash>, <xKey>[, <@xValue> ] ) -> <lFound>
If the key is not found, <xValue> is also reset to NIL.
Useful to replace hb_HPos()/hb_HValueAt() call pairs and
associated temp variable, or to avoid multiple hash lookups
for the cost of one temp variable.
* src/rtl/copyfile.c
% use 64KB buffer
* src/rtl/tget.prg
! Get():Insert()/Get():OverStrike() GET freeze fix reworked
using better solution by Heinz.
* src/rtl/tgetlist.prg
* src/rtl/tmenuitm.prg
* src/rtl/tmenusys.prg
* src/rtl/tpopup.prg
! fixed to precisely verify against multiple expected class names
previously a custom class named f.e. 'LIST' was accepted in some
places for LISTBOX
! fixed TOFIX where CP/encoding dependent string was
used to determine whether a menu item is separator
throughout the lifetime of the menu.
* src/common/hbdate.c
* src/common/hbprintf.c
* src/common/hbtrace.c
* src/common/hbver.c
* src/compiler/compi18n.c
* src/compiler/genc.c
* src/compiler/gencc.c
* src/compiler/hbusage.c
* src/debug/dbgthsh.prg
* src/debug/dbgtmenu.prg
* src/debug/debugger.prg
* src/debug/tbrwtext.prg
* src/pp/hbpp.c
* src/rdd/dbfcdx/dbfcdx1.c
* src/rdd/dbfuncs.prg
* src/rdd/dbtotal.prg
* src/rdd/hbsix/sxcompat.prg
* src/rdd/hbsix/sxini.prg
* src/rdd/usrrdd/rdds/arrayrdd.prg
* src/rdd/usrrdd/rdds/hscdx.prg
* src/rtl/adir.prg
* src/rtl/arc4.c
* src/rtl/cdpdet.prg
* src/rtl/dbedit.prg
* src/rtl/dircmd.prg
* src/rtl/diskspac.c
* src/rtl/disksphb.c
* src/rtl/errint.c
* src/rtl/errintlo.c
* src/rtl/errsys.prg
* src/rtl/filesys.c
* src/rtl/fslink.c
* src/rtl/gtkbstat.c
* src/rtl/gtwin/gtwin.c
* src/rtl/gtwvt/gtwvt.c
* src/rtl/hbbffnc.c
* src/rtl/hbi18n1.c
* src/rtl/hbi18n2.prg
* src/rtl/hbini.prg
* src/rtl/hbjson.c
* src/rtl/listbox.prg
* src/rtl/menusys.prg
* src/rtl/mtran.c
* src/rtl/radiogrp.prg
* src/rtl/tgetlist.prg
* src/rtl/tmenusys.prg
* src/rtl/tobject.prg
* src/rtl/tpersist.prg
* src/rtl/tpopup.prg
* src/rtl/tpopuphb.prg
* src/rtl/treport.prg
* src/rtl/tscalar.prg
* src/rtl/ttopbar.prg
* src/rtl/tget.prg
* src/rtl/tlabel.prg
* src/rtl/tmenuitm.prg
* src/rtl/valtoexp.prg
* src/rtl/valtype.c
* src/vm/dlmalloc.c
* src/vm/fm.c
! check module handle returned by GetModuleHandle() in MS-Windows
builds
! use %u for unsigned printf formatting
* casting, formatting, casing and some modifications in names
* use #if 0 / #endif to mark commented blocks
* updated year to 2014
% use FOR EACH, SWITCH, DO CASE statements
% use :__enumFirst() / :__enumLast()
% eliminated some local variables and redundant declarations
% use hb_defaultValue()
% use $ operator instead of At() and hb_HHasKey()
% use hb_ADel() instead of ADel()+ASize()
* replace some functions with procedures
* pacified some MSC warnings
* use hb_StrFormat() for user messages
* use :: instead of Self:
* use ANSI date delimiters
* include/Makefile
+ include/hbzlib.h
* include/hbzlib.ch
* src/rtl/Makefile
* src/rtl/hbzlib.c
+ added new C functions weakly bound with ZLIB library:
HB_SIZE hb_zlibCompressBound( HB_SIZE nLen );
HB_SIZE hb_zlibUncompressedSize( const char * pSrc, HB_SIZE nLen,
int * piResult );
int hb_zlibCompress( char * pDst, HB_SIZE * pnDst,
const char * pSrc, HB_SIZE nLen, int iLevel );
int hb_zlibUncompress( char * pDst, HB_SIZE * pnDst,
const char * pSrc, HB_SIZE nLen );
these functions can be used by any C code without forcing ZLIB liking.
If user usese in his code HB_ZCOMPRESS() function or has
REQUEST HB_ZCOMPRESS
then above funcitons are automatically bound with linked ZLIB library.
Otherwise they return 0 or HB_ZLIB_RES_UNSUPPORTED error.
* src/rdd/dbf1.c
* small code simplification
; added note about alternative numeric value rounding when
pure binary integer fields (without decimal places) are
assigned.
* src/common/hbdate.c
! added missing header for WinCE builds
* include/hbexpra.c
* minor simplification
* src/vm/macro.c
+ added new implementation for MemVarBlock() function. It's much faster
and does not force dynamic symbol table scanning on each call
* src/rtl/Makefile
- src/rtl/memvarbl.prg
- removed previous implementation of MemVarBlock()
* src/rtl/tgetint.prg
! fixed __Get() and __GetA() to return NIL when cVarName parameter
is not string (CA-Cl*pper compatible)
! fixed __GetA() to return NIL when given aIndex parameter or value
returned by variable block is not array (CA-Cl*pper compatible)
! fixed __Get() and __GetA() to use FieldWBlock() instead of manually
created macro block which didn't respect workarea
(CA-Cl*pper compatible)
! fixed __GetA() to create SET/GET block instead of access block
(CA-Cl*pper compatible)
! fixed __Get() and __GetA() to not create simple SET/GET macro
blocks but always force memvar usage (CA-Cl*pper compatible).
Please remember that
&( "DATA" )
gives code which tries to access field then memvar but
&( "DATA := .T." )
gives code which always tries to assign memvar and does not even
check if "DATA" field exists in current WA. It means that macro
compiled code like:
&( "{|_1| iif( _1 == NIL, DATA, DATA := _1 ) }" )
should not be used because gives higher priority for fields in
access operation and always assigns memvars, if necessary creating
them.
! allow to dynamically create memvars for get objects in error handler
(CA-Cl*pper compatible)
% use much faster MemVarBlock() instead of manually created codeblock
which activates dynamic symbol table scanning on each call
* src/common/strwild.c
! fixed hb_strMatchFile() (C) and hb_fileMatch() (PRG) to respect
. and .* used at the end of pattern just like system does
(or at least should, tests with more complicated wildcard expressions
in my Windows7 exploit bugs in system wildcards interpretation)
* src/common/hbdate.c
+ added support for decooding timestamp values with semicolon ";" used
as date and time part delimiters, i.e.:
tValue := t"2013-11-06;15:14:45"
* contrib/hbct/getsecrt.prg
! applied Clipper compatibility fix to GetSecret() by Pavel Tsarenko
* src/common/hbdate.c
* removed explicit _BSD_SOURCE definition - it was confusing our
code used to detect localtime_r() support and is not necessary
if we do not use extended fields of tm structure
* src/rtl/mtran.c
* updated to show strict Clipper compatible behavior - Clipper
ignores 3-rd cSoftCR parameter if 2-nd one cHardCR is not given
(strict compatibility is covered by HB_CLP_STRICT macro and
disabled by default - undocumented feature which may confuse
users)
% minor optimization
* include/hbdate.h
* src/common/hbdate.c
+ added new C functions:
double hb_timeLocalToUTC( double dTimeStamp );
long hb_timeStampUTCOffset( int iYear, int iMonth, int iDay,
int iHour, int iMinutes, int iSeconds );
; warning: some C RTLs may not correctly detect Summer time for all past
dates in few countries.
* include/harbour.hbx
* src/rtl/dateshb.c
+ added new PRG function:
hb_TSToUTC( <tsLocal> ) -> <tsUTC>
+ added support for optional timestamp parameter in hb_UTCOffset()
function, current syntax is:
hb_UTCOffset( [ <tsLocal> ] ) -> <nSeconds>
* contrib/hbtip/hbtip.hbx
* contrib/hbtip/utils.c
+ added new PRG function:
tip_FileNameMimeType( <cFileName> ) -> <cMimeType>
It's a wrapper to old C function s_findFileMimeType()
TODO: replace few independent mimetype functions by single one.
! fixed tip_FileMimeType() to not call hb_fsClose() or any other FS
function with wrong handler.
! fixed tip_TimeStamp() using hb_timeStampUTCOffset() instead of
hb_timeUTCOffset() to correctly calculate UTC offset for dates
different then current one.
! decode time passed as numeric second() value in 2-nd parameter of
tip_TimeStamp() only when the 1-st one contains pure date value.
* utils/hbmk2/hbmk2.prg
! fixed to suppress remaining remaining double outputs at
startup in hbrun mode, when processing .hbc files
* contrib/hbexpat/hbexpat.hbc
! added usage time detection of locally hosted 3rd party
dependency to avoid warnings when the locally hosted
dependency is not present (f.e. because the system
hosted copy was used at build/install time)
Experimental. If it works fine, should be applied to
other similar contribs:
hbbz2, hbhpdf, hblzf, hbmlzo, hbmxml, hbmzip, hbsqlit3, hbtinymt, hbxdiff, sddsqlt3
* README.md
* typographic and misc improvements
* config/global.mk
+ detect qnx cross-compile tool (via Francesco Perillo)
* include/hbsetup.h
* src/common/hbtrace.c
+ added macro HB_OS_QNX_BB10 for BlackBerry 10 subplatform
+ guard some stuff that's not present in BB10 (via Francesco Perillo)
* contrib/hbtinymt/3rd/tinymt/tinymt.hbc
! deleted $Id$
* (all files)
* stripped svn header
* minor cleanups
; use following command to find out the history of files:
git log
git log --follow
git blame
git annotate