* include/hbgtcore.h
* source/rtl/gtapi.c
* source/rtl/hbgtcore.c
* Changed low level GT SAVE/REST method buffer parameter type
to void * from BYTE *. Some explicit casts removed.
* Few more BYTE *s to char *.
* include/hbextern.ch
* source/rtl/Makefile
+ source/rtl/base64c.c
+ source/rtl/base64.prg
+ Added HB_BASE64ENCODE(), HB_BASE64DECODE() to core.
They were copied from hbtip and hbvpdf and currently
the decoder is .prg code while encoding is .c code.
Latter has one TOFIX for an error situation.
* contrib/hbtip/encurl.prg
* contrib/hbtip/thtml.prg
* contrib/hbtip/sessid.prg
* contrib/hbtip/popcln.prg
* contrib/hbtip/sendmail.prg
* contrib/hbtip/tip.ch
* contrib/hbtip/cgi.prg
* contrib/hbtip/url.prg
* contrib/hbtip/encqp.prg
* contrib/hbtip/base64x.c
* contrib/hbtip/httpcln.prg
* contrib/hbtip/client.prg
* contrib/hbtip/encoder.prg
* contrib/hbtip/smtpcln.prg
* contrib/hbtip/encb64.prg
* contrib/hbtip/mail.prg
* contrib/hbtip/credent.prg
* contrib/hbtip/ftpcln.prg
+ Added TOFIXes, QUESTIONs
! Fixed to use hb_MemoRead() instead of MemoRead() in one place.
! Fixed a wrong error checks after FCreate() calls.
! Fixed to use Len( hb_inetCRLF ) instead of hardwired length.
! Using hb_ntos() instead of Str() in POP3 commands.
* Changed explicit values to manifest constants (F_ERROR)
* Changed high ASCII chars in source to Chr() representation,
now source can be edited with any editor.
! Added missing copyright header to tip.ch. Although this header
seems to be unnecessary.
! TipMail:MakeBoundary() to not add any date punctuations in the ID.
! Fixed tIPClientFTP:fileSize() to not return permantent zero.
% Heavier optimizations and cleanup in TIpClientSmtp().
% Optimizations.
* Formatting.
; Please test.
* contrib/xhb/xhbat.c
* contrib/hbtip/utils.c
* Moved ATI() function to xhb lib.
ATI() is different from HB_ATI() since it doesn't support
national chars, but it supports negative start/end values in
xhb style.
* contrib/hbtip/thtml.prg
* Changed to use core HB_ATI() instead of xhb specific ATI().
To me it looks that negative positions aren't used by hbtip code,
also respect for national chars is fine, so this replacement is okay.
Please review me and correct it if needed.
* contrib/xhb/xhbfunc.c
* contrib/hbtip/legacy.prg
* Moved HB_EXEC() to xhb lib. Restored the C version.
* contrib/hbtip/Makefile
- contrib/hbtip/legacy.prg
- Deleted. No longer necessary.
* include/hbextern.ch
* source/rtl/Makefile
+ source/rtl/ati.c
+ Added HB_ATI() function. This is the same as HB_AT(), but
case-insensitive. It supports national chars.
* harbour/source/rtl/gttrm/gttrm.c
! do not catch SIGCHLD
* harbour/include/hbapifs.h
* harbour/source/rtl/hbproces.c
+ added C function: hb_fsProcessRun()
* harbour/source/rtl/hbprocfn.c
+ added .prg function:
hb_processRun( <cCommand>, [ <cStdIn> ], [ @<cStdOut> ], ;
[ @<cStdErr> ], [ <lDetach> ] ) -> <nResult>
This function is implemented for all builds also in DOS ones where
temporary files are used to simulate pipes.
TODO: in OS2 builds it should be possible to implement this function
without temporary files just like in *nixes and MS-Windows builds.
I would like to ask OS2 users to make it.
* utils/hbmk2/hbmk2.prg
+ Added app bundle generation for OS X targets in -gui mode.
It's experimental yet. (f.e. clean will not clean it f.e.)
Thanks to Teo Fonrouge for the hints.
* Using escapting function (instead of manual escaping) when
launching Windows apps on NT.
; TOFIX: hb_FCopy()
* source/rtl/fscopy.c
+ Now it will copy flags on *nix systems (just like __COPYFILE()).
* source/rtl/copyfile.c
* Minor formatting.
; TODO: Add generic app icon support. Possible?
* INSTALL
- Deleted QT version number from example settings to
ease on maintenance without making the doc look outdated.
* source/rtl/hbmd5.c
! Minor typo in comment.
* config/win/global.cf
* config/wce/global.cf
% Removed unnecessary @ chars.
+ harbour/include/hbtask.h
+ harbour/source/vm/task.c
* harbour/include/hbthread.h
* harbour/include/hbatomic.h
* harbour/source/vm/thread.c
* harbour/source/vm/hvm.c
* harbour/source/vm/fm.c
* harbour/source/rtl/idle.c
* harbour/source/rtl/filesys.c
+ implemented OS independent task switching system - it gives PTHREAD
compatible basic API so it can be used in HVM as alternative MT support
which does not use any OS threads. As long as Harbour does not call
any blocking OS function then it's possible to create and execute
simultaneously many threads though only one CPU is used and switched
between HVM threads. It gives similar scalability to xbase++ threads
and also similar behavior in item protection at .prg level.
Now it's possible to use HVM threads in any OS.
Of course it does not mean that Harbour adds in some magic way
thread support to OS-es which does not support threads like DOS.
It only means that HVM supports threads for .prg code just like
in native MT environment as long as some C code does not block
task switching or process execution will not be frozen by sth, i.e.
executing other process (__run()) in single process OS like DOS.
In some cases it can be interesting alternative even in OS which
have native thread support.
All tests/mttest*.prg programs and speedtst --thread=<n> --scale
are executed correctly with new task switching just like with
OS native MT support.
Compilation with task switching in hbvmmt library can be forced
by HB_TASK_THREAD macro which also disable native OS threads
support.
For task context switching two alternative methods are used:
1) getcontext()/makecontext()/swapcontext() (SUSv2, POSIX.1-2001)
which is preferable because does not need any additional
hacks but not all OS-es supports these functions.
It's enabled by default in Linux builds.
2) setjmp()/longjmp() (POSIX, ISO 9899 (C99)) otherwise.
These functions are supported by most of C compilers
but there is no function to set new stack in saved context
so it's necessary to introduce for each architecure/C compiler
peace of code which makes it. Macro HB_TASK_STACK_INIT() in
task.c makes it. I defined this macro for x86@32 in DJGPP
Linux GCC and OpenWatcom builds. I tested OpenWatcom builds only
in DOS and Linux but probably it works in all x86@32 builds.
If someone is interesting in adding support for some other
platforms which does not support ucontext.h and 1-st methods
then please define above macro for them.
Have a fun with new toy ;-)
* harbour/source/vm/Makefile
* enabled hbvmmt in DJGPP and OpenWatcom DOS builds. It works well.
Viktor if possible please add support for -mt switch in hbmk2
in all builds even if we do not compile hbvmmt by default so
it can be used with DJGPP and OW and any other builds for which
someone enable hbtask.c though OS does not support threads.
* harbour/contrib/hbmzip/hbmzip.c
! fixed '[const] char|BYTE *' casting in DOS and OS2 builds
* include/hbcomp.h
* include/hbcompdf.h
* include/hbapifs.h
* include/hbexprop.h
* include/hbmacro.h
* include/hbapi.h
* include/hbapiitm.h
* include/hbdate.h
* source/pp/ppcore.c
* source/vm/itemapi.c
* source/vm/arrays.c
* source/vm/extend.c
* source/common/expropt1.c
* source/rtl/philes.c
* source/rtl/empty.c
* source/rtl/minmax.c
* source/rtl/dates.c
* source/rtl/filesys.c
* source/rdd/dbfnsx/dbfnsx1.c
* source/rdd/dbfcdx/dbfcdx1.c
* source/rdd/dbf1.c
* source/rdd/dbffpt/dbffpt1.c
* source/rdd/hbsix/sxdate.c
* source/compiler/hbmain.c
* source/compiler/complex.c
* source/compiler/harbour.yyc
* source/compiler/harbour.y
* contrib/hbct/files.c
* contrib/hbct/dattime2.c
* contrib/hbct/datetime.c
* contrib/xhb/filestat.c
* contrib/hbtip/utils.c
* examples/hboleold/win_ole.c
* LONG -> long for date/time related values
(julian, date, type, millisec)
; This is an effort to clean Harbour sources from
Windows/legacy-Clipper basic types and replace
them with own or ANSI C ones.
In the above case, usage wasn't consistent,
LONG and long were mixed.
* source/main/harbour.c
* source/vm/fm.c
* LONG -> long for some stat counters.
* contrib/Makefile
* Moved hbxbp to the end of list as a workaround for potentially
outdated hbqt.ch reference, if it's before hbqt build.
Still not prefect though. We should probably fix the ordering
of -I option in build process, but it doesn't seem trivial.
Or avoid installing headers into central include dir, but that
also leads far.
* utils/hbmk2/hbmk2.prg
* Minor step to fix a recent regression.
* source/rtl/hbzlibgz.c
* HB_GZDIRECT() is now always defined in core, if it's built against
older zlib version, it will simply do nothing.
We can discuss how to handle this situation, all have pros and cons:
1) Always define: Throw RTE at runtime.
2) Always define: Return error at runtime.
3) Don't define if low-level wrapper isn't present. Makes it
easy to catch missing dependencies on .prg level, but it
break Harbour to provide a consistent higher level API.
* examples/hbextern/hbextern.prg
! Minor fix in generated comment.
* examples/hbextern/hbextern.hbp
+ -w2 -> -w3
* ChangeLog
! Wrong header in previous entry.
* contrib/hbqt/hbqt_qimage.cpp
* contrib/hbqt/hbqt_qtextdocument.cpp
* contrib/hbqt/hbqt_qapplication.cpp
* contrib/hbqt/hbqt_qtextcursor.cpp
* contrib/hbqt/hbqt_qclipboard.cpp
* contrib/hbqt/hbqt_qurl.cpp
* contrib/hbqt/hbqt_qwebhistoryitem.cpp
* contrib/hbqt/hbqt_qvariant.cpp
* contrib/hbqt/hbqt_qfont.cpp
* contrib/hbqt/hbqt_qimagereader.cpp
* contrib/hbqt/hbqt_qcursor.cpp
* contrib/hbqt/hbqt_qfontdatabase.cpp
* contrib/hbqt/hbqt_qcoreapplication.cpp
* contrib/hbqt/hbqt_qobject.cpp
* contrib/hbqt/hbqt_qtextframe.cpp
* contrib/hbqt/hbqt_qabstractitemmodel.cpp
* Minor EOF change after regerenating them with hbqtgen.
(probably it would be better to generate only one EOLs at
EOF by hbqtgen)
* source/rtl/gtwvt/gtwvt.c
! Fixed maximize button state when HB_GTI_RESIZABLE is set to .T.
before the window is drawn.
Please test.
% Cleaned windows style definitions in source.
* include/hbstack.h
* include/hbapi.h
* Formatting in comment.
* include/hbapifs.h
* source/rtl/filebuf.c
* source/rtl/filesys.c
* Changed file I/O buffer parameters from
'( [const] BYTE * )' to '( [const] void * )'
* utils/hbmk2/hbmk2.prg
+ Added ${hb_curdir} macro support.
+ Added ${hb_first} macro support (will return first source name
specced on cmdline)
+ Added support for 'sources=' line in .hbc files. This
will accept .prg, .c/.cpp, .po/.pot, object and resources.
For resources, also wildcards are supported. Files with
no extension will be considered .prg.
This also replaces former 'pos=' line.
This can be useful to put some central sources into all
project without using a lib (or when a lib isn't an option
for some reason).
- man
- Dir deleted.
* source/rtl/hbmd5.c
+ HB_MD5(), HB_MD5FILE(): New logical parameter added, which
controls whether to return binary data or hexadecimal string.
The default is .T. which will return hexa string, to stay
compatible. Later we should switch the default to .F..
* mpkg_gnu.bat
* Updated requirement section.
* contrib/hbct/ascpos.c
* contrib/hbct/ctwfunc.c
* contrib/hbct/ctcrypt.c
* contrib/xhb/filestat.c
* contrib/hbsqlit3/hbsqlit3.c
* contrib/hbnf/fttext.c
* contrib/hbpgsql/postgres.c
* contrib/hbfimage/fi_wrp.c
* contrib/hbgd/gdwrp.c
* source/rtl/mouse53.c
* 'const' cleanup.
; NOTE: I rather didn't commit BYTE to char in CTWIN.
; TOFIX: Some of these will result in warnings when passing values
to external API calls. I'd like to ask developers to review
what the intent was. Sometimes external API declarations
are missing 'const', so it's safe to pass them these buffers,
but it should be checked in documentation.
---
../../fi_wrp.c: In function 'HB_FUN_FI_LOADFROMMEM':
../../fi_wrp.c:372: warning: passing argument 1 of 'FreeImage_OpenMemory' discards qualifiers from pointer target type
C:\devl\FreeImage-3.12.0\Dist/FreeImage.h:771: note: expected 'BYTE *' but argument is of type 'const BYTE *'
../../fi_wrp.c: In function 'HB_FUN_FI_GETFILETYPEFROMMEM':
../../fi_wrp.c:887: warning: passing argument 1 of 'FreeImage_OpenMemory' discards qualifiers from pointer target type
C:\devl\FreeImage-3.12.0\Dist/FreeImage.h:771: note: expected 'BYTE *' but argument is of type 'const BYTE *'
../../gdwrp.c: In function 'HB_FUN_GDIMAGESTRINGFTEX':
../../gdwrp.c:2718: warning: passing argument 4 of 'gdImageStringFTEx' discards qualifiers from pointer target type
C:\devl\gd-2.0.34\include/gd.h:459: note: expected 'char *' but argument is of type 'const char *'
../../gdwrp.c:2718: warning: passing argument 9 of 'gdImageStringFTEx' discards qualifiers from pointer target type
C:\devl\gd-2.0.34\include/gd.h:459: note: expected 'char *' but argument is of type 'const char *'
../../gdwrp.c: In function 'HB_FUN_GDIMAGESTRINGFTCIRCLE':
../../gdwrp.c:2809: warning: passing argument 7 of 'gdImageStringFTCircle' discards qualifiers from pointer target type
C:\devl\gd-2.0.34\include/gdfx.h:41: note: expected 'char *' but argument is of type 'const char *'
../../gdwrp.c:2809: warning: passing argument 9 of 'gdImageStringFTCircle' discards qualifiers from pointer target type
C:\devl\gd-2.0.34\include/gdfx.h:41: note: expected 'char *' but argument is of type 'const char *'
../../gdwrp.c:2809: warning: passing argument 10 of 'gdImageStringFTCircle' discards qualifiers from pointer target type
C:\devl\gd-2.0.34\include/gdfx.h:41: note: expected 'char *' but argument is of type 'const char *'
---
* harbour/source/rtl/dates.c
! fixed CTOD() to be CA-Cl*pper compatible in decoding dates like:
SET DATE FORMAT TO "YYYY-MM-DD"
? CTOD("000002009.000000012.0000000000000027.1")
? CTOD(" 0002009. 000012. 000028 1")
? CTOD("xx0002009.xxx000012.xxxxxxxxxx000028 1")
? CTOD("000 02009.00 000012.000 000028 1"), "*"
? CTOD("2007 11 29")
? CTOD(" 2007 11 29 ")
? CTOD("2007-1 1-29")
? CTOD("2007- 1 1 - 2 9 ")
! fixed HB_CTOT() to use the same formatting rules as CTOD() in
CA-Cl*pper - now delimiters between values are strictly required.
* INSTALL
* make_gnu.bat
+ Added support for Cygwin builds (passes call to make_gnu.sh).
+ Added Cygwin build starter example.
+ Cygwin mentioned as a requirement for mingwarm builds,
also added to PATH.
! Fixed cygwin autodetection.
! Fixed wrong PATH order in 'MinGW GCC + MSYS' example.
* Merged mingw+msys and cygwin bash based build methods,
and titled as "alternate" method.
Now all supported compilers work by starting up make_gnu.bat.
* utils/hbmk2/hbmk2.prg
! Change compiler autodetection to work for cygwin.
* mpkg_dos.bat
* mpkg_win.bat
* make_gnu.bat
! Fixed build process to work in paths containing spaces.
I didn't test the batch in pure DOS, so I may have broken it.
* config/win/install.cf
* config/wce/install.cf
! Fixed 'install' to work when there is a space in install path.
* make_gnu.bat
* INSTALL
+ Added support for HB_BUILD_LOG envvar. If set to 'yes',
it will automatically set log output filename to:
'log-<arch>-<comp>.txt'
if set to 'no' it will no make any extra redirection,
if set to any other value, it will be used for output
(both std and err). The batch will set HB_BUILD_LOGFILE
to the filename used for output for processing.
This feature requires Windows NT or upper host.
I didn't enable this feature yet by default to not break
existing user setups, but maybe I'll do it before the
final release.
* Modified text shown (+ beep thrown) when build failed.
* Messages now all start with 'Harbour'.
* Do not do the second build pass if the first one failed.
* contrib/hbwin/legacy.prg
! Fixed CreateObject() not working due to typo.
Thanks to Itamar Lins for the report.
* mpkg_dos.bat
* mpkg_win.bat
* mpkg_win.nsi
+ Enabled HB_BUILD_LOG=yes.
* Silenced copy, zip, makensis commands.
+ Added message about failed build process.
* Changed to use 'copy' instead of 'xcopy'
* Changed internals so now they don't require HB_COMPILER
and HB_ARCHITECTURE to be set. This means that now
we can rely on autodetection even for mpkg_*.bat files.
Creating an installer is very easy now for most cases.
Just type:
mpkg_gnu.bat
* source/vm/set.c
+ Added file commit support to __MVSAVE(), if Set( _SET_HARDCOMMIT )
is set to .T.. This is the default which means by default we aren't
CA-Cl*pper compatible. Addition protected by HB_C52_STRICT.
* source/rdd/dbf1.c
! Minor typo in comment.
* doc/en-EN/hb_apiit.txt
* include/hbapi.h
* include/hbapiitm.h
* source/vm/itemapi.c
* source/vm/extend.c
* source/rtl/gtwvt/gtwvt.c
* source/rdd/dbf1.c
* contrib/gtqtc/gtqtc.cpp
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/wvggui.c
* contrib/hbwin/olecore.c
* examples/hboleold/win_ole.c
* Finishing long planned function renames to clear up
a very (10 years) old naming inconsistency.
To adapt you code to this, please do changes below:
1) hb_itemPutCPtr() (with three parameters) -> hb_itemPutCLPtr()
2) hb_itemPutCPtr2() -> hb_itemPutCPtr()
Unmodified code will generate compile time errors, so it's easy
to spot where the modifications need to be done. For most users,
only case 1) will need to be dealt with.
; INCOMPATIBLE. Please update your code.
* source/rtl/hbi18n1.c
* source/rdd/dbfnsx/dbfnsx1.c
* hb_itemPutCPtr() (with three parameters) -> hb_itemPutCLPtr()
* contrib/gtwvg/wvggui.c
* contrib/gtqtc/gtqtc.cpp
! Fixed GPF in hb_gtInfo( HB_GTI_SCREENSIZE ) call with wrong
parameter.
* mpkg_dos.bat
* mpkg_win.bat
* make_gnu.bat
* Now make_gnu.bat will also install libs to lib/<arch>/<comp>
by default. This will enable default settings to work in
multi-compiler mode.
; NOTE: hbmk script may need to be adapted for this change,
to add lib/<arch>/<comp> to libpath. Only MinGW + msys
users using hbmk *script* are affected though.
* contrib/hbqt/hbqt_slots.cpp
! Fixed QT_QDEBUG() to map to QT function even on Windows.
(no OutputDebugString() here please)
! Fixed wrong hb_itemPutCPtr() usage. Here, only string
allocated by Harbour functions can be used. Attaching
foreign string pointers will produce serious problems.
This fixes one GPF reported by Lorenzo on Linux.
! Renamed static vars to have 's_' prefix.
! Commented unused SlotsExecFocusEvent(). This fixes the
MinGW warning.
! Fixed to use hb_snprintf() instead of unsafe sprintf().
% Events::eventFilter() simplified.
* Formatting.
* source/rtl/gtwvt/gtwvt.c
! Fixed hb_gtInfo( HB_GTI_SCREENSIZE ) called with invalid parameter.
(untested, please test)
* contrib/gtwvg/gtwvg.c
! Fixed hb_gtInfo( HB_GTI_SCREENSIZE ) called with invalid parameter.
! Fixed hb_gtInfo( HB_GTI_SETPOSANDSIZE ) called with invalid parameter.
(untested, please test)
* contrib/hbxbp/tests/demoxbp.prg
! Fixed FUNCTION not returning value.
* utils/hbmk2/hbmk2.prg
* Cleanup to path separator handling in .hbc files found
automatically.
* source/rtl/hbgtcore.c
! Fixed GPF when using hb_gtInfo( HB_GTI_SETWIN ) without
valid parameter. Thanks to Marek Horodyski for the report.
* contrib/gtwvg/wvgsink.c
! Attempt to fix MinGW warning.
---
../../wvgsink.c: In function 'HB_FUN_WVG_AXSETUPCONNECTIONPOINT':
../../wvgsink.c:519: warning: dereferencing pointer 'hSink.56' does break strict-aliasing rules
../../wvgsink.c:530: note: initialized from here
---
Please review, I'm not at all sure this patch is correct.
* source/rtl/getsys.prg
! GETACTIVE() function fixed to work even if an app
manages getlist on its own. In this case GETACTIVE()
will maintain the GET object in its own STATIC variable.
This should fix the SuperLib problem reported by Bruno Luciani.
* examples/superlib/hbsuper.dif
+ Will now automatically enable CLIPPER53 protected code
if Harbour was built with HB_COMPAT_C53 setting. This
enables SuperLib to use C53's build-in mouse functions.
* harbour/source/rtl/lang.c
% simplified HB_USERLANG() code
* harbour/include/hbdefs.h
* use inline functions for HB_PUT_PTR() and HB_GET_PTR() macros in
GCC builds. It makes GCC builds alignment free and fixes the problem
with broken strict aliasing rules.
* harbour/include/hbwmain.c
* casting
* source/rtl/lang.c
* source/rtl/isprint.c
* contrib/hbwin/win_prn2.c
! Fixed most mingw/C++ warnings:
warning: deprecated conversion from string constant to 'char*'
* Added 'const' to hb_PrinterIsReady() string parameter.
; Please review me.
; TOFIX: These remain of this type of warning:
../../../../../include/hbwmain.c:78: warning: deprecated conversion from string constant to 'char*'
../../ctnet.c:182: warning: deprecated conversion from string constant to 'char*'
../../print.c:204: warning: deprecated conversion from string constant to 'char*'
../../print.c:205: warning: deprecated conversion from string constant to 'char*'
../../win_prn2.c:437: warning: deprecated conversion from string constant to 'CHAR*'
../../../maindllp.c:429: warning: deprecated conversion from string constant to 'char*'
../../../maindllp.c:454: warning: deprecated conversion from string constant to 'char*'
* contrib/gtwvg/wincallb.c
! Added cast to avoid error in mingw/C++ mode.
Thanks Pritpal, it worked.
* contrib/gtwvg/Makefile
+ Reenabled for mingw/C++
* source/vm/extend.c
* Minor formatting.
* source/rtl/mlcfunc.c
! Fixed warning in HB_C52_STRICT mode.
* contrib/hbxbp/xbp.ch
! Fixed HB_OUTDEBUG() macro to work also in codeblocks when
not in debug mode, and also to better handle the case when
parameter is a variable.
* ChangeLog
+ Added incompat NOTE to hb_par*/hb_stor*() change.
* harbour/source/rtl/mlcfunc.c
! fixed missing ulLen declaration in if() branch
% restored a little bit optimized Viktor's code - now it's safe to
call hb_par*() expecting default value on wrong type even if given
parameter is array