* harbour/make_rpm.sh
* harbour/harbour.spec
* changed --without gpl to --without gpllib
* harbour/source/compiler/complex.c
* changed END terminal symbol used for END SEQUENCE to ENDSEQ
for better error reporting in wrong .prg code
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/complex.c
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
! moved function related variables and structures from HB_COMP to
PFUNCTION - it fixes many different problems which can appear in
some code, also the recent Mindaugas' example
! initialize statement value in error action to avoid valgrind/CodeGuard
warning reports when syntax error appear in some complex statements
* harbour/source/rtl/scrollbr.prg
* repalced TAB with SPACEs
* harbour/source/compiler/complex.c
! added casting to unsigned char to force syntax error when
some unknown tokens appear. Negative values bison recognizes
as end of input.
* harbour/contrib/rddads/adsmgmnt.c
! cleaned one warning
* contrib/rddads/ads.ch
* contrib/rddads/rddads.h
* contrib/rddads/adsfunc.c
* contrib/rddads/ads1.c
* contrib/rddads/adsmgmnt.c
* Lots of minor code cleanups, formatting fixes, optimizations,
and several minor fixes.
! Lib version related fixes. (some features were not updated
for newer ACE versions).
+ Automatic version detection extended with 6.20 and 5.00.
6.00 is still missing, if someone has it, pls send it to
me. Even 6.11-8.00 versions disappeared from the vendor's
site lately.
+ Added support for all possible properties in
ADSDDGETDATABASEPROPERTY()
ADSDDSETDATABASEPROPERTY()
* ADSMGGETUSERNAMES() will now always return an array of
users with 6 elements in each item, all data which
is not available for the compiled version of the lib,
will be filled with empty strings. Previously the
number of elements depended on the compiled version.
; Besides the above, no functionality change should be
experienced.
; Please test.
* contrib/rddads/make_b32.bat
* contrib/rddads/make_vc.bat
! Changed to never look for ace32.dll in system32 dir
to generate the ace32.lib.
! Some other fixes to prev change where ADS_VER
was obsoleted.
* contrib/hbct/ctwfunc.c
* contrib/hbct/ctextern.ch
+ Added hbct_MaxRow()/hbct_MaxCol() emulating
the original overloaded MaxRow()/MaxCol()
functions of CT3 lib.
* source/rtl/maxrow.c
* Reverted previous change on request, thus introducing
a 3rd party lib specific function parameter extension.
Users of CT3 lib's overloaded MaxRow(.T.)/MaxCol(.T.)
functions are encouraged to change the app code
to rather use hbct_MaxRow()/hbct_MaxCol()
or hb_ScrMaxRow()/hbScrMaxCol(). These functions are
easy to implement in CA-Cl*pper too (simple wrappers
to Max*()).
* source/compiler/hbmain.c
* Reverted previous change on request. Some outputs
are not exactly CA-Cl*pper compatible this way, but
functionally it probably doesn't matter for most ppl.
* contrib/xhb/hbcompat.ch
! Corrected MaxRow()/MaxCol()/hb_ScrMaxRow()/hb_ScrMaxCol()
translations. (hopefully, someone using xhb please test)
- tests/ctwtest.prg
+ contrib/hbct/tests/ctwtest.prg
* Moved CT lib specific test to contrib local test
directory (containing lots of other CT tests
already). Building these is yet to be solved.
* contrib/hbct/tests/math.prg
* contrib/hbct/tests/trig.prg
* contrib/hbct/tests/num1.prg
! Added SVN header.
* include/hbgtinfo.ch
* Minor comment.
* contrib/rddads/make_gcc.sh
* Help text sync with *.bat.
* contrib/rddads/make_b32.bat
* contrib/rddads/make_vc.bat
* contrib/rddads/ads.ch
* contrib/rddads/rddads.h
* contrib/rddads/ads1.c
* contrib/rddads/adsfunc.c
* contrib/rddads/adsmgmnt.c
+ Added ACE version autodetection.
You can override with: -DADS_LIB_VERSION=700 (and similar)
(ADS_REQUIRE_VERSION still accepted for compatibility)
! Fixed a few lib version related problems.
! hMgmtHandle global renamed to ads_g_hMgmtHandle.
* Formatting.
* contrib/rddads/rddads.h
+ QUESTION: added about ADS_MAX_KEY_LENGTH redefinition.
Is it needed?
* source/compiler/hbmain.c
* Changed output device (hb_compOutStd() -> hb_compOutErr())
for following texts:
"Compiling..."
"No code generated"
"Lines x, Functions/Procedures x"
This is to replicate CA-Cl*pper behaviour a bit more.
* include/hbextern.ch
* common.mak
* source/rtl/Makefile
* source/rtl/maxrow.c
+ source/rtl/scrrow.c
* contrib/xhb/hbcompat.ch
+ Added hb_ScrMaxRow(), hb_ScrMaxCol()
These will return the screen dimensions regardless
of the size of an active window (when using CT
windows for example). Functionality is the same
as MaxRow(.T.) and MaxCol(.T.) previously.
! MaxRow()/MaxCol() extended parameters removed.
+ Added MaxRow(.T.)/MaxCol(.T.) conversions for
xhb lib (hbcompat.ch) in both directions.
; XBase++ doesn't have any extended parameters
for Max*() function. Flagship has two of them,
both of them doing something different. CAVO doesn't
have these functions at all.
* contrib/xhb/hbcompat.ch
! GTI_* macros updated to HB_GTI_*.
* source/vm/memvclip.c
% Minor opt in __QQPUB().
* source/vm/extend.c
* 0 -> NULL
* source/vm/estack.c
- QUESTION removed.
* source/lang/msgbgmik.c
* source/rtl/console.c
* source/rtl/philes.c
* source/rtl/adir.prg
* source/rtl/getsys53.prg
* source/rtl/getsys.prg
* source/rtl/tget.prg
* source/rtl/ttopbar.prg
* source/rtl/pushbtn.prg
* source/rtl/mod.c
* source/rtl/memofile.c
* source/rtl/radiobtn.prg
* source/rtl/filesys.c
* source/rtl/tbrowse.prg
* source/vm/estack.c
* source/vm/itemapi.c
* source/vm/hvm.c
* source/vm/cmdarg.c
* source/vm/fm.c
* source/vm/eval.c
* source/common/hbver.c
* source/common/expropt2.c
* utils/hbtest/hbtest.prg
* utils/hbtest/rt_misc.prg
* utils/hbtest/rt_str.prg
! Comment fixes and minor formatting.
* harbour/include/hbclass.ch
* harbour/include/hbcomp.h
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/harbour.yyc
* harbour/source/compiler/harbour.y
! fixed -w3 warnings when class name is different then function name
* allow to overwrite predefined classes definitions
it's a dirty hack but current implementation of predefined
function and class declarations has to be rewritten from scratch
in the future so I make it intentionally - at least it resolves
some memory leaks like: harbour -n -w3 tbcolumn.prg
* harbour/config/rules.cf
* harbour/make_b32.mak
* harbour/make_gcc.mak
* harbour/make_vc.mak
* harbour/make_vcce.mak
* harbour/contrib/mtpl_b32.mak
* harbour/contrib/mtpl_gcc.mak
* harbour/contrib/mtpl_vc.mak
* changed default Harbour compiler switch -w2 to -w3
* harbour/contrib/xhb/xhbcomp.prg
* replaced repeated declarations by small hack
* harbour/utils/hbmake/tmake.prg
! fixed reported by -w3 repeated aDir declaration
* harbour/source/rtl/tbrowse.prg
* calculate frozen area size for 5-th element of array returned
by xbase++ compatible method :viewArea(). Viktor please check me.
If you can also describe what exactly TOFIX in :firstScrCol()
and :viewArea() means then maybe I can help - I do not have
xbase++ so I do not know what should be fixed.
* source/rtl/tget.prg
+ TGet instance variable ordering in class definition
made CA-Cl*pper compatible, so that it's now possible to
access object vars as array elements the same way.
Read-only access is strongly recommended when using this
unofficial access method, and the practice is overall
discouraged.
NOTE: oGet[8] is not supported in Harbour.
NOTE: in oGet[11] (in C52 mode), oGet[17] (in C53 mode)
only the first char is compatible, which is the
type. The rest is 'trash' in CA-Cl*pper.
* tests/rto_get.prg
+ Extended tests with regards to array access of the
TGet object.
* source/rtl/tbcolumn.prg
* Formatting.
* source/common/hbstr.c
* source/compiler/ppcomp.c
* source/compiler/hbgenerr.c
* utils/hbpp/hbpp.c
! Fixed some BCC58 warnings.
; TOFIX: These remain:
Warning W8017 C:\devl\BCC58\Include\stdint.h 77: Redefinition of 'INT16_MIN' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 78: Redefinition of 'INT32_MIN' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 79: Redefinition of 'INT64_MIN' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 82: Redefinition of 'INT16_MAX' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 83: Redefinition of 'INT32_MAX' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 84: Redefinition of 'INT64_MAX' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 87: Redefinition of 'UINT16_MAX' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 88: Redefinition of 'UINT32_MAX' is not identical
Warning W8017 C:\devl\BCC58\Include\stdint.h 89: Redefinition of 'UINT64_MAX' is not identical
Warning W8084 source\rtl\hbinet.c 507: Suggest parentheses to clarify precedence in function HB_FUN_HB_INETINIT
* utils/hbtest/rt_main.h
! Typo.
* utils/hbtest/make_c5x.bat
+ Cleanups, fixes, enhancements.
* Changed invocation for C53. Now "53" (without quotes)
should be used as command line parameter.
+ Now automatically selects linker.
! Fixed MSC parameters for C53.
+ Copyright added.
* harbour/include/hbcomp.h
* harbour/include/hbmacro.h
* harbour/include/hbexprb.c
* harbour/source/vm/macro.c
* harbour/source/compiler/hbmain.c
! fixed name conflict in privates/publics declaration.
Harbour allows to declare memvars with the same name as file
wide statics or fields but this extensions was not working well
in some cases and can cause unexpected results in variable
declaration, f.e. try this code:
static v:="static"
proc main()
public v:="public"
? v, M->v
return
compiled with -n -w switches and also with -n -w -a before
this fix.
! fixed some compile time warnings in memvars declaration to be
more Clipper compatible
! fixed compiling external modules (DO <procname> [WITH <params,...>])
when function <procname> is already declared but with different
letter case. Harbour does not convert <procname> in DO statement
to upper case to play well with case sensitive file systems and
it could cause confusing warning message:
Cannot open <procname>.prg, assumed external
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
! added protection against bug in bison destructors which might cause
multiple free the same memory block on syntax error due to
* harbour/source/rdd/dbf1.c
! added missing binary flag for daytime fields
* harbour/source/rdd/dbfntx/dbfntx1.c
! fixed possible memory leak during accessing corrupted NTX files
! fixed possible GPF during accessing corrupted NTX files
* harbour/source/compiler/genc.c
* minor cleanup
* harbour/config/os2/global.cf
! use FOR command to delete group of files
* harbour-ce-spec
* harbour-w32-spec
* bin/bld.bat
* harbour.spec
* common.mak
* source/pp/Makefile
* source/lang/Makefile
* source/macro/Makefile
* source/rtl/Makefile
* source/vm/mainstd/Makefile
* source/vm/Makefile
* source/vm/mainwin/Makefile
* source/main/Makefile
* source/debug/Makefile
* source/codepage/Makefile
* source/common/Makefile
* source/rdd/nulsys/Makefile
* source/rdd/Makefile
* source/rdd/hsx/Makefile
* source/rdd/usrrdd/Makefile
* source/compiler/Makefile
* contrib/hbct/tests/Makefile
* contrib/hbodbc/tests/bld_b32.bat
* contrib/hbole/tests/bld_b32.bat
* contrib/hbapollo/tests/bld.bat
* contrib/hbfbird/tests/bld_b32.bat
* contrib/hbfbird/tests/Makefile
* contrib/hbpgsql/tests/Makefile
* contrib/hbfimage/tests/bld_b32.bat
* contrib/hbgd/tests/bldtest.bat
* contrib/hbmisc/tests/Makefile
* contrib/hbgf/tests/bld_b32.bat
* contrib/hbbtree/tests/Makefile
* contrib/examples/guestbk/Makefile
* contrib/examples/pe/Makefile
* contrib/examples/dbu/Makefile
* contrib/examples/misc/Makefile
* contrib/examples/hscript/Makefile
* utils/hbdoc/Makefile
* utils/hbextern/Makefile
* utils/hbdot/Makefile
* utils/hbmake/Makefile
* utils/hbmake/hbmutils.prg
* utils/hbmake/hbmake.prg
* utils/hbpp/Makefile
* utils/hbpptest/Makefile
* utils/hbtest/Makefile
* utils/hbrun/Makefile
* tests/Makefile
* Core libs renamed to be prefixed with hb, while
having the first significant 5 chars unique.
Old name New name
-------- --------
codepage -> hbcpage
common -> hbcommon
compiler -> hbcplr
debug -> hbdebug
hbsix -> hbsix
hsx -> hbhsx
lang -> hblang
macro -> hbmacro
pp -> hbpp
rtl -> hbrtl
vm -> hbvm
rdd -> hbrdd
dbfcdx -> rddcdx
dbffpt -> rddfpt
dbfntx -> rddntx
nulsys -> hbnulrdd
usrrdd -> hbusrrdd
mainwin -> hbmainwin
mainstd -> hbmainstd
NOTE/TODO: We're currently not in sync with contribs,
regarding hb prefixing, since in contrib
rdds and gts (rightly) also have hb prefixes.
The only reason not to add them in core this
time, is to keep compatibility with DJGPP.
Maybe we should remove those prefixes from
contrib.
NOTE/TODO: Do tests in as many platforms and as many contrib
tests as possible. Feedback from hbmake users is
also welcome.
!!! Please update your local make files !!!
* include/hbgtinfo.ch
+ Added HB_ prefixed versions for all GTI_ macros.
Unprefixed GTI_ macros are to be considered xhb
compatible (or legacy) ones, and they can be
excluded by #defining HB_GT_NO_XHB if they seem to
collide with user code.
TODO: Switch to use HB_GTI_* inside Harbour code.
* harbour/include/hbapiitm.h
* harbour/source/vm/itemapi.c
+ added new functions:
BOOL hb_itemParamStore( USHORT uiParam, PHB_ITEM pItem )
BOOL hb_itemParamStoreForward( USHORT uiParam, PHB_ITEM pItem )
They copy/move pItem body to parameter passed by reference and
return TRUE when operation was done successfully (uiParam was passed
by reference)
+ added new functions for string manipulation:
char * hb_itemLockReadCPtr( PHB_ITEM pItem, ULONG * pulLen );
char * hb_itemLockWriteCPtr( PHB_ITEM pItem, ULONG * pulLen );
void hb_itemUnLockCPtr( char * pszString );
It's recommended to use them instead of hb_itemGetCPtr().
Pointer to string buffer returned by hb_itemLockReadCPtr() will
be always valid even if source item will be cleared, destroyed or
overwritten until hb_itemUnLockCPtr() is called. Each locked string
has to be unlocked to avoid memory leaks. After unlocking the string
pointer cannot be longer used.
hb_itemLockWriteCPtr() works like hb_itemLockReadCPtr() but string
pointer returned by this function is writable so user can change
the body of string item. It's the _ONLY_ one way when it's possible.
Modifying string items using pointers returned by hb_parc() or
hb_itemGetCPtr() or extracted directly from HB_ITEM body is _FORBIDDEN_
and can cause unpredictable results (GPF when constant/readonly memory
pages are changed, changing many different items which share the same
memory buffer, etc.).
This is code illustrates how to use hb_itemLockReadCPtr()/
hb_itemUnLockCPtr() and it's also good example why hb_itemGetCPtr()
is very danger function and cannot be used in such case - if you
replace hb_itemLockReadCPtr() with hb_itemGetCPtr() and remove
hb_itemUnLockCPtr() then you will have buggy code.
HB_FUNC( MYFUNC )
{
PHB_ITEM pObject = hb_param( 1, HB_IT_OBJECT )
if( pObject )
{
char * pszName1, * pszName2;
PHB_ITEM pResult;
pResult = hb_objSendMsg( pObject, "POP", 0 );
pszName1 = hb_itemLockReadCPtr( pResult, NULL );
pResult = hb_objSendMsg( pObject, "POP", 0 );
pszName2 = hb_itemLockReadCPtr( pResult, NULL );
if( pszName1 && pszName2 )
hb_retc_buffer( hb_xstrcpy( NULL,
"[", pszName1, "]-[", pszName2, "]", NULL ) );
hb_itemUnLockCPtr( pszName1 );
hb_itemUnLockCPtr( pszName2 );
}
}
This code shows how to use hb_itemLockWriteCPtr():
proc main()
local cVal, cVal2
cVal := cVal2 := "ABC"
STRPUT( @cVal2, 2, 42 )
? cVal, cVal2
return
#pragma begindump
#include "hbapiitm.h"
HB_FUNC( STRPUT )
{
PHB_ITEM pString = hb_param( 1, HB_IT_STRING );
ULONG ulAt = hb_parnl( 2 );
if( pString && ulAt && ISNUM( 3 ) )
{
ULONG ulLen;
char * pszValue;
pszValue = hb_itemLockWriteCPtr( pString, &ulLen );
if( pszValue )
{
if( ulAt <= ulLen )
pszValue[ ulAt - 1 ] = ( char ) hb_parni( 3 );
hb_itemUnLockCPtr( pszValue );
}
}
}
#pragma enddump
* harbour/include/hbcompdf.h
* harbour/include/hbexprop.h
* harbour/include/hbexprb.c
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/cmdcheck.c
* harbour/source/compiler/hbusage.c
* removed HB_I18N_SUPPORT macro and enabled I18N code in default build
* harbour/include/hbexprb.c
* harbour/source/compiler/hbmain.c
! added string escaping before to i18n .pot files
+ added hb_i18n_gettext_strict() support for compiler. This function
generates warning if argument is not literal string. See discussion
on mailing list from 2007-11-23 to 2007-11-29, for details.
* harbour/source/vm/estack.c
* added missing static to s_initSymbol declaration
* harbour/include/hbgtinfo.ch
* harbour/source/rtl/scroll.c
* formatting
* harbour/common.mak
* added empty line necessary for some make systems (f.e. wmake)
* harbour/bin/hb-func.sh
* changed system libs order to avoid problems on some platforms
* harbour/bin/pack_src.sh
* collect information about repository files using 'svn status -v'
command instead of scanning .svn/entries files to avoid problems
with different formats used by SVN
* harbour/include/hbchksum.h
* harbour/include/hbset.h
! added missing extern in few function prototypes
* harbour/include/hbclass.ch
* use HB_CLS_PARAM_LIST macro instead of ... for strict C52 mode
* harbour/source/common/hbfsapi.c
+ added missing const to one declaration
* harbour/source/common/hbstr.c
* minor cleanup in hb_stricmp()
* harbour/source/rtl/inkey.c
! casting to avoid negative values during char to int translation
* harbour/source/rtl/mouse53.c
* added one internal definition
* harbour/source/rtl/philes.c
* removed unnecessary #include(s)
* added missing const to one declaration
* harbour/source/rtl/valtype.c
* harbour/source/vm/hashfunc.c
* cleanup RT error call to eliminate hb_paramError() function
* harbour/source/pp/pplib.c
* harbour/source/vm/runner.c
* harbour/source/vm/debug.c
* harbour/source/vm/arrayshb.c
* harbour/source/vm/classes.c
* harbour/source/vm/hvm.c
* harbour/source/rtl/hbgtcore.c
* harbour/source/rtl/gtfunc.c
* harbour/source/rtl/hbinet.c
* harbour/source/rtl/hbregex.c
* harbour/source/rtl/idle.c
* harbour/source/rtl/errorapi.c
* harbour/source/rtl/hbtoken.c
* harbour/source/rtl/direct.c
* harbour/source/rdd/dbcmd.c
* harbour/source/rdd/dbcmd53.c
* harbour/source/rdd/fieldhb.c
* harbour/source/rdd/hbsix/sxcompr.c
* harbour/source/rdd/hbsix/sxcrypt.c
* harbour/source/compiler/hbcmplib.c
* harbour/contrib/hbrddads/adsfunc.c
* harbour/contrib/hbrddads/adsmgmnt.c
- removed unnecessary calls to hb_ret()
% replaced hb_itemRelease( hb_itemReturn( pItem ) ) with
hb_itemReturnRelease( pItem )
% replaced hb_itemPut*( hb_arrayGetItemPtr( pArray, ... ), ... ) with
hb_arraySetNI( pArray, ... )
* harbour/source/macro/macro.y
* harbour/source/macro/macro.yyc
* harbour/contrib/xhb/cstructc.c
* harbour/contrib/hbw32/w32_ole.c
* harbour/contrib/hbgtwvg/wvtcore.c
* cleaned typos with double ;;
* harbour/source/vm/extend.c
* harbour/source/rtl/math.c
* cleaned HB_EXPORT usage
* harbour/source/pp/ppcore.c
! fixed Harbour extension which allows to use match marker
at the beginning of rule definition
* harbour/source/main/harbour.c
! fixed hex conversion in FM log module - fix done by Phil Krylov
in xHarbour
* harbour/source/rdd/nulsys/nulsys.c
+ added dummy version of DBEVAL() and DBFILTER() - these functions
are used in RTL
* harbour/contrib/hbct/bitnum.c
+ added INTNEG(), INTPOS()
+ harbour/contrib/hbct/ctrand.prg
+ added RANDOM(), RAND() - borrowd from xHarbour by Pavel Tsarenko
+ harbour/contrib/hbct/setrc.c
+ added SETRC()
* harbour/contrib/hbct/getinput.prg
% minor optimization
* harbour/contrib/hbct/Makefile
* harbour/contrib/hbct/common.mak
* updated for new files
* harbour/contrib/hbnf/tempfile.prg
* use HB_FTempCreate() - modification borrowed from xHarbour
TOFIX this function uses hb_isbyref() which does not exist
in Harbour
* harbour/config/w32/msvc.cf
+ added -nologo flag for cl.exe (Phil Krylov's modification borrowed
from xHarbour
* harbour/config/w32/mingw32.cf
- removed repeated definitions
* harbour/config/w32/install.cf
! added alternative install rule for command.com with max line size limit
* harbour/source/compiler/hbmain.c
* make all hb_compI18n*() functions which do not need external access
static - now only hb_compI18nAdd() is public function. If it will
be necessary to make other functions public then we will make it
but please always try to declare new functions as static if it's
not necessary to access them externally - it helps in future
modifications because we do not have to worry about external
code which may access some functions.
* harbour/config/hpux/gcc.cf
* added commented -mlp64 GCC switch to CFLAGS and LDFLAGS - this
switch forces 64-bit mode in HP-UX on IA64
* harbour/source/common/hbwince.c
+ added wrapper for LocalHandle() and direct translation for LocalLock()
* harbour/config/w32/cemgw.cf
+ added commdlg, commctrl, luuid and ole32 to linked library list
for some contrib code
* harbour/include/hbwmain.c
* harbour/source/vm/mainwin.c
! fixed unnecessary conversion of WinMain() parameters on W32/W64
when UNICODE macro is set - thanks to Chen
* harbour/source/rdd/sdf1.c
* harbour/source/rdd/delim1.c
! fixed code wrongly synced with xHarbour - in Harbour HB_SET_EOL
is char* not PHB_ITEM - thanks to Andi
* harbour/source/compiler/genc.c
! fixed file name in generated for C inline code by escaping
special characters - thanks to Andi
* harbour/source/rtl/gtwvt/gtwvt.c
* minor code cleanup
* harbour/contrib/gtwvg/wvtcore.c
! fixed setting default foreground and background color when user
does not pass it's own one. Previous versions was using _s->background
and _s->foreground - it was wrong because this variables in all
GTWVT base GTs (also in xHarbour) contains not default color but
the color recently used to redraw some part of screen - f.e. after
exposing some region - it means that they can have any value.
Such bugs are hard to locate because the same program can be executed
many times without any problem and suddenly he will use wrong colors
drawing sth - if you observed such effect then it can be the results
of the above problem. Now default color is taken from core GT code.
Two functions make it: hb_wvt_FgColorParam() and hb_wvt_BgColorParam()
Both accept also colors passed as standard Clipper strings.
The same should be also fixed in xHarbour just like the problem with
executing registered user functions when HVM is closing fixed in
previous commit - even if now it does not cause GPF (due to race
condition it may be exploited only sometimes) then it does not mean
it works correctly.
* harbour/doc/man/harbour.1
* harbour/source/compiler/hbusage.c
+ added description for -j switch
* harbour/include/hbexprb.c
* replaced // comments by /* */
* accept <cContext> (domain) parameters of HB_i18nGettext() when
number of parameters is two or more
Should we generate compile time warning when wrong number of
parameters is passed to this function or they are not literal
strings? Maybe only after -j+ or sth like that?
* harbour/include/hbclass.ch
* harbour/include/tbrowse.ch
* harbour/include/hbpers.ch
* harbour/include/getexit.ch
* replaced // comments by /* */
* harbour/source/compiler/hbmain.c
! fixed bad typo in hb_compI18nAdd() and memmove() range which can
cause GPF
* changed pFileName to FileName in hb_compI18nSave() to respect used
by us naming convention
* eliminated strcpy() - do not use strcpy()/strcat() - these functions
are reported as dangerous by security restrict compilers.
I suggest to use hb_strncpy()/hb_strncat() instead (remember about
different size meaning in these functions) or some others depending
on context (f.e. hb_strdup() in this case)
* harbour/source/include/hbcompdf.h
* harbour/source/include/hbexprop.h
* harbour/source/include/hbexprb.c
* harbour/source/compiler/cmdcheck.c
* harbour/source/compiler/hbmain.c
+ added i18n support
Implemented -j[filename] switch to indicate output filename. Default
filename is <sourcefilename>.pot. If switch -o is used, this file
is created in speficied output path.
Output file format is compatible with 'gettext' utils, but not all
available features are implemented.
Harbour level function HB_i18nGettext( cText [, cContext ] ) sould be
used to indicate translatable strings.
All this commit is commented using #ifdef HB_I18N_SUPPORT and is in
development stage. Please, do not use it yet.
* harbour/make_xmingwce.sh
* harbour/make_xmingw.sh
* do not create compiler binaries in cross builds
* use hbce and hbw prefixes for generated build scripts
* harbour/make_tgz.sh
* use strip from cross compiler instead of native one
* harbour/include/Makefile
+ added missing header files
* harbour/harbour.spec
* minor cleanup
* harbour/source/compiler/cmdcheck.c
* accept internal option delimiters in define value
(-d option, f.e.: '-dABC="QWE-ASD"')
+ harbour/include/hbassert.h
* harbour/include/hb_io.h
* harbour/source/rtl/gtstd/gtstd.c
* harbour/source/rtl/gtpca/gtpca.c
* harbour/source/rtl/fssize.c
* harbour/source/rtl/hbinet.c
* harbour/source/rtl/filesys.c
* harbour/source/compiler/hbfix.c
* harbour/source/compiler/hbpcode.c
* harbour/source/compiler/hbdead.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/hbopt.c
* harbour/source/compiler/gencc.c
* harbour/source/compiler/hblbl.c
* harbour/source/compiler/hbstripl.c
* harbour/utils/hbver/hbverfix.c
* harbour/utils/hbpp/hbppcore.c
* removed dependences to unsupported by new MSVC header files
most of this modifications can be enabled also for standard Win32
builds
* harbour/source/common/hbwince.c
* do not create dummy LocalLock() and LocalUnlock() function in MSVC
WinCE builds
* harbour/source/rtl/gtwin/gtwin.c
+ added HB_WINCE_USE_POCKET_CONSOLE macro which enable
console support in WINCE builds (macro suggested by Marek Paliwoda)
* harbour/source/rtl/gtwvt/gtwvt.h
* harbour/source/rtl/gtwvt/gtwvt.c
* changed default window and font size on WinCE to values suggested
by Marek Paliwoda
Marek if you have a while please make test with MSVC WinCE/PocketPC
builds and current SVN code.
* source/rtl/tpopup.prg
! Fixed a few problems regarding HB_EXTENSION guards.
(one method declaration was mistakenly guarded, and one
IF construct broke when compiled without HB_EXTENSION)
* source/rtl/mlcfunc.c
* source/rtl/alert.prg
! Fixed unused var warnings when HB_EXTENSION is off.
* contrib/hgf/tests/bld_b32.bat
! Some more fixes. (removed hard coded BCC path, and
a few wrong dirs)
; For me form3.hbf works without a closing EOL, under Windows.
So the problem might rather be something else. For sure though,
HBPersistent()'s EOL detection and handling is not portable (TOFIX).
* source/compiler/hbcomp.c
! Reverted previous change for non-Unix platforms, regaring
command-line output. Now Harbour will again use stderr/stdout
about the same way CA-Cl*pper does. However odd this is,
most DOS/Windows programs work this way, so the "when in Rome"
rule got in effect here. Otherwise, any DOS/Windows build
output (BC/VC/GCC) goes to stdout, _except_ Harbour
errors/warnings, and this is not a good thing. Still, the
//STDOUT:, //STDERR: switches could come handy to override
the platform defaults.
* source/compiler/hbcomp.c
! Changed error messaged to go to stderr on non-Unix
platforms too. With this change the Harbour compiler
uses the same output on non-Unix platforms as on Unixes.
With Przemek's previous and now this change, the
compiler uses stdout/stderr in the standard way
(messages to stdout, warnings/errors to stderr),
instead of being more or less CA-Cl*pper compatible.
(in CA-Cl*pper startup msg plus some info went to
stderr and errors/warnings and some other progress
info went to stdout)
* source/compiler/hbusage.c
+ Added -f* switches to help screen.
* source/compiler/cmdcheck.c
! -r=<max> -> -r:<max>
* contrib/libct/screen2.c
* contrib/libct/cursor.c
* contrib/libct/ctstrfil.c
! Fixed MSVC warnings.
* contrib/libct/make_b32.bat
* contrib/libct/make_vc.bat
* contrib/htmllib/Makefile.bc
* Changed to not generate .ppo output on build.
* contrib/libct/make_b32.bat
* contrib/libct/make_vc.bat
- contrib/libct/makefile.bc
- contrib/libct/makefile.vc
+ contrib/libct/common.mak
+ contrib/maketpl.b32
+ contrib/maketpl.vc
+ contrib/maketpl.mak
+ Added BC/VC non-GNU generic make script for contribs.
+ Using the above generic make scripts to build LIBCT.
Notice BC/VC now uses one make file per contrib project
named common.mak. The two helper batch files are essentially
identical for BC and VC, and there is no reduancy or any
complexity in common.mak (they much resemble in content
to Makefile).
Notice that with this new system users have to call
make_[b32|vc].bat INSTALL in order to get the libs and
headers installed in the final lib/header destinations.
(This step was previously done automatically by the .bat
files in LIBCT - or maybe not in other contribs.)
The new scripts also have a generic CLEAN functionality.
; Thanks Marek Paliwoda for the generic make scripts.
* harbour/include/hbwince.h
* put functions declarations inside HB_EXTERN_BEGIN / HB_EXTERN_END
+ harbour/include/hbwmain.c
+ added WinMain() to main() wrapper
* harbour/include/hbexprb.c
* harbour/source/common/expropt1.c
! fixed typo reported by Chen
* harbour/source/pp/hbppgen.c
* harbour/source/main/harbour.c
* harbour/utils/hbpp/hbpp.c
* use hbwmain.c when main() is not supported by C compiler/platform
* harbour/source/rtl/gtwin/gtwin.c
* include wincon.h in all builds except LCC
* harbour/source/rtl/fserror.c
* harbour/source/rtl/fstemp.c
* harbour/source/rtl/filesys.c
* use HB_OS_WIN_32_USED as in other files (still on TOFIX list)
* harbour/source/rtl/seconds.c
+ added HB_OS_WIN_32_USED
* harbour/source/compiler/hbcomp.c
! fixed typo: stderr was used instead of stdout
* harbour/utils/hbmake/hbmlang.c
* pacify some other data lost conversion warnings by explicit casting
* harbour/source/compiler/harbour.y
* cleaned explicit comparison with TRUE value
* harbour/source/compiler/harbour.yyc
* rebuild with all recent cleanup in harbour.y
* harbour/include/hbcomp.h
* harbour/include/hbmacro.h
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/harbour.y
* harbour/source/vm/macro.c
* harbour/source/vm/garbage.c
* harbour/source/vm/hvm.c
* harbour/source/vm/classes.c
* harbour/source/rdd/dbf1.c
* harbour/source/rdd/dbffpt/dbffpt1.c
* harbour/source/rtl/binnum.c
* harbour/source/rtl/gtwvt/gtwvt.c
* added explicit casting or changed some declarations to avoid
warning about possible data lost in conversions
* harbour/source/rtl/direct.c
% optimized directory array creation and fixed one TOFIX note
I left few warnings intentionally to mark places which should be
updated in the future (f.e. HB_SYMBOLSCOPE translations).
Victor, if you can please make build test with MSVC builds and
send the list of warnings which still exist to harbour-devel.
* harbour/contrib/bmdbfcdx/bmdbfcdx1.c
* replaced all direct access to hb_set structure with functions
Now it's possible to link bmdbfcdx with harbour.dll but because
it still access hb_cdp_page then only if linker supports auto
import conversions
* harbour/source/common/hbfsapi.c
* harbour/source/main/harbour.c
* harbour/source/pp/hbppgen.c
* harbour/utils/hbpp/hbpp.c
* added filename conversion (hb_fsNameConv()) to hb_fsFileExists()
function
* harbour/include/hbapifs.h
+ harbour/source/common/hbfopen.c
* harbour/source/common/Makefile
* harbour/common.mak
+ added hb_fopen() function - it's a wrapper to fopen() function but
calls internally hb_fsNameConv()
* harbour/source/pp/hbppgen.c
* harbour/source/pp/ppcore.c
* harbour/source/common/hbtrace.c
* harbour/source/compiler/hbmain.c
* harbour/source/compiler/genhrb.c
* harbour/source/compiler/gencobj.c
* harbour/source/compiler/genobj32.c
* harbour/source/compiler/genc.c
* harbour/source/rtl/gtchrmap.c
* harbour/source/vm/fm.c
* use hb_fopen() instead of fopen()
* doc/howtosvn.txt
+ Added few propset command. Would need some more cleanup.
* contrib/win32/test/testw32p.prg
; Formatting
* source/common/hbfsapi.c
! Minor fixes.
* source/compiler/hbusage.c
+ Added (c) after copyright.
- lib/b16
- obj/b16
- Removed not needed directories.
* include/hbapifs.h
* source/common/hbfsapi.c
! Added missing HB_EXPORTs.
+ Added hb_fsFileExists(). This is the preferred way to check
for the existence of a file, because it is fast and will
find a file even of directory traversal is not possible
for the file's directory. Works the same way as file
existence check in most other tools.
; NOTE: DOS branch was not compiled or tested (it is a
rewrite of a tested ASM function though).
* common.mak
* include/hbextern.ch
* source/rtl/Makefile
+ source/rtl/hbfile.c
+ Added HB_FILEEXISTS() Harbour level function to check
for the existence of a file. This works better than
FILE() in most situations, but it doesn't accept any
wildcards.
* source/compiler/gencobj.c
! Fixed to not used access(). Using hb_fsFileExists() instead.
* include/hbsetup.h
- Removed HOST_OS_UNIX_COMPATIBLE which was a misleading
alias for OS_UNIX_COMPATIBLE.
* source/compiler/hbcomp.c
% HOST_OS_UNIX_COMPATIBLE -> OS_UNIX_COMPATIBLE
* common.mak
* harbour-ce-spec
* make_xmingw.sh
* make_xmingwce.sh
* makefile.bc
* makefile.gc
* makefile.vc
* source/pp/Makefile
- source/pp/ppgen.c
+ source/pp/hbppgen.c
! executable ppgen renamed to hbppgen.
* samples/pe/editorlo.c
* samples/pe/pe.prg
+ samples/pe/bld_b32.bat
+ Added BCC build batch file.
! Fixed to compile under current Harbour.
! Fixed filename casing.
! Fixed several warnings (quite some signedness problem still remain).
; This is a very nice editor written in C (Harbour callable),
I think it is the work of Ryszard.
* samples/hscript/bld_b32.bat
* samples/hscript/hscript.prg
* samples/hscript/dir.hs
* samples/hscript/multiply.hs
* samples/hscript/ugly.hs
* samples/hscript/hello.hs
! Fixed build batch file.
! Fixed to use NFLib file IO rather than libmisc, because
latter was broken (it is a clone of the NFLib file IO).
! Fixed scripts to use Start instead of Main as an entry
point otherwise __hrbRun() got confused and called the
app Main().
! Fixed some other problems to make it run.
* source/rtl/isprint.c
! Fixed ISPRINTER() on Win32 after last changes.
Thanks Guillermo, pls test now.
* source/rdd/dbcmd.c
! Marked as HB_EXTENSION: FIELDLEN(), FIELDDEC(), FIELDTYPE()
* include/hbextern.ch
* source/rdd/dbcmd.c
! Marked as HB_EXTENSION: DBDROP(), DBEXISTS(), RDDINFO()
(they were properly marked in hbextern.ch but not in source)
* include/hbextern.ch
* source/rtl/disksphb.c
* source/rtl/fssize.c
* source/rtl/fstemp.c
* source/rtl/inkey.c
* source/rtl/oemansi.c
* source/rtl/philes.c
* source/rtl/setcolor.c
* source/rtl/setfunc.prg
* source/rtl/setkey.c
* source/rtl/shadow.c
* source/rtl/trace.c
* source/rtl/valtostr.c
* source/vm/dynsym.c
+ Removed HB_EXTENSION from all the .prg level functions
prefixed with HB_.
(there was a mixed situation here, but there's no need
to mark any HB_ functions as extensions, as it's obvious
by their name. So as a rule, no HB_ prefixed function
should ever be marked as HB_EXTENSION anymore.)
! Fixed some inconsistencies in HB_EXTENSION between
hbextern.ch and actual sources.
* source/rtl/tgetlist.prg
* One HB_EXTENSION changed to !HB_C52_STRICT because it
was guarding a bugfix rather than a real extension.
* source/rtl/gui.prg
* _GetNumCol() is now always strictly compatible.
NOTE added about sloppy C5.3 behaviour.
* source/rtl/inkey.c
* contrib/xhb/xhb.ch
* contrib/xhb/xhbfunc.c
! __KEYBOARD() xhb hidden parameter extension moved to
xhb lib. For similar functionality inside Harbour
pls use HB_KEYPUT(). __KEYBOARD is now 100% C5.x
compatible.
* source/rtl/setfunc.prg
* __SetFunction() extension now uses HB_KEYPUT() instead
of __KEYBOARD() extended parameters.
* source/compiler/hbfunchk.c
* source/rtl/at.c
! AT() extra parameters handled when HB_EXTENSION is on
(was !HB_C52_STRICT). (The first extra parameter is
XPP and Flagship compatible. The three parameter version
of this function is called AT3() in CAVO.)
! TRIM()/RTRIM() extra parameters handled on compiler level
when HB_EXTENSION is on (default).
! FILE() parameter check turned off in compiler.
(to be C5.x compatible)
* source/rtl/alert.prg
! ALERT() Harbour extended parameter (1st parameter type)
is now guarded with HB_EXTENSION instead of HB_C52_STRICT.
* source/rtl/gete.c
! GETE[NV]() Harbour extended parameter guarded with HB_EXTENSION.
* source/vm/proc.c
! PROCFILE() Harbour extended parameter guarded with HB_EXTENSION.
* source/rtl/mlcfunc.c
! Harbour extended parameters for MEMOLINE()/MLCOUNT()/
MLPOS()/MLCTOPOS()/MPOSTOLC() are now guarded with HB_EXTENSION
(instead of HB_C52_STRICT). It seems to be possible to
specify custom EOLs for all these functions. (Maybe simple
automatic Unix/Win EOL style handling would be better here)
* source/vm/memvars.c
! Guarded Harbour extension in __MVRESTORE() with HB_EXTENSION.
; After this cleanup:
- HB_EXTENSION is marking extra features living inside existing C5.x
functions or classes, or Harbour extension functions
not complying with the HB_ prefix rule (we have six
such functions in RDD). If there are more extended
parameters in Harbour pls mark them with HB_EXTENSION
too.
- HB_C52_STRICT is guarding bugfixes compared to C5.x.
- No HB_ functions are guarded with HB_EXTENSION anymore.
- We'd pbly need to review each HB_EXTENSIONs to check whether they
are safe or not.
- A list of HB_EXTENSIONs:
- MLCOUNT()
MEMOLINE()
MLPOS()
MLCPOS()
MPOSTOLC() - 5th and up can specify custom EOLs.
- ALERT() - 1st parameter type can be any type in Harbour, char only in C5.x
- SET FUNCTION TO
__SETFUNCTION - 2nd parameter can be numeric or array of numeric in Harbour.
- SETKEY() - 3rd codeblock parameter ("isactive" block)
- SAVESCREEN() - 5th parameter: lNoCheck (?)
RESTSCREEN() - 6th parameter: lNoCheck (?)
- AT() - 3rd and 4th parameters to set search range. 3rd parameter is
also supported by XPP and FS. Results in compiler error in C5.x.
(CAVO uses AT2() and AT3() for extended versions.)
- TRIM()
RTRIM() - 2nd parameter is an extension regarding space trimming mode.
Results in compiler error in C5.x.
- ALLTRIM() - 2nd parameter is an extension regarding space trimming mode.
- GETE()
GETENV() - 2nd parameter specifies a default value. Can be found in HB_GETENV().
- PROCFILE() - 1st parameter is a Harbour extension. Undocumented function in C5.x.
The extension looks similar to the one found in Flagship.
- __MVRESTORE() - 3rd/4th parameters are Harbour extensions to set variable name
mask. Redirected from the internal 5.x function named __MRESTORE().
- DB*() - cRDD, nConnection, cCodePage extra parameters in many DB*() functions.
TOFIX: None of them is marked as HB_EXTENSION.
- SET()s - These are not marked as HB_EXTENSION.
- ? - Is there anything else?
* source/rtl/tbcolumn.prg
! Strict C5.2e compatible behaviour made the default.
* source/rtl/inkey.c
+ Added handling of arrays of numbers in HB_KEYPUT().
(this was copied from __KEYBOARD()'s extended section)
+ Added handling of string parameter in HB_KEYPUT().
(this way we don't really need the hidden extensions
in __KEYBOARD() anymore. Also notice that __KEYBOARD()
doesn't clear the keyboard buffer when numeric or
array is passed, which is not consistent with the
Clipper compatible behaviour when strings are passed.)
* common.mak
* include/hbcompdf.h
* source/compiler/hbmain.c
* source/compiler/cmdcheck.c
* source/compiler/hbcomp.c
* source/compiler/harbour.l
* source/compiler/Makefile
* source/compiler/ppcomp.c
* source/compiler/hbusage.c
- source/compiler/genjava.c
- source/compiler/gencli.c
- Removed two non-working (experimental) output types:
Java, CLI
! Prefixed LANG_* enums with HB_
* harbour/doc/destruct.txt
* update description for multiple inherited destructors
* harbour/source/compiler/complex.c
* _HB_CLASS and _HB_MEMBER are not longer reserved words
* harbour/include/hbclass.ch
* harbour/include/hbexprop.h
* harbour/include/hbexprb.c
* harbour/source/macro/macro.y
* harbour/source/compiler/harbour.y
* formatting and minor code cleanup
* harbour/source/compiler/hbusage.c
* added missing information about -undef:<id> switch to usage
description
* harbour/source/compiler/gencc.c
! fixed bug reported by Teo in code generated for SWITCH statement
* harbour/source/vm/runner.c
* harbour/source/compiler/genhrb.c
! added support for functions marked as DYNAMIC in .hrb format
* harbour/source/compiler/complex.c
+ finished code (stil disabled) to decode datetime in
VFP strict date form
* harbour/source/vm/hvm.c
* do not clear references to public functions in symbol tables used
by unloaded modules
* harbour/source/compiler/complex.c
+ added disabled yet code to decode datetime in VFP strict date form
{^YYYY/MM/DD[,][HH[:MM[:SS[.CCC]]][A|P]]}
It's for future datetime implementation.
* harbour/include/hbexpra.c
+ added support for HB_ENUM*([@]<varname>) functions - disabled
by default can be enabled by HB_USE_ENUM_FUNCTIONS macro
* harbour/source/rtl/gttone.c
* use assembler code for tone emulation for POCC/XCC compiler only
for X86 platforms
* harbour/source/rtl/filesys.c
* do not include <share.h> for POCC/XCC
* harbour/source/compiler/gencli.c
* pacify warning
* harbour/config/w32/owatcom.cf
* harbour/config/w32/xcc.cf
* updated description in header files
+ harbour/config/w32/pocc.cf
+ added support for Pelles ISO C Compiler
* harbour/source/rtl/errorapi.c
+ added protection against possible GPF when some assign methods
were called without parameters
* harbour/source/rdd/workarea.c
* initialize uiFalgs also when DBS_FLAGS is not set
* harbour/contrib/bmdbfcdx/bmdbfcdx1.c
* fixed hb_cdxSkipFilter() declaration - it should be 'static' function
* harbour/source/pp/ppcore.c
* harbour/source/compiler/ppcomp.c
+ added support for changing all -k? switches by #pragma, f.e.;
#pragma -ks+
#pragma -kM-
#pragma -kx1
#pragma -kJ0
* harbour/source/compiler/hbusage.c
* changed -ks description
* harbour/include/hbexpra.c
* harbour/include/hbexprb.c
* do not generate error message for negative indexes and
[] operators are used for simple types when -ks option
is used
* harbour/include/hbvmpub.h
* harbour/include/hbapi.h
* harbour/source/vm/hvm.c
* harbour/source/vm/extend.c
* harbour/source/vm/itemapi.c
* harbour/source/vm/memvars.c
+ added HB_IT_DEFAULT flags - it allows to check if item was changed
* harbour/source/vm/memvars.c
* harbour/include/hbvm.h
! fixed HB_IT_MEMOFLAG updating to be Clipper compatible. Here we are
not Clipper compatible in one place: in clodeblock local parameters
with memo values are marked as MEMO but if you leave function where
codeblock were created then Clipper during detaching removes MEMO
flag. In Harbour memo flag is kept.
* harbour/include/hbvm.h
* harbour/source/vm/classes.c
* harbour/source/vm/hvm.c
% improved speed of extended references used for SETGET methods
and overloaded [] operators
* harbour/include/hbapi.h
* harbour/include/hbsetup.ch
* harbour/source/compiler/hbcomp.c
* harbour/source/vm/hvm.c
* harbour/source/vm/macro.c
* harbour/source/vm/cmdarg.c
* removed HB_COMPAT_XHB flags - only one HB_COMPAT_XHB still exist
in HVM in hashes.c - it will be removed soon.
* harbour/source/common/hbverdsp.c
* removed information about xHarbour compatibility mode - it's not
longer used. We are emulating xHarbour behavior using external
XHB library and standard compiler/HVM features
* harbour/contrib/xhb/xhb.ch
* harbour/contrib/xhb/xhbfunc.c
* harbour/source/vm/arrayshb.c
* moved XHB_AINS(), XHB_ADEL() from XHB lib to HVM as HB_AINS(), HB_ADEL()
* harbour/contrib/xhb/xhb.ch
+ added #pragma -ks+
+ added transaltion for hb_enumindex( <enumvar> )
+ harbour/contrib/xhb/xhbenum.c
+ added emulation for HB_EUMMINDEX()
* harbour/contrib/xhb/xhbfunc.c
* do not add INET*() function wrappers for DOS builds or when
HB_NO_DEFAULT_INET macro is set
* harbour/contrib/xhb/xhbmsgs.c
* added comment
* harbour/contrib/Makefile
+ added TIP and XHB
* harbour/make_rpm.sh
* harbour/harbour.spec
* removed HB_COMPAT_XHB, --with tip, --with xhb
they are not longer necessary
* harbour/include/hbcomp.h
* pass compile time -ks state to RT macro compiler flags.
It means that if you compile some with which ¯os
then -ks compile time switch will be passed also to
macro compiler and respected later at runtime
* harbour/source/macro/macro.yyc
* harbour/source/macro/macro.y
+ added support for passing by reference array and object items
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
* generate compile time error for @func(<vars,...>)
only @func() is acceptable