* 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.
* src/rtl/Makefile
* src/rtl/tpopup.prg
+ Replaced last remaining HB_EXTENSION build-time conditional
branch in Harbour codebase with runtime solution. (similar to
GET vs. HB_GET)
; IMPORTANT: If you had so far built Harbour with HB_USER_PRGFLAGS=-DHB_EXTENSION
to use TPOPUP class extensions: :shadowed, :setCoors(), :isShortCut(), :isQuick(),
switch your app to use HB_POPUPMENU() (from POPUPMENU()). This in practice
will mean to use this code:
PopUp( nTop, nLeft, nBottom, nRight )
to this:
hb_PopUpMenu():New( nTop, nLeft, nBottom, nRight )
Then delete your custom HB_USER_PRGFLAGS (or use nightly binary)
[pls make tests, I don't have test code for POPUP(). ]
* src/rtl/gtwvt/gtwvt.c
! put back CS_HREDRAW | CS_VREDRAW
apparently needed for HB_GTI_RESIZEMODE_FONT. Thanks Pritpal.
* use XP double buffering on Vista and upper systems only (was: all).
This is not based on hard scientific data at this time, some users
reported "slowness" on certain XP systems. It doesn't seem to be
tied to any particular video chipset (or driver), exact reason
still uncertain (other software? GPO setting? SP level?).
I cannot find evidence for general WS_EX_COMPOSITED related problem
on the internet.
So we're back to *fugly* screen updates on XP and lower systems, this
means that visible lag will be seen when drawing text with changing
colors in them (f.e. menubar with hotkey).
If you know better, speak up.
* contrib/hbqt/hbmk2_qt.hbs
! fixed typo in one HB_WITH_QT envvar reference (Thanks Francesco)
+ accept HB_QTPATH with or without ending dirsep
! use host exe extension when looking for qt tools
+ use win/os2 specific autodetection logic based on host OS, rather
than target OS, thus helping QT in cross-builds, like droid.
And now let the avalanche of crap follow.
- doc/howtobld.txt
- outdated, deleted
* doc/howtosvn.txt
* minor update
* src/rtl/gtwvt/gtwvt.c
! Fixed HB_GTI_ICONFILE not working with "certain" .ico files.
* contrib/hbqt/hbqt_common.hbc
+ added libpath for beos [Tamasz Tevesz]
* INSTALL
+ Added TROUBLESHOOTING/9.: how to submit logs to dev list.
Please read it.
* src/rtl/diskspac.c
* src/rtl/disksphb.c
! Fixed possible MT race condition in DISKSPACE()/HB_DISKSPACE()
where no value could be returned.
* src/rtl/gtwvt/gtwvt.c
* Changed to use WS_EX_COMPOSITED instead of WS_EX_LAYERED.
This works on XP and above (previous one also worked on W2K),
and I mean this as another round of live testing, as WS_EX_LAYERED
turned out to be causing strange flickers (maybe hardware
induced, I don't know) on some non-virtualized/non-remote
OS installations. Maybe this will work better. If not, even
this will be deleted. Then maybe software/DC double-buffering
will be the ultimate soltion.
% Dropped fiddling with SetLayeredWindowAttributes() call.
* Formatting.
* contrib/make.hbs
+ Added 'verbose' keyword. Equivalent to HB_BUILD_VERBOSE=yes.
+ Added 'rebuild' keyword. (Equivalent to 'clean all')
* contrib/3rd/sqlite3/sqlite3.hbp
! Added workaround for gcc/mingw bug in 4.5.0 and 4.5.1
revisions where it shows compile error when iso89 c dialect
is selected. Now in 4.5.x gnu89 is used instead to avoid it.
* contrib/hbplist
- Disabled gtwvg due to build breakage.
* 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]
* contrib/hbmxml/3rd/minixml/mxml.hbp
* contrib/hbmxml/3rd/minixml/mxml_str.c
! Fixed isdigit() warning which was result of missing
mxml header. [Tamas Tevesz]
+ contrib/hbcurl/hbcurlt1.ch
+ contrib/hbcurl/core_t1.c
+ Implemented new way of using HB_CURLOPT_HTTPPOST, now
all meaningful values are supported in any order and
combination. See:
http://curl.haxx.se/libcurl/c/curl_formadd.html
The patch is heavily based on patch/implementation submitted
by Benjamin Jacobs, many thanks for it. Final patch
includes some rework, simplification, compile and
other fixes, plus formatting with uncrustify. Please
make sure to test/review this version as I didn't do
any functional tests, just build ones.
Sample code:
curl_easy_setopt( curl, HB_CURLOPT_HTTPPOST, { ;
{ HB_CURLFORM_COPYNAME, "nparam1", ;
HB_CURLFORM_COPYCONTENTS, "value1" }, ;
{ HB_CURLFORM_COPYNAME, "nparam2", ;
HB_CURLFORM_COPYCONTENTS, "value" }, ;
{ HB_CURLFORM_COPYNAME, "fileparam", ;
HB_CURLFORM_FILE, filename } } )
WARNING: This implementation is INCOMPATIBLE with the
previous one.
TOFIX: Current implementation does allow to create GPFs because
it allows .prg code manually pass buffer sizes. This must
be fixed and buffer length should always be automatically
taken from Harbour item. This will require more sophisticated
code to build the low-level array (f.e. size calculation).
Benjamin, can you look at it?
NOTE: I'm uploading this unfinished code as new temp files,
because SVN doesn't support light branching, so this poor man's
solution is left to manage it.
* src/common/hbtrace.c
* contrib/xhb/hbsyslog.c
- Deleted Android specific logging. syslog works good.
+ config/android
+ config/android/libs.mk
+ config/android/gcc.mk
+ config/android/gccarm.mk
+ config/android/global.mk
+ config/android/mingw.mk
+ Added android specific core build files. They are
all redirected to linux.
* config/linux/libs.mk
+ Do not add rt and pthreads libs for android targets.
* 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
* harbour/include/hbapifs.h
* harbour/src/rtl/filesys.c
+ added new C functions:
HB_BOOL hb_fsPipeCreate( HB_FHANDLE hPipe[ 2 ] );
HB_SIZE hb_fsPipeIsData( HB_FHANDLE hPipeHandle, HB_SIZE nBufferSize,
HB_MAXINT nTimeOut );
HB_SIZE hb_fsPipeRead( HB_FHANDLE hPipeHandle,
void * buffer, HB_SIZE nSize,
HB_MAXINT nTimeOut );
* harbour/src/rtl/philes.c
+ added new PRG function:
HB_PREAD( <nPipeHandle>, <@cBuffer>, [<nBytes>], [<nTimeOut>] )
-> <nBytesRead>
It can be used for unblocking read from pipes, i.e. using handles
returned by hb_processOpen() function.
<nPipeHandle> is pipe read handle
<cBuffer> is string variable passed by reference with read buffer
<nBytes> is maximum number of bytes which can be read
<nTimeOut> is timeout in milliseconds to wait for data to read,
this function returns when at least one byte can be read
<nBytesRead> is number of bytes read from the pipe,
on error this function return -1.
* harbour/src/rtl/hbproces.c
+ add new implementation of hb_fsProcessValue() and hb_fsProcessClose()
for OS2 which uses OS2 API
* use hb_fsPipeCreate()
* harbour/src/rtl/hbjson.c
* minor code reorganization to cleanup warning
* src/common/hbtrace.c
* contrib/xhb/hbsyslog.c
+ Added Android specific logging support. Untested.
* contrib/xhb/hbsyslog.c
! Disabled syslog() call for Symbian.
* include/hbsetup.h
+ Added Android OS platform detection. Untested.
* utils/hbmk2/hbmk2.prg
% Disabled some very old HB_INSTALL_PREFIX autodetection logic,
which supports some obsolete looking scenarios when hbmk2 executable
is not in standard location. Rest of logic and failure detection
rearranged accordingly. After this step hbmk2 no more requires
harbour executable to be present next to it.
IMPORTANT: This is live testing, pls report any problems.
* include/hbapi.h
* include/harbour.hbx
* src/common/hbver.c
* src/rtl/version.c
+ added hb_verHostBitWidth( void ) -> int which retrieves bit width of host OS
+ added HB_OSBITWIDTH() -> <nBits>
; It will currently work on win platform, falling back to target arch bits
for others. Pls extend it for *nixes. For MS-DOS, 32 will be returned with
both currently supported compilers.
* harbour/src/vm/thread.c
* renamed hb_criticalCode() to hb_mutexEval()
* harbour/src/rtl/cdpapi.c
* added HB_CODEPAGE_ANNOUNCE( UTF8 ) so user can use
REQUEST HB_CODEPAGE_UTF8
in PRG code.
* harbour/tests/big5_gen.prg
; added note about characters mapped to U+FFFD REPLACEMENT CHARACTER
in BIG5.TXT and iconv mapping for the same characters.
* harbour/src/vm/thread.c
+ added new function:
hb_criticalCode( <pMtx>, <bCode> | <@sFunc()> ) -> <xCodeResult>
it executes <bCode> or @sFunc() when <pMtx> is locked by this function.
! fixed hb_mutexQueueInfo() to not overwrite RTE subst value.
This function may only return .T. or generate RTE so the logical
return value is useless. I think that it should be removed and this
function should simply return NIL.
* updated syntax of PRG functions
* harbour/src/rtl/cdpapi.c
! fixed U+0000 conversion - it should not be converted.
* harbour/src/rtl/hbjson.c
! fixed decoding unicode value from strings with \uHHHH
! fixed to use hb_cdpU16ToStr() instead of hb_cdpGetChar()
which cannot be used with CPs using multibyte encoding.
* harbour/ChangeLog
! fixed typos in my previos ChangeLog entry
(I should try to read such things at least once before I'll commit)
; TOFIX: contrib/hbexpat/internal.c: uses hb_cdpGetU16() which cannot
be used with CPs using multibyte encoding.
* harbour/include/hbapicdp.h
* harbour/include/hbcdpreg.h
* harbour/src/rtl/cdpapi.c
* harbour/src/rtl/cdpapihb.c
+ added support for user defined character encoding.
Now it's possible to easy create and register in HVM CPs using any
encoding so I expected that users interested in adding support for
some exotic character encoding will create such mapping instead
of asking for it.
% moved support for codepages using multibyte characters mapped to
single unicode values to user defined encoding - it nicely simplify
the code and eliminate unnecessary overhead in other CPs.
* allow to chose UTF8 as HVM CP
* harbour/src/rtl/idle.c
! fixed idle mode flag resetting
* harbour/src/rdd/hbsix/sxutil.c
! fixed SX_SLIMFAST() results when nested quoting with (") and (') is
used
+ harbour/tests/big5_gen.prg
+ added code to generate C source with conversion tables between
BIG5 and UCS16 using data defined by Unicode, Inc. in BIG5.TXT
+ harbour/src/codepage/cp_utf8.c
+ added alternative UTF8 Harbour CP (UTF8ASC) as an example Harbour
user defined codapged using multibyte character encoding
* harbour/src/codepage/Makefile
+ harbour/src/codepage/cp_u16le.c
+ added Harbour codepage using UTF16 little endian encoding
* harbour/src/codepage/Makefile
+ harbour/src/codepage/big5.c
+ harbour/src/codepage/cp_big5.c
+ added BIG5 Harbour CP. It can be used with programs using Harbour
STR API with automatic translations.
; This CP needs really big translation tables. I added code which
makes some very simple compression which reduced raw size from
176100 bytes to 77354 but it's still large 77KB so maybe we should
think about moving this CP to other Harbour codpage library which
is not part of harbour shared library harbour*{.dll|.so|.dyn|...}
Alternatively I can try to reduce static size to about 30KB and
then build necessary tables dynamically at runtime when they are
used first time though in such case I will need additional 177KB
of dynamic memory instead of 77KB of static memory used by current
code.
* src/rtl/fstemp.c
! hb_fsTempDir(): due to misplaced else branche it returned
'./' on *nix systems when temp dir ended with pathsep,
for the same reason it return empty string instead of './'
if temp dir could not be determined.
; Please check me.
* src/rtl/gtxwc/gtxwc.c
% undone small optimization in 2011-04-04 10:48 UTC+0200 Przemyslaw Czerpak
because it caused random app stalls where the app would only
continue if some input events were manually made. Cursor
blinking also only happened on input events.
I've seen this issue on Ubuntu 10.10 and latest OS X.
After this patch, it works OK again.
Przemek, please review this patch, most probably there is
a solution which keeps the optimization and avoids this problem.
* harbour/src/common/hbdate.c
! Fixed OS/2 compilation, it was not using gettimeofday() and so
hb_dateMilliSeconds() had a one second resolution effectively
killing thread switching.
* harbour/src/vm/hvm.c
* extended item references created by hb_vmPushItemRef() so they
can be used to create reference chain and detached in executed
PRG code. Such reference chain is cleanly break when original
reference item is removed from HVM stack.
* harbour/src/rtl/gtxwc/gtxwc.c
% small optimization
! added hack for multiple window resizing when user executes
series of setmode() function. I'll look for cleaner solution
in some spare time.
* harbour/src/vm/itemapi.c
! fixed compilation in MT mode with some C compilers using
HB_STACK_TLS_PRELOAD
* updated also hb_itemParamStore() function to set NIL to item passed
by reference when is called with NULL pItem parameter.
* harbour/src/vm/itemapi.c
* set NIL to item passed by reference when hb_itemParamStoreForward()
or hb_itemParamStoreRelease() is called with NULL pItem parameter.
* harbour/contrib/hbnetio/netiosrv.c
! fixed possible memory leak when
NETIO_SRVSTATUS( ..., NETIO_SRVINFO_PEERADDRESS, ... )
is called without 3-rd parameter passed by reference
* harbour/examples/gtwvw/gtwvw.c
* replaced repeated TONE code with hb_gt_winapi_tone()
+ added MOUSE_GETPOS() method
* harbour/examples/gtwvw/wvwtbar.c
! fixed to compile with Harbour
* src/rtl/gtwin/gtwin.c
% Replaced kbd modifier readout with a more efficient
version. It contains hack required to make core
low-level function to work correctly with win consoles.
Patch co-developed with Przemek.
* contrib/hbtip/sendmail.prg
! Implemented fix to enclose attachment filenames in
dbl quotes as suggested by George Frehner.
Pls test.
* contrib/hbtip/mail.prg
* Formatting.
* src/rtl/gtwin/gtwin.c
- Fully disabled palette setting feature due to bad side effects
reported by Mindaugas.
Maybe it could be reenabled in some cases, pls refine it if you
need this feature. Pls also retest, I have a hard time replicating
this side-effect on my system.
* INSTALL
* Updated. mingw tdm 4.5.2 works fine again.
* examples/hbdoc2/gentpl.prg
! Fixed typo reported on users' list by Emmer.
* harbour/src/rtl/hbznet.c
% use Z_PARTIAL_FLUSH instead of Z_SYNC_FLUSH in hb_znetFlush()
It should reduce a little bit the size of compressed data stream.
* harbour/include/hbapi.h
* harbour/src/rtl/hbrandom.c
added new C functions which fills memory block with random values:
void hb_random_block( void * data, HB_SIZE len )
this function should be used with "good enough" random generator
so in the future it may be changed to use internally sth different
then rand().
* harbour/src/vm/thread.c
* pacified minor warning
* harbour/src/rtl/hbproces.c
! fixed one HB_TRUE wrongly used instead of TRUE
* minor simplification
* harbour/include/hbgtinfo.ch
* harbour/src/rtl/hbgtcore.c
+ added HB_GTI_VERSION - it returns version information just like
hb_gtVersion() - usually the same but can be different in some
multilevel GTs, i.e. when different GT drivers are used locally
and remotely.
* harbour/include/inkey.ch
* harbour/src/rtl/hbgtcore.c
+ added HB_K_CONNECT and HB_K_DISCONNECT inkey codes.
They can be used to signal that remote terminal is connected or
diconnected.
* harbour/tests/gtkeys.prg
+ added HB_K_* keycodes
* harbour/contrib/hbnetio/netiosrv.c
* removed unnecessary casting
* harbour/src/rtl/filesys.c
! added protection for potentially unfinished due to signal
interrupt close() operation in *nix systems in hb_fsClose()
function
* use hb_fsClose() instead of close() to be sure that the operation
is completed in *nix systems
* return NULL for DosToWinHandle( FS_ERROR )
; TODO: add protection against signal interrupting to all hb_fs*()
functions which may need it.
* harbour/src/rtl/hbproces.c
* use hb_fsClose() instead of close() to be sure that the operation
is completed in *nix systems
! Do not inherit ends of pipe handles in MS-Windows builds of
hb_fsProcessOpen()
! Added missing CloseHandle( hProcess ) in MS-Windows builds of
hb_fsProcessRun()
; QUESTION: Does hb_fsProcessRun() work correctly in MS-Windows builds?
I've just noticed that I used WaitForMultipleObjects()
WIN API function with unnamed pipe handles and I cannot
find any information in MSDN that this is legal operation.