From 340fc1f1de6b9a06a0dc6fae9d4e5379580dc2e1 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 26 Jun 2009 01:11:11 +0000 Subject: [PATCH] 2009-06-25 02:58 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * 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--.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. --- harbour/ChangeLog | 100 ++++++++++++++++++++++++++++ harbour/INSTALL | 55 +++++++-------- harbour/config/wce/install.cf | 2 +- harbour/config/win/install.cf | 2 +- harbour/contrib/gtqtc/gtqtc.cpp | 25 +++---- harbour/contrib/gtwvg/gtwvg.c | 4 +- harbour/contrib/gtwvg/wvggui.c | 7 +- harbour/contrib/hbwin/legacy.prg | 2 +- harbour/contrib/hbwin/olecore.c | 10 +-- harbour/doc/en-EN/hb_apiit.txt | 5 +- harbour/examples/hboleold/win_ole.c | 6 +- harbour/include/hbapi.h | 2 +- harbour/include/hbapiitm.h | 3 +- harbour/make_gnu.bat | 71 ++++++++++++++------ harbour/mpkg_dos.bat | 43 +++++++----- harbour/mpkg_win.bat | 44 +++++++----- harbour/mpkg_win.nsi | 8 +-- harbour/source/rdd/dbf1.c | 10 +-- harbour/source/rdd/dbfnsx/dbfnsx1.c | 2 +- harbour/source/rtl/gtwvt/gtwvt.c | 2 +- harbour/source/rtl/hbi18n1.c | 2 +- harbour/source/vm/extend.c | 2 +- harbour/source/vm/itemapi.c | 10 +-- harbour/source/vm/memvars.c | 7 ++ harbour/utils/hbmk2/hbmk2.prg | 4 +- 25 files changed, 291 insertions(+), 137 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 996f8bc57a..3966a7698b 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,106 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-06-25 02:58 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * 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--.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. + 2009-06-26 02:22 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/include/hbvm.h * harbour/include/hbrdddbf.h diff --git a/harbour/INSTALL b/harbour/INSTALL index 8192fdfe45..6ccdb642cd 100644 --- a/harbour/INSTALL +++ b/harbour/INSTALL @@ -51,7 +51,7 @@ HOW TO BUILD AND INSTALL HARBOUR FROM SOURCE 3.) GNU Make is included in the source package. No configuration is needed. - > set HB_COMPILER= + > set HB_COMPILER= > set HB_INSTALL_PREFIX= > make_gnu.bat install @@ -67,12 +67,11 @@ HOW TO BUILD AND INSTALL HARBOUR FROM SOURCE results will be created under the current directory tree. - With mingw, sh.exe (part of MSYS) mustn't be in the PATH. - Windows with MinGW + MSYS - ------------------------- - (for plain MinGW *without* MSYS, which is the recommended way: see above) + Windows with MinGW + MSYS or Cygwin + ----------------------------------- - Make sure to have MSYS and MinGW properly configured. - MSYS should be put in PATH *before* MinGW. + This is an *alternative build method* using bash script directly. + For the primary and recommended method: see above > set HB_INSTALL_PREFIX= > sh make_gnu.sh install @@ -82,19 +81,9 @@ HOW TO BUILD AND INSTALL HARBOUR FROM SOURCE > hello You should see 'Hello world!' on screen. - Windows with Cygwin - ------------------- - Make sure to have Cygwin properly configured. - - > set HB_INSTALL_PREFIX= - > sh make_gnu.sh install - - To test it, go to /bin directory and type: - > hbmk2 ../tests/hello.prg - > hello - You should see 'Hello world!' on screen. - - NOTE: should use Cygwin drive notation: /cygdrive/c for C: + NOTES: - With mingw, MSYS must be in PATH *before* MinGW. + - With cygwin, should use Cygwin drive + notation: /cygdrive/c for C: DOS --- @@ -269,7 +258,12 @@ OPTIONS AVAILABLE WHEN BUILDING HARBOUR - HB_REBUILD_PARSER=yes To rebuild the language parsers. Typically you only need this if your are Harbour core developer modifying the parser. - This requires GNU Bison 1.28 or upper. + This requires GNU Bison 1.28 or upper in PATH. + - HB_BUILD_LOG=[yes|no|] Send stdout and stderr build outputs to + file. Leave it as it is if set to 'no' or left + empty. 'yes' will output to an automatically + formed filename, which you can retrieve from + HB_BUILD_LOGFILE envvar. Cross building -------------- @@ -357,8 +351,7 @@ EXAMPLES --- --- MinGW GCC + MSYS - set PATH=C:\msys\1.0.11\bin;%PATH% - set PATH=C:\mingw\bin;%PATH% + set PATH=C:\msys\1.0.11\bin;C:\mingw\bin;%PATH% rem set HB_COMPILER=mingw set HB_INSTALL_PREFIX=C:\hb-%HB_COMPILER% @@ -377,8 +370,8 @@ EXAMPLES call make_gnu.bat %1 %2 > log-%HB_COMPILER%.txt 2>&1 --- - --- MinGW GCC for WinCE/ARM (requires native x86 Harbour binaries) - set PATH=C:\mingwce\opt\mingw32ce\bin;%PATH% + --- MinGW GCC for WinCE/ARM (requires native x86 Harbour binaries + Cygwin) + set PATH=C:\mingwce\opt\mingw32ce\bin;C:\cygwin\bin;%PATH% rem set HB_BIN_COMPILE=C:\hb-mingw\bin set HB_PPGEN_PATH=%HB_BIN_COMPILE% @@ -390,6 +383,14 @@ EXAMPLES call make_gnu.bat %1 %2 > log-%HB_COMPILER%.txt 2>&1 --- + --- Cygwin GCC + set PATH=C:\cygwin\bin + rem + set HB_COMPILER=cygwin + set HB_INSTALL_PREFIX=C:\hb-%HB_COMPILER% + call make_gnu.bat %1 %2 > log-%HB_COMPILER%.txt 2>&1 + --- + --- Open Watcom C++ SET WATCOM=C:\watcom SET PATH=%WATCOM%\BINNT;%WATCOM%\BINW;%PATH% @@ -517,7 +518,7 @@ EXAMPLES rem ; To create installation packages (.exe + .zip), rem replace last line (calling make_gnu.bat) with these two: set HB_DIR_NSIS=%ProgramFiles%\NSIS\ - call mpkg_win.bat > log-%HB_COMPILER%.txt 2>&1 + call mpkg_win.bat -->8-- DOS @@ -558,8 +559,8 @@ EXAMPLES --8<-- rem ; To create installation packages (.zip), rem replace last line (calling make_gnu.bat) with this one: - rem (this will only work when using Windows host) - call mpkg_dos.bat > log-%HB_COMPILER%.txt 2>&1 + rem (this will only work when using Windows NT or upper host) + call mpkg_dos.bat -->8-- OS/2 diff --git a/harbour/config/wce/install.cf b/harbour/config/wce/install.cf index 3abb21fdef..fceb43517e 100644 --- a/harbour/config/wce/install.cf +++ b/harbour/config/wce/install.cf @@ -15,7 +15,7 @@ INSTALL_LIST = $(subst /,\,$(INSTALL_OBJS)) ifeq ($(CMD_EXE),yes) # cmd.exe no command line size limit INSTALL_RULE = \ - -$(COMSPEC) /c for %f in ($(INSTALL_LIST)) do copy %f $(subst /,\,$(INSTALL_DIR)) + -$(COMSPEC) /c for %%f in ($(INSTALL_LIST)) do copy "%%f" "$(subst /,\,$(INSTALL_DIR))" else # We have to use script to overcome the DOS limit of max 128 characters # NOTE: The empty line directly before 'endef' HAVE TO exist! diff --git a/harbour/config/win/install.cf b/harbour/config/win/install.cf index 3abb21fdef..fceb43517e 100644 --- a/harbour/config/win/install.cf +++ b/harbour/config/win/install.cf @@ -15,7 +15,7 @@ INSTALL_LIST = $(subst /,\,$(INSTALL_OBJS)) ifeq ($(CMD_EXE),yes) # cmd.exe no command line size limit INSTALL_RULE = \ - -$(COMSPEC) /c for %f in ($(INSTALL_LIST)) do copy %f $(subst /,\,$(INSTALL_DIR)) + -$(COMSPEC) /c for %%f in ($(INSTALL_LIST)) do copy "%%f" "$(subst /,\,$(INSTALL_DIR))" else # We have to use script to overcome the DOS limit of max 128 characters # NOTE: The empty line directly before 'endef' HAVE TO exist! diff --git a/harbour/contrib/gtqtc/gtqtc.cpp b/harbour/contrib/gtqtc/gtqtc.cpp index 670a6112e4..a705862277 100644 --- a/harbour/contrib/gtqtc/gtqtc.cpp +++ b/harbour/contrib/gtqtc/gtqtc.cpp @@ -1023,7 +1023,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) case HB_GTI_WINTITLE: if( pWVT->qWnd ) { - pInfo->pResult = hb_itemPutCPtr2( pInfo->pResult, pWVT->qWnd->windowTitle().toLatin1().data() ); + pInfo->pResult = hb_itemPutCPtr( pInfo->pResult, pWVT->qWnd->windowTitle().toLatin1().data() ); if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) pWVT->qWnd->setWindowTitle( hb_itemGetCPtr( pInfo->pNewVal ) ); } @@ -1100,21 +1100,24 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) int iX, iY; if( !pInfo->pResult ) - { pInfo->pResult = hb_itemNew( NULL ); - } + hb_arrayNew( pInfo->pResult, 2 ); hb_arraySetNI( pInfo->pResult, 2, pWVT->PTEXTSIZE.y() * pWVT->ROWS ); hb_arraySetNI( pInfo->pResult, 1, pWVT->PTEXTSIZE.x() * pWVT->COLS ); - iY = hb_arrayGetNI( pInfo->pNewVal,2 ); - iX = hb_arrayGetNI( pInfo->pNewVal,1 ); - if( iY > 0 ) + if( ( hb_itemType( pInfo->pNewVal ) & HB_IT_ARRAY ) && hb_arrayLen( pInfo->pNewVal ) == 2 ) { - bool bOldCentre = pWVT->CenterWindow; - pWVT->CenterWindow = pWVT->bMaximized ? TRUE : FALSE; - HB_GTSELF_SETMODE( pGT, ( USHORT ) ( iY / pWVT->PTEXTSIZE.y() ), ( USHORT ) ( iX / pWVT->PTEXTSIZE.x() ) ); - pWVT->CenterWindow = bOldCentre; + iY = hb_arrayGetNI( pInfo->pNewVal,2 ); + iX = hb_arrayGetNI( pInfo->pNewVal,1 ); + + if( iY > 0 ) + { + bool bOldCentre = pWVT->CenterWindow; + pWVT->CenterWindow = pWVT->bMaximized ? TRUE : FALSE; + HB_GTSELF_SETMODE( pGT, ( USHORT ) ( iY / pWVT->PTEXTSIZE.y() ), ( USHORT ) ( iX / pWVT->PTEXTSIZE.x() ) ); + pWVT->CenterWindow = bOldCentre; + } } break; @@ -2765,5 +2768,3 @@ static LRESULT CALLBACK hb_gt_wvt_WndProc( HWND hWnd, UINT message, WPARAM wPara } #endif /*----------------------------------------------------------------------*/ - - diff --git a/harbour/contrib/gtwvg/gtwvg.c b/harbour/contrib/gtwvg/gtwvg.c index dcee02fac7..2d37651493 100644 --- a/harbour/contrib/gtwvg/gtwvg.c +++ b/harbour/contrib/gtwvg/gtwvg.c @@ -2999,7 +2999,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) { char * szTitle = NULL; if( hb_gt_wvt_GetWindowTitle( pWVT->hWnd, &szTitle ) ) - pInfo->pResult = hb_itemPutCPtr2( pInfo->pResult, szTitle ); + pInfo->pResult = hb_itemPutCPtr( pInfo->pResult, szTitle ); else pInfo->pResult = hb_itemPutC( pInfo->pResult, NULL ); if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) @@ -3011,7 +3011,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) pInfo->pResult = hb_itemPutNI( pInfo->pResult, pWVT->CodePage ); if( hb_itemType( pInfo->pNewVal ) & HB_IT_NUMERIC ) { - iVal = hb_itemGetNI( pInfo->pNewVal ); + iVal = hb_itemGetNI( pInfo->pNewVal ); if( iVal != pWVT->CodePage ) { if( !pWVT->hWnd ) diff --git a/harbour/contrib/gtwvg/wvggui.c b/harbour/contrib/gtwvg/wvggui.c index 512a2d8083..c8b9e8fb0f 100644 --- a/harbour/contrib/gtwvg/wvggui.c +++ b/harbour/contrib/gtwvg/wvggui.c @@ -1630,7 +1630,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) { char * szTitle = NULL; if( hb_gt_wvt_GetWindowTitle( pWVT->hWnd, &szTitle ) ) - pInfo->pResult = hb_itemPutCPtr2( pInfo->pResult, szTitle ); + pInfo->pResult = hb_itemPutCPtr( pInfo->pResult, szTitle ); else pInfo->pResult = hb_itemPutC( pInfo->pResult, NULL ); if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) @@ -1776,12 +1776,13 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) GetClientRect( pWVT->hWnd, &rc ); if( !pInfo->pResult ) - { pInfo->pResult = hb_itemNew( NULL ); - } + hb_arrayNew( pInfo->pResult, 2 ); hb_arraySetNI( pInfo->pResult, 2, rc.bottom - rc.top ); hb_arraySetNI( pInfo->pResult, 1, rc.right - rc.left ); + + if( ( hb_itemType( pInfo->pNewVal ) & HB_IT_ARRAY ) && hb_arrayLen( pInfo->pNewVal ) == 2 ) { int iX, iY; iY = hb_arrayGetNI( pInfo->pNewVal,2 ); diff --git a/harbour/contrib/hbwin/legacy.prg b/harbour/contrib/hbwin/legacy.prg index 025baaf7c8..8531dd9afd 100644 --- a/harbour/contrib/hbwin/legacy.prg +++ b/harbour/contrib/hbwin/legacy.prg @@ -110,7 +110,7 @@ METHOD New( xOle, cClass ) CLASS TOLEAUTO ENDIF ELSEIF ISCHARACTER( xOle ) hOle := __OleCreateObject( xOle ) - IF Empty( hOle ) + IF ! Empty( hOle ) ::__hObj := hOle ::cClassName := xOle ELSE diff --git a/harbour/contrib/hbwin/olecore.c b/harbour/contrib/hbwin/olecore.c index 6e25cbd142..b3ed054afa 100644 --- a/harbour/contrib/hbwin/olecore.c +++ b/harbour/contrib/hbwin/olecore.c @@ -294,7 +294,7 @@ void hb_oleVariantToItem( PHB_ITEM pItem, VARIANT* pVariant ) case VT_BSTR: { char* szString = WideToAnsi( pVariant->n1.n2.n3.bstrVal ); - hb_itemPutCPtr2( pItem, szString ); + hb_itemPutCPtr( pItem, szString ); break; } @@ -602,11 +602,11 @@ HB_FUNC( __OLEENUMCREATE ) /* ( __hObj ) */ if( lOleError == S_OK ) { if( variant.n1.n2.vt == VT_UNKNOWN ) - lOleError = HB_VTBL( variant.n1.n2.n3.punkVal )->QueryInterface( + lOleError = HB_VTBL( variant.n1.n2.n3.punkVal )->QueryInterface( HB_THIS_( variant.n1.n2.n3.punkVal ) HB_ID_REF( IID_IEnumVARIANT ), ( void** ) ( void * ) &pEnum ); else if( variant.n1.n2.vt == VT_DISPATCH ) - lOleError = HB_VTBL( variant.n1.n2.n3.pdispVal )->QueryInterface( + lOleError = HB_VTBL( variant.n1.n2.n3.pdispVal )->QueryInterface( HB_THIS_( variant.n1.n2.n3.pdispVal ) HB_ID_REF( IID_IEnumVARIANT ), ( void** ) ( void * ) &pEnum ); else @@ -689,7 +689,7 @@ HB_FUNC( WIN_OLEERRORTEXT ) case DISP_E_TYPEMISMATCH: hb_retc_const( "DISP_E_TYPEMISMATCH" ); break; case DISP_E_UNKNOWNINTERFACE: hb_retc_const( "DISP_E_UNKNOWNINTERFACE" ); break; case DISP_E_PARAMNOTOPTIONAL: hb_retc_const( "DISP_E_PARAMNOTOPTIONAL" ); break; - default: + default: { char buf[ 16 ]; @@ -762,7 +762,7 @@ HB_FUNC( WIN_OLEAUTO___ONERROR ) /* Try property get and invoke */ pMemberArray = szMethodWide; - lOleError = HB_VTBL( pDisp )->GetIDsOfNames( HB_THIS_( pDisp ) HB_ID_REF( IID_NULL ), + lOleError = HB_VTBL( pDisp )->GetIDsOfNames( HB_THIS_( pDisp ) HB_ID_REF( IID_NULL ), &pMemberArray, 1, LOCALE_USER_DEFAULT, &dispid ); hb_xfree( szMethodWide ); diff --git a/harbour/doc/en-EN/hb_apiit.txt b/harbour/doc/en-EN/hb_apiit.txt index 20b4f15849..251df6e407 100644 --- a/harbour/doc/en-EN/hb_apiit.txt +++ b/harbour/doc/en-EN/hb_apiit.txt @@ -947,7 +947,7 @@ /* $DOC$ * $FUNCNAME$ - * hb_itemPutCPtr2() + * hb_itemPutCPtr() * $CATEGORY$ * Item API * $ONELINER$ @@ -956,7 +956,7 @@ * C Prototype * * #include - * hb_itemPutCPtr2( PHB_ITEM pItem, char * szText ) --> ( PHB_ITEM )pResult + * hb_itemPutCPtr( PHB_ITEM pItem, char * szText ) --> ( PHB_ITEM )pResult * $ARGUMENTS$ * * @@ -2074,4 +2074,3 @@ * * $END$ */ - diff --git a/harbour/examples/hboleold/win_ole.c b/harbour/examples/hboleold/win_ole.c index 36e6f28f68..3cc467239a 100644 --- a/harbour/examples/hboleold/win_ole.c +++ b/harbour/examples/hboleold/win_ole.c @@ -718,12 +718,12 @@ static void FreeParams( DISPPARAMS *pDispParams, PHB_ITEM *aPrgParams ) case VT_BYREF | VT_BSTR: SysFreeString( *pVariant->n1.n2.n3.pbstrVal ); sString = hb_oleWideToAnsi( *( pVariant->n1.n2.n3.pbstrVal ) ); - hb_itemPutCPtr2( pItem, sString ); + hb_itemPutCPtr( pItem, sString ); break; case VT_BSTR: sString = hb_oleWideToAnsi( pVariant->n1.n2.n3.bstrVal ); - hb_itemPutCPtr2( pItem, sString ); + hb_itemPutCPtr( pItem, sString ); break; case VT_BYREF | VT_BOOL: @@ -1033,7 +1033,7 @@ HRESULT hb_oleVariantToItem( PHB_ITEM pItem, VARIANT *pVariant ) sString = hb_oleWideToAnsi( pVariant->n1.n2.n3.bstrVal ); if( sString ) - hb_itemPutCPtr2( pItem, sString ); + hb_itemPutCPtr( pItem, sString ); else hb_itemPutC( pItem, NULL ); diff --git a/harbour/include/hbapi.h b/harbour/include/hbapi.h index aa9772acc4..6adf611af0 100644 --- a/harbour/include/hbapi.h +++ b/harbour/include/hbapi.h @@ -697,7 +697,7 @@ extern HB_EXPORT void hb_retnlllen( LONGLONG lNumber, int iWidth ); /* returns #define hb_reta( ulLen ) hb_arrayNew( hb_stackReturnItem(), ulLen ) #define hb_retc( szText ) hb_itemPutC( hb_stackReturnItem(), szText ) #define hb_retc_null() hb_itemPutC( hb_stackReturnItem(), NULL ) -#define hb_retc_buffer( szText ) hb_itemPutCPtr2( hb_stackReturnItem(), szText ) +#define hb_retc_buffer( szText ) hb_itemPutCPtr( hb_stackReturnItem(), szText ) #define hb_retc_const( szText ) hb_itemPutCConst( hb_stackReturnItem(), szText ) #define hb_retclen( szText, ulLen ) hb_itemPutCL( hb_stackReturnItem(), szText, ulLen ) #define hb_retclen_buffer( szText, ulLen ) hb_itemPutCLPtr( hb_stackReturnItem(), szText, ulLen ) diff --git a/harbour/include/hbapiitm.h b/harbour/include/hbapiitm.h index ab43269b0e..1756643eb4 100644 --- a/harbour/include/hbapiitm.h +++ b/harbour/include/hbapiitm.h @@ -110,8 +110,7 @@ extern HB_EXPORT PHB_ITEM hb_itemPutC ( PHB_ITEM pItem, const char * sz extern HB_EXPORT PHB_ITEM hb_itemPutCL ( PHB_ITEM pItem, const char * szText, ULONG ulLen ); extern HB_EXPORT PHB_ITEM hb_itemPutCConst ( PHB_ITEM pItem, const char * szText ); extern HB_EXPORT PHB_ITEM hb_itemPutCLConst( PHB_ITEM pItem, const char * szText, ULONG ulLen ); -extern HB_EXPORT PHB_ITEM hb_itemPutCPtr2 ( PHB_ITEM pItem, char * szText ); -extern HB_EXPORT PHB_ITEM hb_itemPutCPtr ( PHB_ITEM pItem, char * szText, ULONG ulLen ); +extern HB_EXPORT PHB_ITEM hb_itemPutCPtr ( PHB_ITEM pItem, char * szText ); extern HB_EXPORT PHB_ITEM hb_itemPutCLPtr ( PHB_ITEM pItem, char * szText, ULONG ulLen ); extern HB_EXPORT void hb_itemSetCMemo ( PHB_ITEM pItem ); extern HB_EXPORT PHB_ITEM hb_itemPutD ( PHB_ITEM pItem, int iYear, int iMonth, int iDay ); diff --git a/harbour/make_gnu.bat b/harbour/make_gnu.bat index a4b1a0e88a..da8b6806d2 100644 --- a/harbour/make_gnu.bat +++ b/harbour/make_gnu.bat @@ -34,11 +34,11 @@ if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp if "%HB_DOC_INSTALL%" == "" set HB_DOC_INSTALL=%HB_INSTALL_PREFIX%\doc rem Create install dirs - if not exist %HB_BIN_INSTALL%\*.* md %HB_BIN_INSTALL% - if not exist %HB_LIB_INSTALL%\*.* md %HB_LIB_INSTALL% - if not exist %HB_INC_INSTALL%\*.* md %HB_INC_INSTALL% - if not exist %HB_DOC_INSTALL%\*.* md %HB_DOC_INSTALL% - if not exist %HB_DOC_INSTALL%\en-EN\*.* md %HB_DOC_INSTALL%\en-EN + if not exist "%HB_BIN_INSTALL%\*.*" md "%HB_BIN_INSTALL%" + if not exist "%HB_LIB_INSTALL%\*.*" md "%HB_LIB_INSTALL%" + if not exist "%HB_INC_INSTALL%\*.*" md "%HB_INC_INSTALL%" + if not exist "%HB_DOC_INSTALL%\*.*" md "%HB_DOC_INSTALL%" + if not exist "%HB_DOC_INSTALL%\en-EN\*.*" md "%HB_DOC_INSTALL%\en-EN" goto MAKE @@ -48,6 +48,7 @@ if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp if not "%OS%" == "Windows_NT" goto HELP rem Order is significant + call :COMP_DET_ONE cygstart.exe cygwin win call :COMP_DET_ONE gcc.exe mingw win call :COMP_DET_ONE wpp386.exe watcom win call :COMP_DET_ONE ml64.exe msvc64 win @@ -56,7 +57,6 @@ if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp call :COMP_DET_ONE bcc32.exe bcc win call :COMP_DET_ONE porc64.exe pocc64 win call :COMP_DET_ONE pocc.exe pocc win - call :COMP_DET_ONE cygstart.exe cygwin win call :COMP_DET_ONE xcc.exe xcc win call :COMP_DET_ONE x86_64-w64-mingw32-gcc.exe mingw64 win x86_64-w64-mingw32- call :COMP_DET_ONE arm-wince-mingw32ce-gcc.exe mingwarm wce arm-wince-mingw32ce- @@ -64,9 +64,9 @@ if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp if "%HB_COMPILER%" == "" ( echo HB_COMPILER couldn't be automatically determined. && goto HELP ) - echo Autodetected HB_COMPILER: %HB_COMPILER% - echo Autodetected HB_ARCHITECTURE: %HB_ARCHITECTURE% - if not "%HB_CCPREFIX%" == "" echo Autodetected HB_CCPREFIX: %HB_CCPREFIX% + echo Harbour HB_COMPILER autodetected: '%HB_COMPILER%' + echo Harbour HB_ARCHITECTURE autodetected: '%HB_ARCHITECTURE%' + if not "%HB_CCPREFIX%" == "" echo Harbour HB_CCPREFIX autodetected: '%HB_CCPREFIX%' goto CONTINUE_MAKE @@ -86,12 +86,12 @@ if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp :BAD_ARCH - echo Error: HB_ARCHITECTURE is not set. + echo Harbour: Error: HB_ARCHITECTURE not set. goto HELP :BAD_COMP - echo Error: HB_COMPILER is not set. + echo Harbour: Error: HB_COMPILER not set. goto HELP :MAKE @@ -101,6 +101,20 @@ if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp set HARBOUR= set CLIPPER= + rem --------------------------------------------------------------- + rem Setup output log + + set _HB_BUILD_LOG= + set HB_BUILD_LOGFILE= + if not "%HB_BUILD_LOG%" == "" if "%OS%" == "Windows_NT" set _HB_BUILD_LOG=%HB_BUILD_LOG% +: if "%HB_BUILD_LOG%" == "" if "%OS%" == "Windows_NT" set _HB_BUILD_LOG=log-%HB_ARCHITECTURE%-%HB_COMPILER%.txt + if "%_HB_BUILD_LOG%" == "yes" if "%OS%" == "Windows_NT" set _HB_BUILD_LOG=log-%HB_ARCHITECTURE%-%HB_COMPILER%.txt + if "%_HB_BUILD_LOG%" == "no" if "%OS%" == "Windows_NT" set _HB_BUILD_LOG= + if not "%_HB_BUILD_LOG%" == "" if "%OS%" == "Windows_NT" set HB_BUILD_LOGFILE=%_HB_BUILD_LOG% + if not "%_HB_BUILD_LOG%" == "" if "%OS%" == "Windows_NT" echo Harbour build output to: '%_HB_BUILD_LOG%' + if not "%_HB_BUILD_LOG%" == "" if "%OS%" == "Windows_NT" if exist "%_HB_BUILD_LOG%" del "%_HB_BUILD_LOG%" + if not "%_HB_BUILD_LOG%" == "" if "%OS%" == "Windows_NT" set _HB_BUILD_LOG=^>^> %_HB_BUILD_LOG% 2^>^&1 + rem --------------------------------------------------------------- rem Detect name of GNU Make rem @@ -150,7 +164,7 @@ if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp if "%HB_COMPILER%" == "mingw" goto DO_GCC if "%HB_COMPILER%" == "mingw64" goto DO_GCC if "%HB_COMPILER%" == "mingwarm" goto DO_GCC - if "%HB_COMPILER%" == "cygwin" goto DO_GCC + if "%HB_COMPILER%" == "cygwin" goto DO_GCC_CYG set _HB_CONTRIBLIBS=%HB_CONTRIBLIBS% set _HB_CONTRIB_ADDONS=%HB_CONTRIB_ADDONS% @@ -161,8 +175,9 @@ if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp set HB_CONTRIB_ADDONS= set HB_EXTERNALLIBS=no set HB_EXTERNAL_ADDONS= - %_HB_MAKE% clean install %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 - if errorlevel 1 echo GNU Make returned: %ERRORLEVEL% + %_HB_MAKE% clean install %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 %_HB_BUILD_LOG% + if errorlevel 1 echo Harbour GNU Make returned: %ERRORLEVEL% + if errorlevel 1 goto MAKE_DONE set HB_DYNLIB=no set HB_CONTRIBLIBS=%_HB_CONTRIBLIBS% set HB_CONTRIB_ADDONS=%_HB_CONTRIB_ADDONS% @@ -172,21 +187,36 @@ if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp set _HB_CONTRIB_ADDONS= set _HB_EXTERNALLIBS= set _HB_EXTERNAL_ADDONS= - %_HB_MAKE% clean install %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 - if errorlevel 1 echo GNU Make returned: %ERRORLEVEL% + %_HB_MAKE% clean install %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 %_HB_BUILD_LOG% + if errorlevel 1 echo Harbour GNU Make returned: %ERRORLEVEL% goto MAKE_DONE :DO_GCC set HB_DYNLIB=no - %_HB_MAKE% clean install %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 - if errorlevel 1 echo GNU Make returned: %ERRORLEVEL% + %_HB_MAKE% clean install %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 %_HB_BUILD_LOG% + if errorlevel 1 echo Harbour GNU Make returned: %ERRORLEVEL% + goto MAKE_DONE + +:DO_GCC_CYG + + set HB_DYNLIB=no + sh make_gnu.sh clean install %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 + if errorlevel 1 echo Harbour GNU Make returned: %ERRORLEVEL% goto MAKE_DONE :SKIP_WINDLL - %_HB_MAKE% %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 - if errorlevel 1 echo GNU Make returned: %ERRORLEVEL% + if "%HB_COMPILER%" == "cygwin" goto SKIP_WINDLL_CYG + + %_HB_MAKE% %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 %_HB_BUILD_LOG% + if errorlevel 1 echo Harbour GNU Make returned: %ERRORLEVEL% + goto MAKE_DONE + +:SKIP_WINDLL_CYG + + sh make_gnu.sh %HB_USER_MAKEFLAGS% %1 %2 %3 %4 %5 %6 %7 %8 %9 %_HB_BUILD_LOG% + if errorlevel 1 echo Harbour GNU Make returned: %ERRORLEVEL% goto MAKE_DONE :MAKE_DONE @@ -194,6 +224,7 @@ if "%HB_COMPILER%" == "" set HB_COMPILER=djgpp set _HB_MAKE= set HARBOUR=%_HB_HARBOUR_OLD% set CLIPPER=%_HB_CLIPPER_OLD% + set _HB_BUILD_LOG= set _HB_HARBOUR_OLD= set _HB_CLIPPER_OLD= goto END diff --git a/harbour/mpkg_dos.bat b/harbour/mpkg_dos.bat index 4463e58489..3bb17bd96a 100644 --- a/harbour/mpkg_dos.bat +++ b/harbour/mpkg_dos.bat @@ -24,50 +24,59 @@ if not "%OS%" == "Windows_NT" goto END setlocal rem ; Basic setup -set HB_VERSION=200 -if "%HB_ARCHITECTURE%" == "" set HB_ARCHITECTURE=dos -set HB_PKGNAME=hb%HB_VERSION%%HB_COMPILER:~0,2% -set HB_DIRNAME=%HB_PKGNAME% +set HB_VERSION=2b2 rem ; Dir setup set HB_INSTALL_BASE=%~dp0_hb_inst -set HB_INSTALL_PREFIX=%HB_INSTALL_BASE%\%HB_DIRNAME% +set HB_INSTALL_PREFIX=%HB_INSTALL_BASE%\_pending set HB_BIN_INSTALL= set HB_LIB_INSTALL= set HB_INC_INSTALL= set HB_DOC_INSTALL= rem ; Pre-build cleanup -if exist %HB_INSTALL_PREFIX% rmdir /q /s %HB_INSTALL_PREFIX% +if exist "%HB_INSTALL_PREFIX%" rmdir /q /s "%HB_INSTALL_PREFIX%" rem ; Option setup +set HB_BUILD_LOG=yes set HB_BUILD_OPTIM=yes set HB_BUILD_DEBUG=no rem ; Build Harbour -call make_gnu.bat clean install +call "%~dp0make_gnu.bat" clean install +if errorlevel 1 echo Harbour build returned: %ERRORLEVEL% rem if errorlevel 1 goto MK_ERROR +rem ; Final name setup +set HB_PKGNAME=hb%HB_VERSION%%HB_COMPILER:~0,2% +set HB_DIRNAME=%HB_PKGNAME% + +rem ; Rename temp dir to final name +if exist "%HB_INSTALL_BASE%\%HB_DIRNAME%" rmdir /q /s "%HB_INSTALL_BASE%\%HB_DIRNAME%" +move "%HB_INSTALL_PREFIX%" "%HB_INSTALL_BASE%\%HB_DIRNAME%" > nul +set HB_INSTALL_PREFIX=%HB_INSTALL_BASE%\%HB_DIRNAME% + rem ; Post-build installation -xcopy /D /Y ChangeLog* "%HB_INSTALL_PREFIX%\" -xcopy /D /Y COPYING "%HB_INSTALL_PREFIX%\" -xcopy /D /Y ERRATA "%HB_INSTALL_PREFIX%\" -xcopy /D /Y INSTALL "%HB_INSTALL_PREFIX%\" -xcopy /D /Y TODO "%HB_INSTALL_PREFIX%\" +copy /Y ChangeLog* "%HB_INSTALL_PREFIX%\" > nul +copy /Y COPYING "%HB_INSTALL_PREFIX%\" > nul +copy /Y ERRATA "%HB_INSTALL_PREFIX%\" > nul +copy /Y INSTALL "%HB_INSTALL_PREFIX%\" > nul +copy /Y TODO "%HB_INSTALL_PREFIX%\" > nul rem ; Build .zip package -if exist %HB_PKGNAME%.zip del %HB_PKGNAME%.zip +echo Harbour .zip install package creation: '%HB_PKGNAME%.zip' +if exist "%HB_PKGNAME%.zip" del "%HB_PKGNAME%.zip" pushd -cd %HB_INSTALL_BASE% -zip -9 -X -r -o %~dp0%HB_PKGNAME%.zip . -i %HB_DIRNAME%\* +cd "%HB_INSTALL_BASE%" +zip -q -9 -X -r -o "%~dp0%HB_PKGNAME%.zip" . -i "%HB_DIRNAME%\*" popd :MK_ERROR rem ; Cleanup -if "%1" == "--deltemp" rmdir /q /s %HB_INSTALL_PREFIX% -if "%1" == "--deltemp" rmdir /q %HB_INSTALL_BASE% +if "%1" == "--deltemp" rmdir /q /s "%HB_INSTALL_PREFIX%" +if "%1" == "--deltemp" rmdir /q "%HB_INSTALL_BASE%" endlocal diff --git a/harbour/mpkg_win.bat b/harbour/mpkg_win.bat index 282589d2fc..a226a23ce0 100644 --- a/harbour/mpkg_win.bat +++ b/harbour/mpkg_win.bat @@ -29,59 +29,69 @@ setlocal rem ; Basic setup set HB_VERSION=2.0.0beta2 -if "%HB_ARCHITECTURE%" == "" set HB_ARCHITECTURE=win -set HB_PKGNAME=harbour-%HB_VERSION%-%HB_ARCHITECTURE%-%HB_COMPILER% -set HB_DIRNAME=harbour-%HB_ARCHITECTURE%-%HB_COMPILER% rem ; Dir setup set HB_INSTALL_BASE=%~dp0_hb_inst -set HB_INSTALL_PREFIX=%HB_INSTALL_BASE%\%HB_DIRNAME% +set HB_INSTALL_PREFIX=%HB_INSTALL_BASE%\_pending set HB_BIN_INSTALL= set HB_LIB_INSTALL= set HB_INC_INSTALL= set HB_DOC_INSTALL= rem ; Pre-build cleanup -if exist %HB_INSTALL_PREFIX% rmdir /q /s %HB_INSTALL_PREFIX% +if exist "%HB_INSTALL_PREFIX%" rmdir /q /s "%HB_INSTALL_PREFIX%" rem ; Option setup +set HB_BUILD_LOG=yes set HB_BUILD_DLL=yes set HB_BUILD_OPTIM=yes set HB_BUILD_DEBUG=no set HB_BUILD_IMPLIB=no rem ; Build Harbour -call make_gnu.bat +call "%~dp0make_gnu.bat" +if errorlevel 1 echo Harbour build returned: %ERRORLEVEL% rem if errorlevel 1 goto MK_ERROR +rem ; Final name setup +set HB_PKGNAME=harbour-%HB_VERSION%-%HB_ARCHITECTURE%-%HB_COMPILER% +set HB_DIRNAME=harbour-%HB_ARCHITECTURE%-%HB_COMPILER% + +rem ; Rename temp dir to final name +if exist "%HB_INSTALL_BASE%\%HB_DIRNAME%" rmdir /q /s "%HB_INSTALL_BASE%\%HB_DIRNAME%" +move "%HB_INSTALL_PREFIX%" "%HB_INSTALL_BASE%\%HB_DIRNAME%" > nul +set HB_INSTALL_PREFIX=%HB_INSTALL_BASE%\%HB_DIRNAME% + rem ; Post-build cleanup if exist "%HB_BIN_INSTALL%\*.tds" del "%HB_BIN_INSTALL%\*.tds" if exist "%HB_BIN_INSTALL%\*.lib" del "%HB_BIN_INSTALL%\*.lib" if exist "%HB_BIN_INSTALL%\*.exp" del "%HB_BIN_INSTALL%\*.exp" rem ; Post-build installation -xcopy /D /Y ChangeLog* "%HB_INSTALL_PREFIX%\" -xcopy /D /Y COPYING "%HB_INSTALL_PREFIX%\" -xcopy /D /Y ERRATA "%HB_INSTALL_PREFIX%\" -xcopy /D /Y INSTALL "%HB_INSTALL_PREFIX%\" -xcopy /D /Y TODO "%HB_INSTALL_PREFIX%\" +copy /Y ChangeLog* "%HB_INSTALL_PREFIX%\" > nul +copy /Y COPYING "%HB_INSTALL_PREFIX%\" > nul +copy /Y ERRATA "%HB_INSTALL_PREFIX%\" > nul +copy /Y INSTALL "%HB_INSTALL_PREFIX%\" > nul +copy /Y TODO "%HB_INSTALL_PREFIX%\" > nul rem ; Build .zip package -if exist %HB_PKGNAME%.zip del %HB_PKGNAME%.zip +echo Harbour .zip install package creation: '%HB_PKGNAME%.zip' +if exist "%HB_PKGNAME%.zip" del "%HB_PKGNAME%.zip" pushd -cd %HB_INSTALL_BASE% -zip -9 -X -r -o %~dp0%HB_PKGNAME%.zip . -i %HB_DIRNAME%\* +cd "%HB_INSTALL_BASE%" +zip -q -9 -X -r -o "%~dp0%HB_PKGNAME%.zip" . -i "%HB_DIRNAME%\*" popd rem ; Build installer package -"%HB_DIR_NSIS%makensis.exe" %~dp0mpkg_win.nsi +echo Harbour .exe install package creation: '%HB_PKGNAME%.exe' +"%HB_DIR_NSIS%makensis.exe" /V2 "%~dp0mpkg_win.nsi" :MK_ERROR rem ; Cleanup -if "%1" == "--deltemp" rmdir /q /s %HB_INSTALL_PREFIX% -if "%1" == "--deltemp" rmdir /q %HB_INSTALL_BASE% +if "%1" == "--deltemp" rmdir /q /s "%HB_INSTALL_PREFIX%" +if "%1" == "--deltemp" rmdir /q "%HB_INSTALL_BASE%" endlocal diff --git a/harbour/mpkg_win.nsi b/harbour/mpkg_win.nsi index 54ac47ce52..c12ca39a0f 100644 --- a/harbour/mpkg_win.nsi +++ b/harbour/mpkg_win.nsi @@ -81,16 +81,16 @@ Section "Main components" hb_main File /nonfatal "$%HB_INSTALL_PREFIX%\ChangeLog*" SetOutPath $INSTDIR\bin - File "$%HB_BIN_INSTALL%\*.*" + File "$%HB_INSTALL_PREFIX%\bin\*.*" SetOutPath $INSTDIR\lib - File "$%HB_LIB_INSTALL%\*.*" + File /r "$%HB_INSTALL_PREFIX%\lib\*.*" SetOutPath $INSTDIR\include - File "$%HB_INC_INSTALL%\*.*" + File "$%HB_INSTALL_PREFIX%\include\*.*" SetOutPath $INSTDIR\doc - File /r "$%HB_DOC_INSTALL%\*.*" + File /r "$%HB_INSTALL_PREFIX%\doc\*.*" ; Write the installation path into the registry ; WriteRegStr HKLM "Software\Harbour" "Install_Dir" "$INSTDIR" diff --git a/harbour/source/rdd/dbf1.c b/harbour/source/rdd/dbf1.c index daabc1da1e..6a0953e8b0 100644 --- a/harbour/source/rdd/dbf1.c +++ b/harbour/source/rdd/dbf1.c @@ -2728,7 +2728,7 @@ static HB_ERRCODE hb_dbfClose( DBFAREAP pArea ) SELF_WRITEDBHEADER( ( AREAP ) pArea ); /* It's not Clipper compatible but it reduces the problem with - byggy Windows network setting */ + buggy Windows network setting */ if( hb_setGetHardCommit() ) SELF_FLUSH( ( AREAP ) pArea ); } @@ -5630,7 +5630,7 @@ static HB_ERRCODE hb_dbfRddInfo( LPRDDNODE pRDD, USHORT uiIndex, ULONG ulConnect } if( fFree && szTrigger ) - hb_itemPutCPtr2( pItem, szTrigger ); + hb_itemPutCPtr( pItem, szTrigger ); else hb_itemPutC( pItem, szTrigger ); @@ -5652,7 +5652,7 @@ static HB_ERRCODE hb_dbfRddInfo( LPRDDNODE pRDD, USHORT uiIndex, ULONG ulConnect } else if( pData->szPendingTrigger ) { - hb_itemPutCPtr2( pItem, pData->szPendingTrigger ); + hb_itemPutCPtr( pItem, pData->szPendingTrigger ); pData->szPendingTrigger = NULL; } else @@ -5672,7 +5672,7 @@ static HB_ERRCODE hb_dbfRddInfo( LPRDDNODE pRDD, USHORT uiIndex, ULONG ulConnect } if( fFree && szPasswd ) - hb_itemPutCPtr2( pItem, szPasswd ); + hb_itemPutCPtr( pItem, szPasswd ); else hb_itemPutC( pItem, szPasswd ); @@ -5694,7 +5694,7 @@ static HB_ERRCODE hb_dbfRddInfo( LPRDDNODE pRDD, USHORT uiIndex, ULONG ulConnect } else if( pData->szPendingPasswd ) { - hb_itemPutCPtr2( pItem, pData->szPendingPasswd ); + hb_itemPutCPtr( pItem, pData->szPendingPasswd ); pData->szPendingPasswd = NULL; } else diff --git a/harbour/source/rdd/dbfnsx/dbfnsx1.c b/harbour/source/rdd/dbfnsx/dbfnsx1.c index 97009b9853..29363b5475 100644 --- a/harbour/source/rdd/dbfnsx/dbfnsx1.c +++ b/harbour/source/rdd/dbfnsx/dbfnsx1.c @@ -727,7 +727,7 @@ static PHB_ITEM hb_nsxKeyGetItem( PHB_ITEM pItem, LPKEYINFO pKey, pVal[ pTag->KeyLength ] = '\0'; hb_cdpnTranslate( pVal, pTag->pIndex->pArea->cdPage, hb_vmCDP(), pTag->KeyLength ); - pItem = hb_itemPutCPtr( pItem, pVal, pTag->KeyLength ); + pItem = hb_itemPutCLPtr( pItem, pVal, pTag->KeyLength ); } else #else diff --git a/harbour/source/rtl/gtwvt/gtwvt.c b/harbour/source/rtl/gtwvt/gtwvt.c index 824f41df1f..112110d6e7 100644 --- a/harbour/source/rtl/gtwvt/gtwvt.c +++ b/harbour/source/rtl/gtwvt/gtwvt.c @@ -2301,7 +2301,7 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo ) { char * szTitle = NULL; if( hb_gt_wvt_GetWindowTitle( pWVT->hWnd, &szTitle ) ) - pInfo->pResult = hb_itemPutCPtr2( pInfo->pResult, szTitle ); + pInfo->pResult = hb_itemPutCPtr( pInfo->pResult, szTitle ); else pInfo->pResult = hb_itemPutC( pInfo->pResult, NULL ); if( hb_itemType( pInfo->pNewVal ) & HB_IT_STRING ) diff --git a/harbour/source/rtl/hbi18n1.c b/harbour/source/rtl/hbi18n1.c index 103d9e60ff..0b863ad1d5 100644 --- a/harbour/source/rtl/hbi18n1.c +++ b/harbour/source/rtl/hbi18n1.c @@ -218,7 +218,7 @@ static PHB_ITEM hb_i18n_pluralexp_compile( PHB_ITEM pExp ) memcpy( &szMacro[ 4 ], hb_itemGetCPtr( pExp ), ulLen ); szMacro[ 4 + ulLen ] = '}'; szMacro[ 5 + ulLen ] = '\0'; - pMacro = hb_itemPutCPtr( NULL, szMacro, ulLen ); + pMacro = hb_itemPutCLPtr( NULL, szMacro, ulLen ); szType = hb_macroGetType( pMacro ); if( *szType == 'B' ) { diff --git a/harbour/source/vm/extend.c b/harbour/source/vm/extend.c index c4768b62ff..5f56e4233f 100644 --- a/harbour/source/vm/extend.c +++ b/harbour/source/vm/extend.c @@ -1262,7 +1262,7 @@ void hb_retc_buffer( char * szText ) HB_TRACE(HB_TR_DEBUG, ("hb_retc_buffer(%s)", szText)); - hb_itemPutCPtr2( hb_stackReturnItem(), szText ); + hb_itemPutCPtr( hb_stackReturnItem(), szText ); } #undef hb_retc_const diff --git a/harbour/source/vm/itemapi.c b/harbour/source/vm/itemapi.c index 78ef4b1c59..21ffde78b8 100644 --- a/harbour/source/vm/itemapi.c +++ b/harbour/source/vm/itemapi.c @@ -63,6 +63,7 @@ * hb_itemGetDL() * hb_itemGetNI() * hb_itemGetCPtr() + * hb_itemGetCLPtr() * hb_itemGetCLen() * hb_itemGetNLen() * hb_itemPutCConst() @@ -347,11 +348,11 @@ PHB_ITEM hb_itemPutCLConst( PHB_ITEM pItem, const char * szText, ULONG ulLen ) return pItem; } -PHB_ITEM hb_itemPutCPtr2( PHB_ITEM pItem, char * szText ) +PHB_ITEM hb_itemPutCPtr( PHB_ITEM pItem, char * szText ) { ULONG ulLen; - HB_TRACE(HB_TR_DEBUG, ("hb_itemPutCPtr2(%p, %s)", pItem, szText)); + HB_TRACE(HB_TR_DEBUG, ("hb_itemPutCPtr(%p, %s)", pItem, szText)); if( pItem ) { @@ -387,11 +388,6 @@ PHB_ITEM hb_itemPutCPtr2( PHB_ITEM pItem, char * szText ) return pItem; } -PHB_ITEM hb_itemPutCPtr( PHB_ITEM pItem, char * szText, ULONG ulLen ) -{ - return hb_itemPutCLPtr( pItem, szText, ulLen ); -} - PHB_ITEM hb_itemPutCLPtr( PHB_ITEM pItem, char * szText, ULONG ulLen ) { HB_TRACE(HB_TR_DEBUG, ("hb_itemPutCLPtr(%p, %s, %lu)", pItem, szText, ulLen)); diff --git a/harbour/source/vm/memvars.c b/harbour/source/vm/memvars.c index 9fb96d2b66..4856ae7578 100644 --- a/harbour/source/vm/memvars.c +++ b/harbour/source/vm/memvars.c @@ -1514,6 +1514,13 @@ HB_FUNC( __MVSAVE ) buffer[ 0 ] = '\x1A'; hb_fsWrite( fhnd, buffer, 1 ); + /* NOTE: Here, we're not CA-Cl*pper compatible by default settings. + [vszakats] */ +#ifndef HB_C52_STRICT + if( hb_setGetHardCommit() ) + hb_fsCommit( fhnd ); +#endif + hb_fsClose( fhnd ); } diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index baea88c68b..890a4cbed7 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -978,7 +978,8 @@ FUNCTION hbmk( aArgs, /* @ */ lPause, /* @ */ lUTF8 ) CASE hbmk[ _HBMK_cARCH ] == "win" /* Order is significant. watcom also keeps a cl.exe in its binary dir. */ - aCOMPDET := { { {|| FindInPath( hbmk[ _HBMK_cCCPREFIX ] + "gcc" ) }, "mingw" },; + aCOMPDET := { { {|| FindInPath( "cygstart" ) }, "cygwin" },; + { {|| FindInPath( hbmk[ _HBMK_cCCPREFIX ] + "gcc" ) }, "mingw" },; { {|| iif( ! Empty( GetEnv( "WATCOM" ) ),; FindInPath( "wpp386" ),; NIL ) }, "watcom" },; @@ -991,7 +992,6 @@ FUNCTION hbmk( aArgs, /* @ */ lPause, /* @ */ lUTF8 ) { {|| FindInPath( "pocc" ) }, "pocc" },; { {|| iif( ( tmp1 := FindInPath( "icl" ) ) != NIL .AND. "itanium" $ Lower( tmp1 ), tmp1, NIL ) }, "iccia64" },; { {|| FindInPath( "icl" ) }, "icc" },; - { {|| FindInPath( "cygstart" ) }, "cygwin" },; { {|| FindInPath( "xcc" ) }, "xcc" },; { {|| FindInPath( "x86_64-w64-mingw32-gcc" ) }, "mingw64", "x86_64-w64-mingw32-" } } aCOMPSUP := { "mingw", "msvc", "bcc", "watcom", "icc", "pocc", "xcc", "cygwin",;