2010-07-14 10:10 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* include/hbapicdp.h
  * src/rtl/cdpapi.c
  * src/rtl/cdpapihb.c
  + tests/utf8at.prg
    + Added hb_cdpUTF8StringAt()
    ; Patch by Carlos Bacco. Many thanks!

  * include/hbextern.ch
  * include/hbapicdp.h
  * src/rtl/cdpapi.c
  * src/rtl/cdpapihb.c
    ; my modifications to above patch:
    - Using HB_BOOL instead of int for flag value.
    % HB_UTF8AT(), HB_UTF8RAT() optimized to use hb_param(),
      plus optimized out variables.
    ! HB_UTF8AT(), HB_UTF8RAT() fixed 'nEnd < nStart' case.
    ! Some formatting.
    + Added new functions to hbextern.ch.

  * tests/utf8at.prg
    * Changed to use UTF8 string as base.
    * Avoiding "OEM" and "ANSI" Microsoft misleading terms,
      using standard CP names instead.
    ! Using HB_TRANSLATE() to convert between CPs (instead
      of non-portable, Windows-only HB_OEMTOANSI()/HB_ANSITOOEM()
      functions).
    * Formatting.
    * Using '?' instead of QOUT(), plus added simpleio.ch to
      allow redirection of output.

  * contrib/make.hbs
    * Minor step to make dependency evaluation and automatic
      sorting of components for build.

  * utils/hbmk2/hbmk2.pt_BR.po
  * utils/hbmk2/hbmk2.hu_HU.po
  * utils/hbmk2/hbmk2.prg
    + Added -vcshead support for Monotone version control
      software.
    % Cleaned and optimized "in dir" C compiler run mode.
      (currently used by mingw)
    ! Fixed "in dir" C compiler run mode when using -jobs=
      option for multithreaded builds.
    % Little optimization to --hbinfo option.
This commit is contained in:
Viktor Szakats
2010-07-14 08:14:32 +00:00
parent 6b778764a7
commit ec5c6619dc
10 changed files with 321 additions and 48 deletions

View File

@@ -16,6 +16,52 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-07-14 10:10 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/hbapicdp.h
* src/rtl/cdpapi.c
* src/rtl/cdpapihb.c
+ tests/utf8at.prg
+ Added hb_cdpUTF8StringAt()
; Patch by Carlos Bacco. Many thanks!
* include/hbextern.ch
* include/hbapicdp.h
* src/rtl/cdpapi.c
* src/rtl/cdpapihb.c
; my modifications to above patch:
- Using HB_BOOL instead of int for flag value.
% HB_UTF8AT(), HB_UTF8RAT() optimized to use hb_param(),
plus optimized out variables.
! HB_UTF8AT(), HB_UTF8RAT() fixed 'nEnd < nStart' case.
! Some formatting.
+ Added new functions to hbextern.ch.
* tests/utf8at.prg
* Changed to use UTF8 string as base.
* Avoiding "OEM" and "ANSI" Microsoft misleading terms,
using standard CP names instead.
! Using HB_TRANSLATE() to convert between CPs (instead
of non-portable, Windows-only HB_OEMTOANSI()/HB_ANSITOOEM()
functions).
* Formatting.
* Using '?' instead of QOUT(), plus added simpleio.ch to
allow redirection of output.
* contrib/make.hbs
* Minor step to make dependency evaluation and automatic
sorting of components for build.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added -vcshead support for Monotone version control
software.
% Cleaned and optimized "in dir" C compiler run mode.
(currently used by mingw)
! Fixed "in dir" C compiler run mode when using -jobs=
option for multithreaded builds.
% Little optimization to --hbinfo option.
2010-07-13 19:24 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
+ contrib/hbide/dbstruct.ui
+ contrib/hbide/resources/dbstruct.png
@@ -114,7 +160,7 @@
2010-07-12 22:37 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/make.hbs
+ Added support for HB_CONTRIBS ennvar which is to replace
HB_CONTRIBLIBS eventuaally.
HB_CONTRIBLIBS eventually.
* contrib/hbqt/generator/hbqtgen.prg
* contrib/hbqt/hbqt.ch

View File

