* 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.
* contrib/hbmxml/3rd/minixml/mxml.hbp
* contrib/hbmxml/3rd/minixml/config.h
* Testing without HAVE_SNPRINTF/HAVE_VSNPRINTF in ANSI C89 mode.
* utils/hbmk2/hbmk2.prg
+ Added '-cflag+=' experimental option which works like
-cflag=, but it adds the custom flag _after_ C flags
added internally by hbmk2. This allows for some better fine
tuning (f.e. see rddads.hbp). Another possbility would
have been to move all user flags after internal ones,
but this could make it easy to break builds, and it
would also make cflags behave differently than the rest,
so I decided to add this new syntax.
+ Some step to support hbmk2 options to control C/C++ dialect.
% Minor optimization in formed C compiler and linker cmdlines.
* contrib/rddads/rddads.hbp
! Fixed gcc option to disable stupid warning caused
by sloppy #pragma usage in ACE header.
Also changed to use '-cflag+=' to make it work.
At last!
* hbbz2/3rd/bz2/bz2.hbp
* hbbz2/core.c
+ Build bz2 with BZ_NO_STDIO option. This will get rid of fileno()
call, so it becomes C89 compliant.
+ Added internal error handler required when BZ_NO_STDIO is used.
% Deleted -std=gnu89 override.
; Checkme.
* contrib/hbmxml/hbmxml.hbp
* contrib/hbmxml/3rd/minixml/mxml.hbp
* contrib/hbmxml/3rd/minixml/config.h
+ Disabled HAVE_STRDUP so now it's using its own implementation
and it's ANSI C89 compliant.
* utils/hbmk2/hbmk2.prg
! Fixed compiled resources not triggering rebuild of
target executable in incremental mode unless the resources
sources were also changed.
Thanks to Mindaugas for reporting it.
* utils/hbmk2/hbmk2.prg
+ new filter values: lngcpp and lngc. Can be used to
check forced C++/C mode.
* contrib/hbmzip/3rd/minizip/ioapi.h
* contrib/hbmzip/3rd/minizip/zip.h
* contrib/hbmzip/3rd/minizip/minizip.dif
! C++ -> ANSI C comments
* contrib/hbmzip/3rd/minizip/minizip.hbp
! Override c89 mode with gnu89. For f*64() functions.
* contrib/rddads/rddads.hbp
! Override c89 mode with gnu89. ADS headers need it.
* contrib/hbpre.hbm
+ Forcing c89 mode for GCC family compilers (in non C++ forced mode)
Results were pretty good and Harbour/3rd party code complies
very well.
* contrib/hbunix/hbunix.hbp
* contrib/hbcurl/hbcurl.hbm
* contrib/hbnetio/hbnetio.hbp
* contrib/gtwvg/gtwvg.hbp
* contrib/hbwin/hbwin.hbp
* contrib/hbsqlit3/hbsqlit3.hbp
* contrib/hbexpat/hbexpat.hbp
* contrib/hbmemio/hbmemio.hbp
- Deleted just added local c89 mode forcage. Now it's done global.
* contrib/hbqt/qtgui/hbqtgui.h
! Fixed HBQT_TYPE_QIcon redefinintion. Pls check, I didn't rebuild the
whole package after the mod.
* contrib/hbunix/hbunix.hbp
* contrib/hbcurl/hbcurl.hbm
* contrib/hbnetio/hbnetio.hbp
* contrib/hbnetio/hbnetio.hbx
* contrib/gtwvg/gtwvg.hbp
* contrib/hbwin/hbwin.hbp
* contrib/hbsqlit3/hbsqlit3.hbp
* contrib/hbexpat/hbexpat.hbp
+ Enabled -std=c89 option when building with any gcc compiler.
(TOFIX: now GTWVG breaks with error)
I mean this as an experiment which I'd like to extend
gradually to whole Harbour as it seems a good way to
ensure the code being truly ANSI C as we claim it. It
can certainly avoid a few unnecessary rounds with
committed code problems.
Now that there are multiple ANSI C standards we may
want to discuss which level we want to stick with
(C89/C90, C99, C1X) until then let's assume C89 even though
not all of Harbour code complies ATM. F.e.:
../../../hbprintf.c:543:4: warning: implicit declaration of function 'modfl'
../../../hbprintf.c:1146:25: warning: implicit declaration of function 'isfinite'
* contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.cpp
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp
* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
! Converted C++ style comments to ANSI C.
Even though it's C++ code it's good to stick with one
comment style (ANSI C) accross Harbour to avoid getting wrong customs.
Pls stick to it.
* contrib/hbxbp/xbpparthandler.prg
! Changed: ::_aOwned => ::a_Owned to not generate error when
class inheriting an XbpPart has a data member as ::aOwned.
* utils/hbmk2/hbmk2.prg
+ Added experimental feature to filter out libs from the lib lists:
-l-kernel32, libs=-kernel32
Harbour core libs cannot be disabled this way (except hbzlib and
hbpcre)
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.prg
* INSTALL
* Use 'please' more sparsingly. Use 'always' a bit more.
* config/lib.mk
* config/bin.mk
* config/dyn.mk
+ Added internal configuration '__HB_BUILD_NOSYSLIB=<lib1> [<lib2>]'
to delete items from default list of system libs used by
core build.
* harbour/config/linux/libs.mk
* harbour/config/android/libs.mk
* filter out libraries which does not exists in android inside
android not linux config files
* 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"
* ChangeLog
* Corrected some old text.
* config/wce/mingw.mk
* Fixed to include mingwarm.
Note however that x86 wce targets are extremely rare, so
it's unlikely that you need this.
* config/detect.mk
! Deleted OS X specific (MacPorts) autodetection location for pcre.
Now it's using locally hosted version.
This was the error without this:
---
libtool: can't locate file for: -lpcre
libtool: file: -lpcre is not an object file (not allowed in a library)
make[3]: *** [libharbour.2.1.0.dylib] Error 1
---
* 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
* contrib/hblzf/core.c
! Fixed AVOID_ERRNO usage.
* contrib/hblzf/3rd/liblzf/lzf.hbc
* contrib/hblzf/3rd/liblzf/lzf.hbp
+ Enabled AVOID_ERRNO for wce platform.
* INSTALL
+ Described known issue when doing partial rebuild in
contrib area for certain (f.e. wce) platforms where
hbmk2 autodetection lags behind core build autodetection.
* INSTALL
- Deleted HB_BUILD_WINUNI option. It's not documented
option anymore. Pls don't use it. Use UNICOWS solution
if you need Win9x/ME support. Pls also note that _building Harbour_
on Win9x/ME systems is deprecated (as it is only possible
to build Harbour in non-UNICODE version in such scenario).
* config/global.mk
- Deleted some built-in build names which only differed
in WINUNI setting.
* contrib/hbxbp/xbpfiledialog.prg
* contrib/hbxbp/tests/xbpqtc.prg
* contrib/hbxbp/xbpbrowse.prg
* contrib/hbxbp/xbpgeneric.prg
* contrib/hbqt/gtqtc/gtqtc.cpp
* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtcore/qth/HBQSlots.qth
* contrib/hbqt/qtcore/qth/HBQEvents.qth
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/tests/demoqt.prg
* contrib/hbide/hbqreportsmanager.prg
* contrib/hbide/idemain.prg
* contrib/hbide/ideeditor.prg
! HB_TR_ALWAYS -> HB_TR_DEBUG.
Neverending battle with abused debugging facilities continue.
Please _never_ use HB_TR_ALWAYS in committed code, not even
in commented lines because it's confusing, it trashes console
on *nix systems, it creates a rubbish/unfinished feel for
anyone trying out these components and it creates unnecessary
noise on lists in the form of problem reports.
For those few developers who actually need these lines:
_Set HB_TR_LEVEL on your development machine_ to HB_TR_DEBUG
to get those debug lines!!
Also: Never use HB_TR_ALWAYS as a mean of generating
test output meant for users, I've found some of these in
tests/ .prgs. Use something native instead, like
a text box, msgbox, log file, OutStd(), QOut(), etc.
If this won't change in the future, the best will be to
simply remove HB_TR_ALWAYS from hbtrace.ch, thus making
it unsuited for purposes it wasn't designed for.
Thank you.
* config/win/mingw.mk
+ Added commented -Wextra warning option which will be particularly
interesting with the release of gcc 4.6, since they've finally
implemented the last useful feature which was unique to BCC:
-Wunused-but-set-variable and -Wunused-but-set-parameter
See:
http://gcc.gnu.org/gcc-4.6/changes.html
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
! Adopted: to comply with latest hbXBP change where
oXbp:setStyleSheet() was made PROTECed method.
* include/hbstack.h
* include/hbapi.h
! Marked functions as HB_EXPORT (should be HB_EXPORT_INT in the future)
which are used by hbdebug lib. It caused link error when using
'-b -shared' hbmk2 options on non-mingw windows compilers:
hb_stackDebugInfo
hb_macroGetType
hb_macroGetValue
hb_memvarGetValueBySym
* 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.
* contrib/hbxbp/xbpfontdialog.prg
! Minor.
* contrib/hbxbp/xbpwindow.prg
! Protected: :setStyleSheet() method.
It was not Xbase++ compatible so to achieve exactly Xbase++
compatibility, this is necessary.
* contrib/hbxbp/xbpfontdialog.prg
* contrib/hbxbp/xbpmenubar.prg
* contrib/hbxbp/xbpstatic.prg
* contrib/hbxbp/xbpwindow.prg
! Restructured: Presentation Parameters engine.
Restored: CSS enabled presentation parameters management.
Perhaps this is the only way to handle many artifacts
cummulatively. The engine is enhanced to offer users as
Harbour extenstion, to enhance GUI components.
oXbp:setStyleSheet( cIdentifier, cCSS ) where
<cIdentifier> can be used to re-arrange widget attributes.
* contrib/hbxbp/tests/demoxbp.prg
! Commented-out but adopted to new protocol :setStyleSheet() calls.
* 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.
* contrib/hbxbp/xbppushbutton.prg
! Fixed: :activate was firing event twice, on press and release, both.
* contrib/hbxbp/xbpwindow.prg
! Fixed: to reset window size as per GUI norms. Xbase++ seems
wrong on this account where XbpDialog() height is "excluding"
window frame-height whereas width is "inclusing" frame-width.