* harbour/include/hbapi.h
* harbour/source/vm/cmdarg.c
+ added const char * hb_cmdargARGVN( int argc )
* harbour/source/vm/cmdarg.c
* try to convert executable file name argument in argv[0] to
absolute path if it's relative one. Respect PATH envvar it necessary.
* harbour/source/common/hbdate.c
* formatting
* harbour/source/rtl/philes.c
* harbour/source/rtl/errorint.c
* harbour/source/rtl/filesys.c
! use hb_cmdargARGVN(n) instead of hb_cmdargARGV()[n] to avoid
possible GPF if some function will be called before argument
initialization
* removed additional logic which tries to convert relative paths
in file name from hb_fsBaseDirBuff() and HB_PROGNAME() functions
* include/hbdefs.h
* include/hbthread.h
* added HB_OS_SUNOS to be able to build under OpenSolaris 2008.11
using pthreads.
* source/common/hbprintf.c
* include ieeefp.h under OpenSolaris 2008.11
* harbour/bin/postinst.sh
! added missing export in envvar setting.
* harbour/config/linux/install.cf
* added error message when install directory is not set.
* harbour/config/lib.cf
* harbour/config/bin.cf
* harbour/config/dir.cf
+ added explicit support for make recursive calls.
Question: why we use $(MK) instead of $(MAKE) so it necessary
to mark recursive make calls manually?
* harbour/config/dir.cf
* rewritten DIR_RUL to use only GNU make commands instead of
OS scripts. Now config/<arch>/dir.cf files are not longer used.
Please make build tests on different platforms. If all will
be correct then we remove these files.
* harbour/source/common/Makefile
* harbour/source/vm/Makefile
* harbour/source/vm/vmmt/Makefile
* moved biggest files to begin of file list for better parallel
compilation utilization.
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* accept invalid string key expression if codeblock key expression
is given.
* harbour/source/common/hbprintf.c
* minor modification for easier future updating
* harbour/source/rdd/dbfntx/dbfntx1.c
! fixed possible GPF caused by corrupted indexes
* harbour/source/rdd/dbfcdx/dbfcdx1.c
! fixed possible GPF caused by missing RT error
! added RT errors for invalid KEY or FOR expressions
* harbour/source/vm/itemapi.c
% eliminated hb_snpritf() from HB_IT_POINTER conversion in
hb_itemString()
* harbour/source/common/hbprintf.c
! fixed return value - it should be one less. Thanks to Xavi.
+ added support for I64, I32 and I16 length specifiers - it's
MS-Windows only extension but it should help in replacing
native C *printf() calls with Harbour version.
* harbour/source/common/hbprintf.c
! do not use _fpclass() in BCC builds - it breaks FL arithmetic
* use _finitel() instead of _finite() in MSVC builds
* harbour/include/hbdefs.h
* include stdint.h in DJGPP >= 2.4
* harbour/source/common/hbprintf.c
! fixed DJGPP <= 2.3 compilation
* harbour/source/common/hbstr.c
* force buffer ending in DJGPP <= 2.3 when vsprintf() is used
* harbour/source/rtl/hbproces.c
! fixed typo in HB_SYMBOL_UNUSED() variable name
* harbour/config/dos/global.cf
! fixed for GNU make ports which prefer COMSPEC before SHELL
* harbour/include/hbdefs.h
* added some C compilers which supports stdint.h
* harbour/source/common/hbprintf.c
* eliminated non portable GCC only C syntax.
* updated to compile with other C compilers.
Now only GNUC with C99 support and BORLAND C gives all
+inf/-inf/NaN values for [long] double conversions.
Other compilers uses NaN also for infinite numbers or nothing.
Please add full support for them. See TODO notes I left.
For compilers which supports C99 floating point macros should
be enough to enable the same macros used for GNUC && _ISOC99_SOURCE.
* harbour/contrib/hbcrypt/sha2.h
* harbour/contrib/hbcrypt/sha2.c
! fixed BCC5.5 compilation
TOFIX: harbour/contrib/hbssl/ssl.c[631], sslctx.c[268], sslctx.c[281]
error: invalid conversion from ‘void*’ to ‘const char*’
I do not know if SSL_get_ex_data()/SSL_CTX_get_app_data()
returns valid ASCIIZ string so I cannot decide if simple casting
is safe and to pacify above errors.
Viktor, can you look at it?
* common.mak
* include/hbextern.ch
* source/rtl/Makefile
+ source/rtl/strxor.c
+ Added HB_STRXOR() (work of Mindaugas Kavaliauskas)
* common.mak
* source/common/Makefile
+ source/common/hbprintf.c
+ Added hb_snprintf_c() (temp name, untested) (work of Przemyslaw Czerpak)
[ I've added a normal Harbour license, as per your permission
on the list. Pls give me feedback is this is wrong. ]
* source/rdd/usrrdd/example/exlog.prg
! Fixed missing #includes.
* source/rdd/usrrdd/example/hbmk_b32.bat
+ source/rdd/usrrdd/example/hbmk_vc.bat
+ Added MSVC make file.
! Added EOL to the last line to hbmk_b32.bat.
! xhb.lib dependency removed. It was not needed anyway.
; TOFIX: When compiling exhsx.prg, this happens:
exhsx.obj : error LNK2001: unresolved external symbol _HB_FUN_HSXRDD
* contrib/hbssl/sslsess.c
* contrib/hbssl/sslctx.c
* contrib/hbssl/sslciph.c
* Minor changes.
* harbour/include/hbgtcore.h
* harbour/source/rtl/hbgtcore.c
* changed BYTE bClearColor to USHORT uiClearColor
The following modifications were made by Viktor Szakats,
(2008-11-22 16:15 UTC+0100 - 2008-12-19 12:56 UTC+0100)
Many thanks. It's the first part without CP conversions in OS calls which
I will want to check yet. Please tests MS-Windows only modifications.
* harbour/make_vc.mak
* harbour/contrib/mtpl_vc.mak
+ Added support for A_USR.
* harbour/include/set.ch
* harbour/include/hbextern.ch
* harbour/source/vm/cmdarg.c
* harbour/source/vm/set.c
* harbour/source/rtl/tgetlist.prg
* harbour/source/rtl/gete.c
* harbour/contrib/hbhpdf/harupdf.c
* formatting
* harbour/source/rtl/hbffind.c
* Changed few places to use sizeof() instead of
explicit size macro.
* harbour/source/vm/extrap.c
+ Added module listing. (also supports Win64)
* harbour/source/common/hbver.c
+ Added Intel C compiler detection. (from xhb)
+ Added Wine detection (unofficial but stable looking
detection method. There intentionally doesn't exist
an official method to do this detection, yet there
are cases when this is necessary. It's also essential
for error reports.)
See also:
http://www.mail-archive.com/wine-devel@winehq.org/msg48659.html
* harbour/source/common/hbfopen.c
! Reverted recent change to use fopen_s(). fopen_s()
will always open in exclusive mode, so it could create
incompatibilities.
* harbour/source/codepage/cpbgmik.c
! Fixed BGMIK collation encoding. Someone familiar with
BG CPs please confirm this, but previously it was
almost certainly broken, as the collation was identical
to BG866.
* harbour/source/rtl/diskspac.c
* harbour/source/rtl/disksphb.c
! GetModuleHandleA() -> GetModuleHandle()
; NOTE: GetModuleHandleA() WinCE emulation in
source/common/wince.c might be unnecessary
after this change.
* harbour/source/rtl/memoedit.prg
* harbour/source/rtl/teditor.prg
! Cleaned insert handling. It now won't anymore mess up
the cursor on instantiation (in New() method). Internal
:lInsert state replaced by Set( _SET_INSERT ). Cursor
is only touched in the editing loop.
* harbour/source/rtl/version.c
! HB_VERSION( HB_VERSION_BUILD_DATE ): Fixed month
being off by one.
* harbour/contrib/hbmzip/hbmzip.c
! Fixed typo which caused timestamps stored in .zip files
to be wrong.
* harbour/contrib/hbhpdf/tests/harupdf.prg
! Minor typo in code.
* harbour/contrib/rddads/rddads.h
+ Added detection for ACE 9.10.
* harbour/contrib/hbtip/sendmail.prg
! Stricter parameter checking in hb_SendMail().
* harbour/contrib/examples/dbu/hb_dbu.dif
+ Added SET DATE ANSI and SET CENTURY ON
* harbour/source/rtl/gtxwc/gtxwc.c
+ Generating HB_K_RESIZE keystrokes on screen resize.
This way it's working similarly to gtwvt.
! Typos in comments.
* harbour/source/rtl/gtwin/gtwin.c
! Fixed HB_GTI_KBDSHIFTS not working in console mode.
Replaced GetKeyboardState() call with GetKeyState() calls.
* harbour/source/rtl/gtwvt/gtwvt.c
+ Added 'layered' window support. It's enabled on W2K
and above (and only when not in Terminal Services
environment, because it makes it perform worse). This
way the screen is also properly displayed regardless
of what the Harbour application does. It also fixes
numerous paint artifacts, when GTWVT window was in
the background and another window is moved in front
of it.
! Fixed only generate HB_K_RESIZE keystrokes when
resize mode is HB_GTI_RESIZEMODE_ROWS.
* harbour/include/hbcomp.h
* harbour/include/hbmacro.ch
* harbour/source/compiler/ppcomp.c
* harbour/source/compiler/hbusage.c
* harbour/source/compiler/cmdcheck.c
+ added -ko (allow operator optimizations) compiler switch
It's disabled by default.
* harbour/include/hbexprb.c
* removed HB_ADD_SUB_ONE_OPT macro and enable optimizations covered
by it when -ko switch is used.
* harbour/source/common/expropt2.c
* disabled <exp> + 0 => <exp>, <exp> + "" => <exp>, - - <exp> => <exp>
optimizations for default compiler settings. They can be enabled by
-ko compiler switch
+ added optimizations for numeric values and + operator which uses
standard mathematical + behavior for real numbers:
a + b + c == a + ( b + c )
a + b == b + a
It's disabled by default and can be enabled by -ko compiler switch.
There are also other similar optimizations which can be added in
this way.
* harbour/include/hbapi.h
* harbour/source/vm/itemapi.c
* harbour/source/vm/fm.c
! fixed redundant call to hb_xrealloc() in string resize operation.
Thanks to Mindaugas for locating it.
* harbour/source/common/expropt1.c
* harbour/source/common/expropt2.c
! fixed wrongly modified expression during optimization for
( <numConst> / 0.0 )
* cleaned bDec/bWidth updating in compile time optimizations
* harbour/tests/speedtst.prg
! fixed possible race condition in initialization
+ added set workarea private for xHarbour builds - thanks to Phil
* harbour/doc/cmpopt.txt
* small cleanup
* harbour/include/hbvmpub.h
* harbour/source/vm/hvm.c
% some optimizations mostly for MT mode or compilers which do
not support function autoinline optimization
* harbour/source/common/hbstr.c
! added missing call to va_end() in hb_snprintf()
* harbour/source/vm/classes.c
+ added internal helper function __objSetClass()
* harbour/source/rtl/valtoexp.prg
* set class in expressions serialized by hb_valToExp()
* harbour/source/rtl/valtostr.c
% optimized hb_strToExp()
* harbour/contrib/xhb/hbcompat.ch
! removed unnecessary conversion for HB_ISPOINTER() in xHarbour part.
* harbour/contrib/xhb/Makefile
* harbour/contrib/xhb/common.mak
+ harbour/contrib/xhb/xhbarr.c
+ added aSplice(), aRemove() and aMerge() functions - code borrowed
from xHarbour by Ron Pinkas.
! fixed GPF trap in these functions
* harbour/contrib/xhb/xhbfunc.c
+ added CSTR()
* harbour/contrib/xhb/hbcompat.ch
! changed name of xHarbour include files - they where changed few
months ago and now they are the same as in Harbour.
To xHarbour users: please update hbcompat.ch in xHarbour CVS
* harbour/contrib/xhb/filestat.c
! fixed UNICODE compilation
* harbour/contrib/xhb/hblognet.prg
* harbour/contrib/xhb/hblog.prg
* formatting
* harbour/contrib/hbnf/tempfile.prg
! do not use HB_ISBYREF() .prg function - this function does not
exist in Harbour and does not work correctly in xHarbour
* harbour/include/hbapiitm.h
* harbour/source/vm/macro.c
* harbour/source/vm/codebloc.c
* harbour/source/vm/hashes.c
* harbour/source/vm/garbage.c
* harbour/source/vm/itemapi.c
* harbour/source/vm/memvars.c
* cleanup
* harbour/contrib/gtwvg/Makefile
! fixed typo
* harbour/contrib/gtwvg/hbgtwvg.ch
* added new line at the end of file and changed non ANSI C // comments
to /* */ - this file is included by C code too.
* harbour/contrib/gtwvg/wvgwin.c
* harbour/contrib/gtwvg/wincallb.c
* pacified some warnings and fixed possible access to uninitialized data
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
! fixed possible double freeing of memory blocks in #line directives
TOMERGE[1.0]
* harbour/common.mak
* harbour/source/compiler/hbmain.c
+ harbour/source/compiler/compi18n.c
* moved hb_compI18n*() functions to separate file covered by GPL with
Harbour exception - Thank to Mindaugas
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/include/hbexpra.c
* harbour/include/hbexprop.h
* harbour/include/hbexprb.c
* harbour/source/common/expropt1.c
* harbour/source/compiler/Makefile
* harbour/source/compiler/ppcomp.c
* added support for plural forms:
hb_i18n_ngettext[_noop|_strict]( <nExp>, <cText> | <acText> ;
[, <cContext> )
<acText> is accepted only as array of literal strings even if
_strict suffix is missing - if it's a problem then we can change it.
hb_i18n_ngettext_noop() is reduced only when it has valid parameters
The default plural index expression used for reduction at compile
time is: iif( <nExp> == 1, 1, 2 )
If second parameter of hb_i18n_ngettext_noop() is <cText> or <acText>
length is 1 then it's reduced to <cText> or acText[1] else if second
parameter is <acText> with more then 1 item then it's reduced to
<acText>[ iif( <nExp> == 1, 1, 2 ) ]
and if <nExp> is literal numeric expression is farther reduced to
given array item. Otherwise is not reduced and warning is generated.
The plural forms in .pot files are generated as:
msgid ""
msgid_plural ""
msgid_plural2 ""
[...]
msgid_pluralN ""
msgstr[0] ""
Then real message ID is only msgid (with context if any) and
msgid_plural* is used only for information. When the same msgid
is used more then once in different hb_i18n_ngettext*() calls then
plural messages are merged.
Please remember that for strict gettext compatibility only two plural
forms are allowed.
* extended i18n warnings for simple types validation, f.e.:
hb_i18n_gettext( .t. )
* do not generate empty .pot file when source code does not contain any
hb_i18n_*() functions
* store in .pot files references to real source file names with paths
respecting #include directives
* use hb_compIdentifierNew() to hash i18n messages at compile time
! fixed possible bad escape encoding of i18n strings
+ added support to control -j[01] flag using #pragma directive
Before I'll begin to work on runtime support please test these
modifications and inform me about problems you can see with the
above version and missing functionality.
* source/rtl/gtwvt/gtwvt.c
! Fix to previous fix to maximize the window when the initial
size would be too big to fit on screen (stupid omission).
Now the previously cited sizing problem is alright.
* source/vm/fm.c
+ Replaced HB_NO_FM_STAT and HB_FM_STAT envvars
with HB_FM_STAT=yes|no (maybe 0|1 or on|off woud be
better or could be accepted as alternatives or
replacement). This is to avoid ambiguity when both
envvars were set or the app default is not known.
+ Added HB_FM_STATISTICS_DYN_OFF to turn off mem tracking
by default when stat module is linked in.
* source/common/hbverdsp.c
* Minor cosmetic.
* make_vc.mak
+ TOFIX added for the case when HB_CC_NAME is overridden
by user and MT/DLL targets are being created.
* common.mak
* source/common/hbver.c
% Minor opts.
* source/common/hbverdsp.c
* Streamlined the /build information screen. It's now
more compact and now show if tracing is enabled. Max
symbol length got removed, ANSI C startup also, because
it needs a custom C flag anyway.
* include/hbvmpub.h
* include/hbsetup.h
* HB_SYMBOL_NAME_LEN moved away from custom setup.
This isn't an option users should normally tinker.
* tests/run_prg.bat
* Minor.
* harbour/include/hbapi.h
* harbour/source/common/hbstr.c
+ added hb_numToStr()
* harbour/source/vm/estack.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/gencc.c
* use hb_numToStr() for integer number conversions
* harbour/source/vm/dlmalloc.c
* disable #pragma warning ... in MinGW builds. If some newer MinGW
versions support it and it's useful then it can be enabled after
checking MinGW version
* make_b32.mak
* make_vc.mak
! Added hbpp.lib and hbcommon.lib to HBRUN_DLL liblist.
* include/hbapi.h
* source/vm/cmdarg.c
* source/common/hbver.c
* source/common/hbverdsp.c
* source/rtl/console.c
* source/rtl/setcolor.c
* source/rtl/setcurs.c
+ Added HB_EXPORT to some functions to make it possible
to build hbrun-dll.exe.
For other reasons, it only works if Harbour built with
set C_USR=-DHB_DYNLIB.
; TODO: Make HB_DYNLIB the default build mode, do gradual
steps to remove separate DLL building pass, and
finally to remove HB_BUILD_DLL option.
The only drawback will be about 10-100K
(currently) overhead in final executable size due
to included export table for BCC and MSVC builds.
* bin/hbmk.bat
+ Added support for 'owatcom' as HB_COMPILER.
; NOTE: If there are no objections I'll remove Harbour
support for 'watcom' HB_COMPILER, which was
used for old non-opensource version of this
compiler, but I guess it doesn't make too much
sense having them anymore.
* source/common/hbverdsp.c
* Minor change in /build output.
* include/hbver.ch
* source/rtl/version.c
* Changed ordering of parameter constants to make more sense.
* bin/hbmk.bat
* config/w32/owatcom.cf
* Removed 'debug all' linker option to make executable sizes
significantly smaller by default. If you need debug info,
use 'L_USR=debug all'.
; NOTE: I'd suggest doing the same for other platform supported
by owatcom. If there are no objections I can do this.
* source/rtl/gtwvt/gtwvt.c
* Typo, minor formatting.
* common.mak
* source/vm/Makefile
* source/vm/vmmt/Makefile
* source/common/Makefile
* source/rtl/Makefile
- source/vm/fmhb.c
+ source/rtl/fmhb.c
- source/vm/hbmem.c
+ source/common/hbmem.c
* Moved hbfm (MEMORY() .prg function) from VM to RTL.
* Moved hbmem (hb_xmem*() C functions) from VM to COMMON.
- contrib/hbziparc/hbzipcpp.old
- Removed.