* contrib/hbexpat/hbexpat.ch
+ added constants for attr array element positions
* contrib/hbexpat/tests/test.prg
* contrib/hbexpat/tests/tohash.prg
+ using them
* contrib/hbmxml/3rd/minixml/mxml.hbp
* contrib/hbmzip/hbmzip.hbp
* C std-level related tweaks [Tamas Tevesz]
* contrib/hbmxml/3rd/minixml/config.h
! yet another bcc problem. my last after the last.
anyone to pick up fixing bcc bugs?
* config/detect.mk
- exclude slang/curses/x11 for android
* contrib/hbct/strdiff.c
* contrib/hbct/dattime3.c
* uncrustified
* contrib/hbct/misc2.c
* contrib/hbct/token1.c
* contrib/hbct/print.c
* formatted
* 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.
* 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!
* 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.
* contrib/hbqt/hbmk2_qt.hbs
% Deleted now unnecessary .prg wrapper generation logic.
* Moved .qth processing to "pre_c" phase.
! Deleted HB_FUNC_EXTERN for constructor now declared locally.
! Added constructor to symbol table.
* contrib/3rd/sqlite3/sqlite3.hbp
* contrib/hbbz2/3rd/bz2/bz2.hbp
* contrib/hbexpat/3rd/expat/expat.hbp
* contrib/hbhpdf/3rd/libhpdf/libhpdf.hbp
* contrib/hblzf/3rd/liblzf/lzf.hbp
* contrib/hbmlzo/3rd/minilzo/minilzo.hbp
* contrib/hbmzip/3rd/minizip/minizip.hbp
* contrib/hbmxml/3rd/minixml/mxml.hbp
* contrib/hbxdiff/3rd/libxdiff/xdiff.hbp
+ Added -pic option to 3rd party libs. This switch will
make them use -pic when creating their static libs,
which allows to link them to contrib dynlibs when
using HB_BUILD_CONTRIB_DYN=yes.
* contrib/hbwin/tests/dlg.prg
* Minor formatting.
* contrib/hbmxml/3rd/minixml/mxml.hbp
* contrib/3rd/sqlite3/sqlite3.hbp
* contrib/hbmzip/3rd/minizip/minizip.hbp
* contrib/hblzf/3rd/liblzf/lzf.hbp
* contrib/hbxdiff/3rd/libxdiff/xdiff.hbp
* contrib/hbexpat/3rd/expat/expat.hbp
* contrib/hbbz2/3rd/bz2/bz2.hbp
* contrib/hbhpdf/3rd/libhpdf/libhpdf.hbp
! Do not create dynamic version of 3rd party dependencies hosted
locally. It should fix some problems on *nix builds with
HB_BUILD_CONTRIB_DYN=yes.
* contrib/hbrun/hbrun.hbp
+ -o option.
* utils/hbmk2/hbmk2.prg
+ Added dynlib dir + prefix to --hbinfo output.
* examples/gtwvw/wvwfuncs.c
* Renamed WIN_RECTANGLE() to WVW_RECTANGLE()
* Renamed WIN_SETBKMODE() to WVW_SETBKMODE()
- Deleted WIN_LOWORD()
- Deleted WIN_HIWORD()
; INCOMPATIBILITY: If you used WIN_RECTANGLE() or WIN_SETBKMODE()
specifically from GTWVW, change these calls to
the neww WVW_*() versions.
If you used WIN_LOWORD() or WIN_HIWORD(),
link hbwin lib (hbwin.hbc) to your app.
* contrib/*/*.hbx
* Regenerated.
- contrib/hbct/ctextern.prg
* contrib/hbct/hbct.hbp
- contrib/hbxbp/hbxbpext.prg
* contrib/hbxbp/hbxbp.hbp
- contrib/hbwin/hbwinext.prg
* contrib/hbwin/hbwin.hbp
* contrib/hbqt/qtgui/hbqtgui.hbm
- contrib/hbqt/qtgui/hbqt_extern.prg
* contrib/hbqt/qtwebkit/hbqtwebkit.hbm
- contrib/hbqt/qtwebkit/hbqt_extern.prg
- contrib/hbqt/qtcore/hbqt_extern.prg
* contrib/hbqt/qtcore/hbqtcore.hbm
- contrib/hbqt/qtnetwork/hbqt_extern.prg
* contrib/hbqt/qtnetwork/hbqtnetwork.hbm
- contrib/hbqt/qtuitools/hbqt_extern.prg
* contrib/hbqt/qtuitools/hbqtuitools.hbm
- contrib/hbqt/qscintilla/hbqt_extern.prg
* contrib/hbqt/qscintilla/hbqscintilla.hbm
- contrib/hbqt/qtdesigner/hbqt_extern.prg
* contrib/hbqt/qtdesigner/hbqtdesigner.hbm
- contrib/rddads/adsextrn.prg
* contrib/rddads/rddads.hbp
- contrib/hbgd/gdextern.prg
* contrib/hbgd/hbgd.hbp
% Deleted separate puller modules and added .hbx to the project directly.
; TODO: Some wrapper projects have the name already used for .c files,
so .hbx cannot be directly included ATM.
; TODO: Move -D__HBEXTREQ__ to local .hbp files so they kick in in stdalone mode too.
Or maybe hbmk2 should always define it, if there is an .hbx file included
in a project, after all it can generate these .hbx files, too.
* contrib/hbmxml/hbmxmlx.prg
* contrib/hblzf/hblzfx.prg
* contrib/hbxdiff/hbxdiffx.prg
* contrib/hbexpat/hbexpatx.prg
% Deleted some lines no more necessary.
* contrib/xhb/xhb.hbp
* contrib/hbxpp/hbxpp.hbp
+ Added .hbx puller to projects.
* utils/hbmk2/hbmk2.prg
! Minor typo in help text.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.es_PE.po
+ Updated from source.
* contrib/hbmxml/tests/rem.xml
* contrib/hbmxml/tests/rem_err.xml
! Added missing EOL @ EOF.
* contrib/hbunix/hbposix.h
+ Added generic macro to accept both logical and numeric type for
boolean-like input parameters.
* contrib/hbunix/tests/testdmn.prg
* contrib/hbunix/daemon.c
+ UNIX_DAEMON(): Changed to accept numeric value for logical parameters.
+ UNIX_DAEMON(): Changed to return numeric value.
; Patch by Tamas.
+ contrib/hbposix/tests/testdmn.prg
* contrib/hbposix/hbposix.hbp
+ contrib/hbposix/daemon.c
+ Added HB_POSIX_DAEMON( lNoChdir, lNoClose ) --> lResult
* contrib/hbmxml/hbmxmlp.prg
* contrib/hbmagic/hbmagis.prg
* contrib/hbmagic/tests/hbmagit.prg
* contrib/hbmagic/hbmagic.c
! Minor fix to copyright line.
; Patch from Tamas. Thank you!
* contrib/hbposix/tests/testdmn.prg
* contrib/hbposix/daemon.c
* Renamed POSIX_DAEMON() to HB_POSIX_DAEMON() to reflect
fact that it implement higher level posix functionality
(as opposed to being a direct wrapper to posix function
names 'deamon()')
* harbour/contrib/hbmxml/hbmxml.c
! redesigned to use mxml_node reference counters - it should fix
all problems with memory leak and accessing freed memory which
where in our wrapper.
! fixed few typos and possible GPF I've found
! modified mxmlDelete() wrapper to respect reference counter
It means that it cannot call mxmlDelete() MXML function directly.
- removed mxmlRelease() and mxmlRetain() PRG wrappers
* harbour/contrib/hbmxml/3rd/minixml/mxml_fil.c
! fixed double mxml_node releasing
* harbour/contrib/hbmxml/3rd/minixml/mxml_nod.c
! fixed mxmlDelete() to respect reference counters
; TODO: There are still two problems but inside MXML library.
1. memory leak in testmxml rem_err.xml
The leak is inside MXML function and have to be fixed by author
(I do not want to change this code too deeply). Here is valgrind
report:
(88 direct, 1 indirect) bytes in 1 blocks are definitely lost
at 0x4C234E7: calloc ()
by 0x40ABF9: mxml_new (mxml_nod.c:758)
by 0x40AE39: mxmlNewText (mxml_nod.c:547)
by 0x407421: mxml_load_data (mxml_fil.c:1585)
by 0x404E50: HB_FUN_MXMLLOADFILE (hbmxml.c:794)
by 0x50A9FF6: hb_vmProc (hvm.c:5795)
by 0x5086104: hb_vmExecute (hvm.c:1655)
by 0x50A9FF6: hb_vmProc (hvm.c:5795)
by 0x50ADC12: main (mainstd.c:96)
2. Index functions in MXML library does not update reference counters.
It means that it's possible to create index then remove nodes and
access such nodes extracting their addresses from the index.
It's the only one place I know when user can make sth wrong with
memory using just modified HBMXML wrapper and it cannot be fixed
without modifications in MXML library.
Please test it.
* harbour/contrib/hbmxml/hbmxml.c
! fixed hb_strdup() wrongly used instead of strdup()
Thanks to Petr for the information.
* modified MXMLSAVESTRING() to follow recent Viktor modifications in
MXMLSAVEALLOCSTRING() and not strip trailing EOL
* contrib/hbmxml/hbmxml.c
% In MXMLSAVEALLOCSTRING() strdup()-ed buffer passed directly
to hb_retclen_buffer() replaced with plain hb_retclen() call.
hb_retclen_buffer() is to be used only if there is already
an allocated buffer to pass as is.
! MXMLSAVEALLOCSTRING() modified to not remove EOLs from
buffers received from minixml lib. Reason two-fold: 1. hbmxml
libs job is to be as transparent as possible, so it should not
tamper with the contents 2. Do not make any assumptions about
the size of EOL, which was 1, but now it can be 2 on certain
platforms.
; Please review and test. There is no test code for this
call, so I only did build tests.
* contrib/hbfoxpro/hbfoxpro.hbp
+ contrib/hbfoxpro/misc.prg
+ Added very humble attempt to emulate SYS(). I'm no FoxPro user
and don't have any facility to make tests against real FoxPro.
Please fix and extend as you deem necessary.
* bin/hb3rdpat.hbs
+ Changed tool detection to only require what's really to be
used in a certain session.
+ Added detection to more tools.
; Thanks Tamas for the patch session.
* contrib/hbmxml/tests/testmxml.prg
! Reverted 2011-01-17 00:05 UTC+0200 Petr Chornyj.
It's wrong solution, it makes the output non-portable.
; TOFIX: Change LF to CRLF in libmxml for a proper fix.
* contrib/hbmxml/hbmxml.c
! Fixed warning reported by bcc55 in mxmlNewCustom()
* contrib/hbmxml/tests/testmxml.prg
* Changed whitespace_cb() to respect official mxml test result
f.e. hb_eol() -> e"\n"
* harbour/contrib/hbmxml/hbmxml.c
% optimized user callback calls
* declare all helper functions as static - all public functions
except HB_FUNC() ones should be declared in .h files
If it's not necessary the please do not declare functions as public.
It's much easier to update the code when developers know that it's
use only locally and not accessed from some other or user code.
* contrib/hbmxml/hbmxml.c
+ Added experimental hb_mxmlGetAttrsCount(), hb_mxmlGetAttrs(),
hb_mxmlGetAttrsArray()
; WARNING: can be changed or even removed after final 2.7 miniXML release
* harbour/contrib/hbmxml/hbmxml.c
! fixed using released strings
! added missing callback item clearing
! release previous callback items in MXMLSETERRORCALLBACK() and
MXMLSETCUSTOMHANDLERS() - it fixes memory leak in repeated calls
and allows to free all items used by codeblock callbacks before
application/thread exit.
; small note about TSD functions:
hb_stackGetTSD() always returns non NULL pointer, on first call
it allocates and initialize new structure. It's not necessary to
check if return value is not NULL.
hb_stackTestTSD() return NULL if TSD structure is not allocated
yet by current thread, otherwise it returns this structure.
Newly allocated TSD structures are cleared so it's not necessary
to clear their members inside init functions. In such case init
functions can be ignored (set to NULL in HB_TSD_NEW().
I know that on some platforms NULL can be represented as non
0 value anyhow current Harbour code is not ready to work with
such platforms and needs a lot of modifications to adopt it
to such condition. I do not expect that anyone will try to
make such port in the future.
; QUESTION: why custom_save_cb() uses hb_parc() instead of
hb_parstr_utf8()?
; QUESTION2: what TODO in MXMLDELETE() means?
* harbour/include/hbapi.h
* harbour/include/hbwmain.c
* harbour/src/vm/cmdarg.c
* moved declaration of hb_winmainArgInit() to header file
* harbour/contrib/hbmxml/3rd/minixml/mxml_fil.c
* harbour/contrib/hbmxml/3rd/minixml/mxml.h
! fixed to compile with WinCE builds
; I cannot regenerate .diff file because
../../../../bin/hb3rdpat.hbs -rediff
generates RT error:
Error BASE/1123 Argument error: HB_ATOKENS
Called from HB_ATOKENS(0)
Called from URL_GETFILENAME(810)
Called from FETCHANDEXTRACT(673)
Called from MAIN(412)
Sorry, probably I'm missing sth what was already discussed
but I was not able to follow all post on the list in last
weeks so I would like to ask Viktor or Tamas for the help.
* contrib/hbexpat/tests/test.prg
* contrib/hbexpat/tests/tohash.prg
* Tweaked to find example xml file out of the box.
* contrib/hbexpat/hbexpat.c
* contrib/hbcurl/hbcurl.c
* contrib/hbssl/ssl.c
* contrib/hbssl/pem.c
% Using hb_vmPush*() functions instead of less efficient
hb_evalBlock*().
Calls requiring UTF8 conversion were not optimized.
* contrib/hbzebra/coredraw.c
! Fixed to use HB_DEFAULT_DECIMALS instead of hard coded 2.
* contrib/hbmxml/hbmxml.c
! Fixed to use hb_itemPutC() instead of hb_itemPutCConst().
(use the latter for 'static const' strings only)
* contrib/hbmxml/hbmxml.c
+ Enabled function pointer support with new PHB_ITEM based
callback system.
! MXMLSETERRORCALLBACK() fixed to reset error handler to NULL
if wrong (or no) parameter is passed.
! Replaced hb_vmProc() with hb_vmSend().
! Fixed some missed locations still using dynsyms directly.
* contrib/hbmxml/tests/custom.prg
* contrib/hbmxml/tests/testmxml.prg
* contrib/hbmxml/tests/reminder.prg
* Switched back to use function pointers.
* contrib/hbsqlit3/hbsqlit3.c
* contrib/hbxdiff/hbxdiff.c
* Renamed variables to reflect recent changes.
* contrib/hbmxml/hbmxml.c
+ First round to switch to supporting codeblocks and storing
callback information in PHB_ITEM instead of PHB_DYNS. For some
reason I couldn't figure, reminder.prg fails after this modification.
Please verify.
+ Added TOFIX to severe buffer handling problem in all MXMLSAVE*()
functions. Buffer is returned from save_cb() callback after
it's freed.
* contrib/hbmxml/tests/custom.prg
* contrib/hbmxml/tests/testmxml.prg
* contrib/hbmxml/tests/reminder.prg
* Changed to use codeblock callbacks.
(later some examples might be readded for function pointers,
it's simple s&r)
* Some formatting. Deleted line spaces @ EOL.
; NOTE: f.e. testmxml.prg fails instantly. It failed the same
way before this commit.
* contrib/hbmxml/tests/reminder.prg
* contrib/hbmxml/tests/test.prg
! Fixed warnings and errors preventing these
tests from building.
* contrib/hbexpat/hbexpat.c
* contrib/hbcurl/hbcurl.c
* contrib/hbssl/ssl.c
* contrib/hbssl/pem.c
+ Added support also for function pointers where codeblocks
were accepted. Please test it.
NOTE: It was easy change because PHB_ITEM was already
used to store the callback value and official Eval API
was used to call the callbacks.
* contrib/hbssl/tests/pem.prg
+ Added example for function pointer callback.
* contrib/hbssl/pem.c
% Minor optimization.