@@ -444,6 +444,18 @@ PROCEDURE GNUMake( ... )
aUtils,;
hb_ATokens( GetEnv( "HB_BUILD_ADDONS" ),, .T. ) }
OutStd( "! Calculating sorting order for contribs..." + hb_eol() )
FOR EACH aList IN aAll
FOR EACH cProject IN aList
IF ! Empty( cProject )
call_hbmk2_dept( s_cRoot + "bin" + hb_ps(), s_cBase + cProject, @cType )
ENDIF
NEXT
NEXT
OutStd( "! Building contribs..." + hb_eol() )
FOR EACH aList IN aAll
FOR EACH cProject IN aList

View File

@@ -367,6 +367,7 @@ extern HB_EXPORT HB_UCHAR hb_cdpGetChar( PHB_CODEPAGE cdp, HB_BOOL fCtrl, HB
extern HB_EXPORT HB_BOOL hb_cdpGetFromUTF8( PHB_CODEPAGE cdp, HB_BOOL fCtrl, HB_UCHAR ch, int * n, HB_WCHAR * pwc );
extern HB_EXPORT HB_SIZE hb_cdpUTF8StringLength( const char * pSrc, HB_SIZE nLen );
extern HB_EXPORT HB_SIZE hb_cdpUTF8StringAt( const char * szNeedle, HB_SIZE nLenN, const char * szHaystack, HB_SIZE nLenH, HB_SIZE nStart, HB_SIZE nEnd, HB_BOOL fReverse );
extern HB_EXPORT HB_SIZE hb_cdpUTF8StringPeek( const char * pSrc, HB_SIZE nLen, HB_SIZE nPos );
extern HB_EXPORT char * hb_cdpUTF8StringSubstr( const char * pSrc, HB_SIZE nLen, HB_SIZE nFrom, HB_SIZE nCount, HB_SIZE * pnDest );

View File

@@ -817,6 +817,8 @@ EXTERNAL HB_TRANSLATE
EXTERNAL HB_STRTOUTF8
EXTERNAL HB_UTF8TOSTR
EXTERNAL HB_UTF8LEN
EXTERNAL HB_UTF8AT
EXTERNAL HB_UTF8RAT
EXTERNAL HB_UTF8LEFT
EXTERNAL HB_UTF8RIGHT
EXTERNAL HB_UTF8PEEK

View File

@@ -708,6 +708,84 @@ HB_SIZE hb_cdpUTF8StringLength( const char * pSrc, HB_SIZE nLen )
return nDst;
}
HB_SIZE hb_cdpUTF8StringAt( const char * szNeedle, HB_SIZE nLenN,
const char * szHaystack, HB_SIZE nLenH,
HB_SIZE nStart, HB_SIZE nEnd, HB_BOOL fReverse )
{
HB_SIZE nPosN = 0;
HB_SIZE nPosH = 0;
HB_SIZE nPosX = 0;
HB_SIZE nPos = 0;
HB_SIZE nRAt = 0;
HB_SIZE nAt = 0;
HB_WCHAR wcN = 0;
HB_WCHAR wcH = 0;
int nN = 0;
int nH = 0;
while( nPosH < nLenH && nPosN < nLenN && nPos < nEnd )
{
do
{
if( !hb_cdpUTF8ToU16NextChar( ( HB_UCHAR ) szHaystack[ nPosH++ ], &nH, &wcH ) )
{
--nPosH;
nH = 0;
}
} while( nH );
if( ++nPos < nStart )
continue;
do
{
if( !hb_cdpUTF8ToU16NextChar( ( HB_UCHAR ) szNeedle[ nPosN++ ], &nN, &wcN ) )
{
--nPosN;
nN = 0;
}
} while( nN );
if( wcH == wcN )
{
if( nAt == 0 )
{
nAt = nPos;
nPosX = nPosH;
}
if( nPosN == nLenN )
{
if( fReverse )
{
nRAt = nAt;
nPos = nAt;
nAt = 0;
nPosH = nPosX;
nPosX = 0;
nPosN = 0;
}
else
return nAt;
}
}
else
{
if( nAt )
{
nPos = nAt;
nAt = 0;
nPosH = nPosX;
nPosX = 0;
}
nPosN = 0;
}
}
return nRAt;
}
HB_SIZE hb_cdpUTF8StringPeek( const char * pSrc, HB_SIZE nLen, HB_SIZE nPos )
{
if( nLen )

View File

@@ -264,6 +264,54 @@ HB_FUNC( HB_UTF8TOSTR )
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
}
HB_FUNC( HB_UTF8AT )
{
PHB_ITEM pSub = hb_param( 1, HB_IT_STRING );
PHB_ITEM pText = hb_param( 2, HB_IT_STRING );
if( pText && pSub )
{
HB_SIZE nTextLength = hb_itemGetCLen( pText );
HB_SIZE nStart = hb_parnsdef( 3, 1 );
HB_SIZE nEnd = hb_parnsdef( 4, nTextLength ); /* nTextLength can be > UTF8 len. No problem.*/
if( nEnd < nStart )
hb_retns( 0 );
else
hb_retns( hb_cdpUTF8StringAt( hb_itemGetCPtr( pSub ), hb_itemGetCLen( pSub ),
hb_itemGetCPtr( pText ), nTextLength, nStart, nEnd, HB_FALSE ) );
}
else
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
}
/*
* NOTE: In HB_UTF8RAT we are still traversing from
* left to right, as it would be required anyway to
* determine the real string length. [bacco]
*/
HB_FUNC( HB_UTF8RAT )
{
PHB_ITEM pSub = hb_param( 1, HB_IT_STRING );
PHB_ITEM pText = hb_param( 2, HB_IT_STRING );
if( pText && pSub )
{
HB_SIZE nTextLength = hb_itemGetCLen( pText );
HB_SIZE nStart = hb_parnsdef( 3, 1 );
HB_SIZE nEnd = hb_parnsdef( 4, nTextLength ); /* nTextLength can be > UTF8 len. No problem.*/
if( nEnd < nStart )
hb_retns( 0 );
else
hb_retns( hb_cdpUTF8StringAt( hb_itemGetCPtr( pSub ), hb_itemGetCLen( pSub ),
hb_itemGetCPtr( pText ), nTextLength, nStart, nEnd, HB_TRUE ) );
}
else
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
}
HB_FUNC( HB_UTF8SUBSTR )
{
const char * szString = hb_parc( 1 );

50
harbour/tests/utf8at.prg Normal file
View File

@@ -0,0 +1,50 @@
/*
* $Id$
*/
/* WARNING: UTF-8 strings */
/* hb_utf8at / hb_utf8rat test
UTF8 Aware hb_at()/hb_rat() */
#include "simpleio.ch"
REQUEST HB_CODEPAGE_FR850
REQUEST HB_CODEPAGE_FRISO
PROCEDURE Main()
LOCAL u := "Une rêve est la moitié d'une réalité."
LOCAL i := hb_translate( u, "UTF8", "FRISO" )
LOCAL d := hb_translate( u, "UTF8", "FR850" )
LOCAL uu :="é"
LOCAL ii := hb_translate( uu, "UTF8", "FRISO" )
LOCAL dd := hb_translate( uu, "UTF8", "FR850" )
LOCAL l := Len( uu ) + 2
? "ISO-8859-1 -", PadR( ii, l ), "=>", i
?
? "CP850 -", PadR( dd, l ), "=>", d
?
? "UTF-8 -", PadR( uu, l ), "=>", u
?
? at( ii, i ), rat( ii, i ), "- ISO-8859-1 at/rat"
? hb_at( ii, i ), hb_rat( ii, i ), "- ISO-8859-1 hb_at/rat"
? hb_utf8at( ii, i ), hb_utf8rat( ii, i ), "- ISO-8859-1 hb_utf8at/rat"
? at( dd, d ), rat( dd, d ), "- CP850 at/rat"
? hb_at( dd, d ), hb_rat( dd, d ), "- CP850 hb_at/rat"
? hb_utf8at( dd, d ), hb_utf8rat( dd, d ), "- CP850 hb_utf8at/rat"
? at( uu, u ), rat( uu, u ), "- UTF-8 at/rat"
? hb_at( uu, u ), hb_rat( uu, u ), "- UTF-8 hb_at/rat"
? hb_utf8at( uu, u ), hb_utf8rat( uu, u ), "- UTF-8 hb_utf8at/rat"
?
? hb_at( ii, i, 33 ), hb_rat( ii, i, 33 ), hb_at( ii, i, , 33 ), hb_rat( ii, i, , 33 ), "- ISO-8859-1 hb_at/rat"
? hb_utf8at( ii, i, 33 ), hb_utf8rat( ii, i, 33 ), hb_utf8at( ii, i, , 33 ), hb_utf8rat( ii, i, , 33 ), "- ISO-8859-1 hb_utf8at/rat"
? hb_at( dd, d, 33 ), hb_rat( dd, d, 33 ), hb_at( dd, d, , 33 ), hb_rat( dd, d, , 33 ), "- CP850 hb_at/rat"
? hb_utf8at( dd, d, 33 ), hb_utf8rat( dd, d, 33 ), hb_utf8at( dd, d, , 33 ), hb_utf8rat( dd, d, , 33 ), "- CP850 hb_utf8at/rat"
? hb_at( uu, u, 33 ), hb_rat( uu, u, 33 ), hb_at( uu, u, , 33 ), hb_rat( uu, u, , 33 ), "- UTF-8 hb_at/rat"
? hb_utf8at( uu, u, 33 ), hb_utf8rat( uu, u, 33 ), hb_utf8at( uu, u, , 33 ), hb_utf8rat( uu, u, , 33 ), "- UTF-8 hb_utf8at/rat"
RETURN

View File

@@ -824,8 +824,8 @@ msgstr "hozzon l
#: hbmk2.prg:7941
#, c-format
msgid "generate .ch header file with local repository information. SVN, CVS, Git, Mercurial, Bazaar and Fossil are currently supported. Generated header will define macro _HBMK_VCS_TYPE_ with the name of detected VCS and _HBMK_VCS_ID_ with the unique ID of local repository"
msgstr "hozzon létre egy .ch fejlécet a helyi források verziókövetõ (VCS) adatbázisbeli adataival. SVN, CVS, Git, Mercurial, Bazaar és Fossil támogatottak. Generált fejléc _HBMK_VCS_TYPE_ makrója adja vissza a VCS típusát, míg _HBMK_VCS_ID_ az aktuális állapot egyedi azonosítóját"
msgid "generate .ch header file with local repository information. SVN, CVS, Git, Mercurial, Bazaar, Fossil and Monotone are currently supported. Generated header will define macro _HBMK_VCS_TYPE_ with the name of detected VCS and _HBMK_VCS_ID_ with the unique ID of local repository"
msgstr "hozzon létre egy .ch fejlécet a helyi források verziókövetõ (VCS) adatbázisbeli adataival. SVN, CVS, Git, Mercurial, Bazaar, Fossil és Monotone támogatottak. Generált fejléc _HBMK_VCS_TYPE_ makrója adja vissza a VCS típusát, míg _HBMK_VCS_ID_ az aktuális állapot egyedi azonosítóját"
#: hbmk2.prg:6846
#, c-format

View File

@@ -728,6 +728,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
LOCAL nOpt_FNF
LOCAL nCCompVer
LOCAL lCHD_Comp := .F.
LOCAL cCHD_DirOld
LOCAL cCommand
LOCAL aCommand
@@ -4151,30 +4152,6 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
l_aPRG_TODO := hbmk[ _HBMK_aPRG ]
ENDIF
/* Header paths */
IF ! lSkipBuild .AND. ! lStopAfterInit
FOR EACH tmp IN hbmk[ _HBMK_aINCPATH ]
IF ! Empty( tmp )
/* Different escaping for internal and external compiler. */
IF hbmk[ _HBMK_nHBMODE ] == _HBMODE_NATIVE
AAdd( hbmk[ _HBMK_aOPTPRG ], "-i" + tmp )
ELSE
AAdd( hbmk[ _HBMK_aOPTPRG ], "-i" + FNameEscape( tmp, hbmk[ _HBMK_nCmd_Esc ] ) )
ENDIF
IF ! hbmk[ _HBMK_lStopAfterHarbour ]
IF lCHD_Comp
/* Convert source filenames relative to the target dir */
AAdd( hbmk[ _HBMK_aOPTC ], StrTran( cOptIncMask, "{DI}", FNameEscape( PathMakeAbsolute( tmp, DirAddPathSep( PathMakeRelative( PathNormalize( PathMakeAbsolute( hbmk[ _HBMK_cWorkDir ], hb_pwd() ) ), hb_pwd(), .T. ) ) ), hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nCmd_FNF ] ) ) )
ELSE
AAdd( hbmk[ _HBMK_aOPTC ], StrTran( cOptIncMask, "{DI}", FNameEscape( tmp, hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nCmd_FNF ] ) ) )
ENDIF
AAdd( hbmk[ _HBMK_aOPTRES ], StrTran( cOptIncMask, "{DI}", FNameEscape( tmp, hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nCmd_FNF ] ) ) )
ENDIF
ENDIF
NEXT
ENDIF
/* Dump hbmk2 build information */
IF lDumpInfo
@@ -4190,6 +4167,33 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
RETURN 0
ENDIF
/* Header paths */
IF ! lSkipBuild .AND. ! lStopAfterInit
IF lCHD_Comp
tmp2 := DirAddPathSep( PathMakeRelative( PathNormalize( PathMakeAbsolute( hbmk[ _HBMK_cWorkDir ], hb_pwd() ) ), hb_pwd(), .T. ) )
ENDIF
FOR EACH tmp IN hbmk[ _HBMK_aINCPATH ]
IF ! Empty( tmp )
/* Different escaping for internal and external compiler. */
IF hbmk[ _HBMK_nHBMODE ] == _HBMODE_NATIVE
AAdd( hbmk[ _HBMK_aOPTPRG ], "-i" + tmp )
ELSE
AAdd( hbmk[ _HBMK_aOPTPRG ], "-i" + FNameEscape( tmp, hbmk[ _HBMK_nCmd_Esc ] ) )
ENDIF
IF ! hbmk[ _HBMK_lStopAfterHarbour ]
IF lCHD_Comp
/* Rebase source dirs relative to the target dir */
AAdd( hbmk[ _HBMK_aOPTC ], StrTran( cOptIncMask, "{DI}", FNameEscape( PathNormalize( PathMakeAbsolute( tmp, tmp2 ) ), hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nCmd_FNF ] ) ) )
ELSE
AAdd( hbmk[ _HBMK_aOPTC ], StrTran( cOptIncMask, "{DI}", FNameEscape( tmp, hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nCmd_FNF ] ) ) )
ENDIF
AAdd( hbmk[ _HBMK_aOPTRES ], StrTran( cOptIncMask, "{DI}", FNameEscape( tmp, hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nCmd_FNF ] ) ) )
ENDIF
ENDIF
NEXT
ENDIF
/* Check if we've found all dependencies */
IF ! lSkipBuild .AND. ! lStopAfterInit .AND. ! hbmk[ _HBMK_lStopAfterHarbour ]
@@ -4951,6 +4955,19 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
cOpt_CompC := StrTran( cOpt_CompC, "{OO}" , FNameEscape( FNameExtSet( hbmk[ _HBMK_cPROGNAME ], cObjExt ), nOpt_Esc, nOpt_FNF ) )
cOpt_CompC := StrTran( cOpt_CompC, "{OW}" , FNameEscape( hbmk[ _HBMK_cWorkDir ], nOpt_Esc, nOpt_FNF ) )
IF lCHD_Comp
tmp2 := DirAddPathSep( PathMakeRelative( PathNormalize( PathMakeAbsolute( hbmk[ _HBMK_cWorkDir ], hb_pwd() ) ), hb_pwd(), .T. ) )
IF hbmk[ _HBMK_lDONTEXEC ]
cCHD_DirOld := NIL
ELSE
cCHD_DirOld := hb_pwd()
IF hbmk[ _HBMK_lTRACE ] .AND. hbmk[ _HBMK_lInfo ]
hbmk_OutStd( hbmk, hb_StrFormat( I_( "'cd' to: %1$s" ), hbmk[ _HBMK_cWorkDir ] ) )
ENDIF
DirChange( hbmk[ _HBMK_cWorkDir ] )
ENDIF
ENDIF
aThreads := {}
FOR EACH aTODO IN ArraySplit( l_aCGEN_TODO, l_nJOBS )
@@ -4958,7 +4975,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
/* Convert source filenames relative to the target dir */
tmp := AClone( aTODO )
FOR EACH tmp1 IN tmp
tmp1 := PathMakeAbsolute( tmp1, DirAddPathSep( PathMakeRelative( PathNormalize( PathMakeAbsolute( hbmk[ _HBMK_cWorkDir ], hb_pwd() ) ), hb_pwd(), .T. ) ) )
tmp1 := PathMakeAbsolute( tmp1, tmp2 )
NEXT
cOpt_CompCLoop := AllTrim( StrTran( cOpt_CompC, "{LC}" , ArrayToList( tmp,, nOpt_Esc, nOpt_FNF ) ) )
ELSE
@@ -4997,9 +5014,9 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
IF ! hbmk[ _HBMK_lDONTEXEC ]
IF hb_mtvm() .AND. Len( aTODO:__enumBase() ) > 1
AAdd( aThreads, { hb_threadStart( @hbmk2_hb_processRunInDir(), iif( lCHD_Comp, hbmk[ _HBMK_cWorkDir ], NIL ), cCommand ), cCommand } )
AAdd( aThreads, { hb_threadStart( @hb_processRun(), cCommand ), cCommand } )
ELSE
IF ( tmp := hbmk2_hb_processRunInDir( iif( lCHD_Comp, hbmk[ _HBMK_cWorkDir ], NIL ), cCommand ) ) != 0
IF ( tmp := hb_processRun( cCommand ) ) != 0
hbmk_OutErr( hbmk, hb_StrFormat( I_( "Error: Running C/C++ compiler. %1$s" ), hb_ntos( tmp ) ) )
IF ! hbmk[ _HBMK_lQuiet ]
OutErr( cCommand + _OUT_EOL )
@@ -5035,6 +5052,13 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
ENDIF
NEXT
ENDIF
IF lCHD_Comp .AND. cCHD_DirOld != NIL
DirChange( cCHD_DirOld )
IF hbmk[ _HBMK_lTRACE ] .AND. hbmk[ _HBMK_lInfo ]
hbmk_OutStd( hbmk, I_( "'cd' back." ) )
ENDIF
ENDIF
ENDIF
ELSE
hbmk_OutErr( hbmk, I_( "Error: C/C++ command is not implemented for this platform/compiler." ) )
@@ -5535,21 +5559,6 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
RETURN hbmk[ _HBMK_nErrorLevel ]
STATIC FUNCTION hbmk2_hb_processRunInDir( cNewDir, ... )
LOCAL cOldDir
LOCAL nRetVal
IF cNewDir == NIL
RETURN hb_processRun( ... )
ELSE
cOldDir := hb_pwd()
DirChange( cNewDir )
nRetVal := hb_processRun( ... )
DirChange( cOldDir )
ENDIF
RETURN nRetVal
STATIC PROCEDURE DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt )
LOCAL cMakeImpLibDLL
LOCAL tmp, tmp1
@@ -9477,6 +9486,7 @@ STATIC FUNCTION win_implib_command_msvc( hbmk, cCommand, cSourceDLL, cTargetLib,
#define _VCS_CVS 4
#define _VCS_BAZAAR 5
#define _VCS_FOSSIL 6
#define _VCS_MONOTONE 7
STATIC FUNCTION VCSDetect( cDir )
@@ -9492,6 +9502,7 @@ STATIC FUNCTION VCSDetect( cDir )
CASE hb_DirExists( cDir + ".hg" ) ; RETURN _VCS_MERCURIAL
CASE hb_DirExists( cDir + ".bzr" ) ; RETURN _VCS_BAZAAR
CASE hb_FileExists( cDir + "_FOSSIL_" ) ; RETURN _VCS_FOSSIL
CASE hb_DirExists( cDir + "_MTN" ) ; RETURN _VCS_MONOTONE
CASE hb_DirExists( cDir + "CVS" ) ; RETURN _VCS_CVS
CASE hb_DirExists( cDir + "_svn" ) ; RETURN _VCS_SVN /* NOTE: When SVN_ASP_DOT_NET_HACK envvar is set. [vszakats] */
ENDCASE
@@ -9530,6 +9541,10 @@ STATIC FUNCTION VCSID( cDir, cVCSHEAD, /* @ */ cType )
cType := "fossil"
cCommand := "fossil info"
EXIT
CASE _VCS_MONOTONE
cType := "monotone"
cCommand := "mtn status"
EXIT
OTHERWISE
/* No version control system detected, roll our own. */
cType := "hbmk"
@@ -9608,6 +9623,27 @@ STATIC FUNCTION VCSID( cDir, cVCSHEAD, /* @ */ cType )
ENDIF
ENDIF
EXIT
CASE _VCS_MONOTONE
/* ----------------------------------------------------------------------
Revision: c79f2332a1e9036bb52ac1f412b92e6a69fc9071
Parent: bf8b93290ea4e8e946961f51c47f8f4638f65372
Author: ???
Date: 2010.07.14. 1:11:47
Branch: free.lp.se:LPlib
Changes against parent bf8b93290ea4e8e946961f51c47f8f4638f65372
no changes
*/
tmp := At( "Revision:", cStdOut )
IF tmp > 0
cStdOut := StrTran( LTrim( SubStr( cStdOut, tmp + Len( "Revision:" ) ) ), Chr( 13 ) )
tmp := At( Chr( 10 ), cStdOut )
IF tmp > 0
cResult := Left( cStdOut, tmp - 1 )
ENDIF
ENDIF
EXIT
ENDSWITCH
ENDIF
ENDIF
@@ -10306,7 +10342,7 @@ STATIC PROCEDURE ShowHelp( hbmk, lLong )
{ "-[no]warn[=lev]" , I_( "set C compiler warning level\n<lev> can be: max, yes, low, no, def (default: yes)" ) },;
{ "-[no]compr[=lev]" , I_( "compress executable/dynamic lib (needs UPX)\n<lev> can be: min, max, def" ) },;
{ "-[no]run" , I_( "run/do not run output executable" ) },;
{ "-vcshead=<file>" , I_( "generate .ch header file with local repository information. SVN, CVS, Git, Mercurial, Bazaar and Fossil are currently supported. Generated header will define macro _HBMK_VCS_TYPE_ with the name of detected VCS and _HBMK_VCS_ID_ with the unique ID of local repository" ) },;
{ "-vcshead=<file>" , I_( "generate .ch header file with local repository information. SVN, CVS, Git, Mercurial, Bazaar, Fossil and Monotone are currently supported. Generated header will define macro _HBMK_VCS_TYPE_ with the name of detected VCS and _HBMK_VCS_ID_ with the unique ID of local repository" ) },;
{ "-tshead=<file>" , I_( "generate .ch header file with timestamp information. Generated header will define macros _HBMK_BUILD_DATE_, _HBMK_BUILD_TIME_, _HBMK_BUILD_TIMESTAMP_ with the date/time of build" ) },;
{ "-icon=<file>" , I_( "set <file> as application icon. <file> should be a supported format on the target platform" ) },;
{ "-instfile=<g:file>" , I_( "add <file> in to the list of files to be copied to path specified by -instpath option. <g> is an optional copy group, it must be at least two characters long." ) },;

View File

@@ -885,8 +885,8 @@ msgstr "O arquivo de configura
#: hbmk2.prg:7942
#, c-format
msgid "generate .ch header file with local repository information. SVN, CVS, Git, Mercurial, Bazaar and Fossil are currently supported. Generated header will define macro _HBMK_VCS_TYPE_ with the name of detected VCS and _HBMK_VCS_ID_ with the unique ID of local repository"
msgstr "gera um arquivo .ch com informações do repositório local. SVN, CVS, Git, Mercurial, Bazaar e Fossil estão entre as ferramentas atualmente suportadas. O arquivo gerado conterá a diretriva _HBMK_VCS_TYPE_ com o nome do VCS detectado e _HBMK_VCS_ID_ com o unique ID do repositório local"
msgid "generate .ch header file with local repository information. SVN, CVS, Git, Mercurial, Bazaar, Fossil and Monotone are currently supported. Generated header will define macro _HBMK_VCS_TYPE_ with the name of detected VCS and _HBMK_VCS_ID_ with the unique ID of local repository"
msgstr "gera um arquivo .ch com informações do repositório local. SVN, CVS, Git, Mercurial, Bazaar, Fossil e Monotone estão entre as ferramentas atualmente suportadas. O arquivo gerado conterá a diretriva _HBMK_VCS_TYPE_ com o nome do VCS detectado e _HBMK_VCS_ID_ com o unique ID do repositório local"
#: hbmk2.prg:5805
#, c-format