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",;