2009-05-25 23:06 UTC+0200 Viktor Szakats (harbour.01 syenar hu)

* contrib/gtwvg/wvgsink.c
    ! Fixed warning.
    * Some formatting, minor cleanup.

  * source/rtl/hbi18n2.prg
    + __I18N_POTARRAYSAVE() got logical flag to suppress Harbour version
      number in saved file comment.
    + __I18N_POTARRAYSAVE() got logical flag to suppress source
      reference information in save file. This way it's possible to
      lessen the number of .po file updates and to avoid the growth
      caused by texts moving around while files are being edited.

  * utils/hbmk2/hbmk2.prg
    + Added option to save .po files in a version repository friendly
      way, this means no Harbour version number and no source file
      references in .po files. You can activate this using -minipo 
      option.
This commit is contained in:
Viktor Szakats
2009-05-25 21:07:11 +00:00
parent 476c5cbf58
commit 7b60dd6694
4 changed files with 90 additions and 66 deletions

View File

@@ -17,6 +17,25 @@
past entries belonging to these authors: Viktor Szakats.
*/
2009-05-25 23:06 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/gtwvg/wvgsink.c
! Fixed warning.
* Some formatting, minor cleanup.
* source/rtl/hbi18n2.prg
+ __I18N_POTARRAYSAVE() got logical flag to suppress Harbour version
number in saved file comment.
+ __I18N_POTARRAYSAVE() got logical flag to suppress source
reference information in save file. This way it's possible to
lessen the number of .po file updates and to avoid the growth
caused by texts moving around while files are being edited.
* utils/hbmk2/hbmk2.prg
+ Added option to save .po files in a version repository friendly
way, this means no Harbour version number and no source file
references in .po files. You can activate this using -minipo
option.
2009-05-25 23:29 UTC+0300 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
* harbour/contrib/gtwvg/wvgsink.c
! fixed, cleaned C++ compilation

View File

@@ -313,34 +313,34 @@ static HRESULT STDMETHODCALLTYPE QueryInterface( IEventHandler *self, REFIID vTa
* IDispatch GUID, then we'll return the IExample3, since it can masquerade
* as an IDispatch too
*/
if ( IsEqualIID( vTableGuid, HB_ID_REF( IID_IUnknown ) ) )
if( IsEqualIID( vTableGuid, HB_ID_REF( IID_IUnknown ) ) )
{
*ppv = ( IUnknown * ) self;
/* Increment the count of callers who have an outstanding pointer to self object */
#ifdef __HBTOOUT__
hb_ToOutDebug( ".................................if ( IsEqualIID( vTableGuid, HB_ID_REF( IID_IUnknown ) ) )" );
hb_ToOutDebug( ".................................if( IsEqualIID( vTableGuid, HB_ID_REF( IID_IUnknown ) ) )" );
#endif
HB_VTBL( self )->AddRef( HB_THIS( self ) );
return S_OK;
}
if ( IsEqualIID( vTableGuid, HB_ID_REF( IID_IDispatch ) ) )
if( IsEqualIID( vTableGuid, HB_ID_REF( IID_IDispatch ) ) )
{
*ppv = ( IDispatch * ) self;
#ifdef __HBTOOUT__
hb_ToOutDebug( ".................................if ( IsEqualIID( vTableGuid, HB_ID_REF( IID_IDispatch ) ) )" );
hb_ToOutDebug( ".................................if( IsEqualIID( vTableGuid, HB_ID_REF( IID_IDispatch ) ) )" );
#endif
HB_VTBL( self )->AddRef( HB_THIS( self ) );
return S_OK;
}
if ( IsEqualIID( vTableGuid, HB_ID_REF( ( ( MyRealIEventHandler * ) self )->device_event_interface_iid ) ) )
if( IsEqualIID( vTableGuid, HB_ID_REF( ( ( MyRealIEventHandler * ) self )->device_event_interface_iid ) ) )
{
if( ++( ( ( MyRealIEventHandler * ) self )->iID_riid ) == 1 )
{
*ppv = ( IDispatch* ) self;
#ifdef __HBTOOUT__
hb_ToOutDebug( ".................................if ( IsEqualIID( vTableGuid, HB_ID_REF( ( ( MyRealIEventHandler * ) self )->device_event_interface_iid ) ) )" );
hb_ToOutDebug( ".................................if( IsEqualIID( vTableGuid, HB_ID_REF( ( ( MyRealIEventHandler * ) self )->device_event_interface_iid ) ) )" );
#endif
HB_VTBL( self )->AddRef( HB_THIS( self ) );
}
@@ -379,7 +379,7 @@ static ULONG STDMETHODCALLTYPE Release( IEventHandler *self )
hb_ToOutDebug( "static ULONG STDMETHODCALLTYPE Release( IEventHandler *self )->count = %i",
( ( MyRealIEventHandler * ) self )->count - 1 );
#endif
if ( --( ( MyRealIEventHandler * ) self )->count == 0 )
if( --( ( MyRealIEventHandler * ) self )->count == 0 )
{
if( ( ( MyRealIEventHandler * ) self)->pSelf )
{
@@ -455,7 +455,7 @@ static HRESULT STDMETHODCALLTYPE Invoke( IEventHandler *self, DISPID dispid, REF
#endif
/* We implement only a "default" interface */
if ( !IsEqualIID( riid, HB_ID_REF( IID_NULL ) ) )
if( !IsEqualIID( riid, HB_ID_REF( IID_NULL ) ) )
{
return( ( HRESULT ) DISP_E_UNKNOWNINTERFACE );
}
@@ -466,12 +466,12 @@ static HRESULT STDMETHODCALLTYPE Invoke( IEventHandler *self, DISPID dispid, REF
HB_SYMBOL_UNUSED( puArgErr );
Key = hb_itemNew( NULL );
if ( hb_hashScan( ( ( MyRealIEventHandler * ) self )->pEvents, hb_itemPutNL( Key, dispid ), &ulPos ) )
if( hb_hashScan( ( ( MyRealIEventHandler * ) self )->pEvents, hb_itemPutNL( Key, dispid ), &ulPos ) )
{
PHB_ITEM pArray = hb_hashGetValueAt( ( ( MyRealIEventHandler * ) self )->pEvents, ulPos );
PHB_ITEM pExec = hb_arrayGetItemPtr( pArray, 1 );
if ( pExec )
if( pExec )
{
hb_vmPushState();
@@ -487,7 +487,7 @@ static HRESULT STDMETHODCALLTYPE Invoke( IEventHandler *self, DISPID dispid, REF
PHB_ITEM pObject = hb_arrayGetItemPtr( pArray, 3 );
hb_vmPushSymbol( hb_dynsymSymbol( hb_dynsymFindName( hb_itemGetCPtr( pExec ) ) ) );
if ( HB_IS_OBJECT( pObject ) )
if( HB_IS_OBJECT( pObject ) )
hb_vmPush( pObject );
else
hb_vmPushNil();
@@ -516,23 +516,19 @@ static HRESULT STDMETHODCALLTYPE Invoke( IEventHandler *self, DISPID dispid, REF
}
/* execute */
hb_vmDo( iArg );
hb_vmDo( ( USHORT ) iArg );
for( i=iArg; i > 0; i-- )
for( i = iArg; i > 0; i-- )
{
if( HB_IS_BYREF( pItemArray[ iArg-i ] ) )
{
hb_oleItemToVariant( &( params->rgvarg[ iArg-i ] ), pItemArray[ iArg-i ] );
}
}
/* Pritpal */
if ( iArg )
if( iArg )
{
for( i=iArg; i > 0; i-- )
{
for( i = iArg; i > 0; i-- )
hb_itemRelease( pItemArray[ i-1 ] );
}
}
hb_vmPopState();
}
@@ -597,13 +593,13 @@ static HRESULT SetupConnectionPoint( device_interface* pdevice_interface, REFIID
( ( MyRealIEventHandler * ) thisobj )->iID_riid = 0;
hr = HB_VTBL( thisobj )->QueryInterface( HB_THIS_( thisobj ) HB_ID_REF( IID_IUnknown ), (void **) (void*) &pIUnknown );
if (hr == S_OK && pIUnknown)
if(hr == S_OK && pIUnknown)
{
hr = HB_VTBL( pdevice_interface )->QueryInterface( HB_THIS_( pdevice_interface ) HB_ID_REF( IID_IConnectionPointContainer ), (void**) (void*) &pIConnectionPointContainerTemp);
if ( hr == S_OK && pIConnectionPointContainerTemp )
if( hr == S_OK && pIConnectionPointContainerTemp )
{
hr = HB_VTBL( pIConnectionPointContainerTemp )->EnumConnectionPoints( HB_THIS_( pIConnectionPointContainerTemp ) &m_pIEnumConnectionPoints );
if ( hr == S_OK && m_pIEnumConnectionPoints )
if( hr == S_OK && m_pIEnumConnectionPoints )
{
do
{
@@ -611,7 +607,7 @@ static HRESULT SetupConnectionPoint( device_interface* pdevice_interface, REFIID
if( hr == S_OK )
{
hr = HB_VTBL( m_pIConnectionPoint )->GetConnectionInterface( HB_THIS_( m_pIConnectionPoint ) &rriid );
if ( hr == S_OK )
if( hr == S_OK )
{
/************** This has to be review *******************
PellesC was generating GPF at this point
@@ -622,7 +618,7 @@ static HRESULT SetupConnectionPoint( device_interface* pdevice_interface, REFIID
#endif
hr = HB_VTBL( m_pIConnectionPoint )->Advise( HB_THIS_( m_pIConnectionPoint ) pIUnknown, &dwCookie );
if ( hr == S_OK )
if( hr == S_OK )
{
( ( MyRealIEventHandler* ) thisobj )->pIConnectionPoint = m_pIConnectionPoint;
( ( MyRealIEventHandler* ) thisobj )->dwEventCookie = dwCookie;
@@ -662,7 +658,7 @@ HB_FUNC( HB_AX_SHUTDOWNCONNECTIONPOINT )
hb_ToOutDebug( "---------------------------------------------" );
#endif
#if 1
if ( hSink && hSink->pIConnectionPoint )
if( hSink && hSink->pIConnectionPoint )
{
hSink->dwEventCookie = 0;
HB_VTBL( hSink->pIConnectionPoint )->Release( HB_THIS( hSink->pIConnectionPoint ) );
@@ -773,9 +769,9 @@ HB_FUNC( HB_AX_ATLAXWININIT )
#else
AtlAxWinInit = ( PATLAXWININIT ) GetProcAddress( hLib, "AtlAxWinInit" );
#endif
if ( AtlAxWinInit )
if( AtlAxWinInit )
{
if ( ( AtlAxWinInit )() )
if( ( AtlAxWinInit )() )
{
bRet = TRUE;
}
@@ -837,7 +833,7 @@ HB_FUNC( HB_AX_ATLAXCREATECONTROL )
#else
AtlAxCreateControl = ( PATLAXCREATECONTROL ) GetProcAddress( hLib, "AtlAxCreateControl" );
#endif
if ( AtlAxCreateControl )
if( AtlAxCreateControl )
{
LPTSTR cCaption = HB_TCHAR_CONVTO( Caption );
LPTSTR cClass = HB_TCHAR_CONVTO( szClass );
@@ -1100,8 +1096,8 @@ typedef struct {
int LoadTypeInformation( IDispatch* pDisp ) /* pass dispatch interface */
{
/*UINT nTypeInfoCount;
*m_hRet = m_pDisp->GetTypeInfoCount(&nTypeInfoCount);
*if(m_hRet!=S_OK||nTypeInfoCount==0)
*m_hRet = m_pDisp->GetTypeInfoCount( &nTypeInfoCount );
*if( m_hRet != S_OK || nTypeInfoCount == 0 )
*{
* #ifdef XYDISPDRIVER_DEBUG
* _tprintf(_T("GetTypeInfoCount failed or no type info: %x\n"),m_hRet);
@@ -1111,7 +1107,7 @@ int LoadTypeInformation( IDispatch* pDisp ) /* pass dispatch interface */
ITypeInfo* pTypeInfo;
TYPEATTR* pTypeAttr;
HRESULT hr;
int i,j;
int i, j;
unsigned int nCount;
int m_nMethodCount;
int m_nVarCount;
@@ -1186,7 +1182,7 @@ int LoadTypeInformation( IDispatch* pDisp ) /* pass dispatch interface */
}
pTypeInfo->lpVtbl->ReleaseTypeAttr( pTypeInfo, pTypeAttr );
pTypeInfo->lpVtbl->Release(pTypeInfo);
pTypeInfo->lpVtbl->Release( pTypeInfo );
if( pTempAttr == NULL )
{
@@ -1216,7 +1212,7 @@ int LoadTypeInformation( IDispatch* pDisp ) /* pass dispatch interface */
hb_ToOutDebug( "--------------- looping through methods ----------------");
for( i=0; i < m_nMethodCount; i++ )
for( i = 0; i < m_nMethodCount; i++ )
{
FUNCDESC* pFuncDesc;
hr = pTypeInfo->lpVtbl->GetFuncDesc( pTypeInfo, i, &pFuncDesc );
@@ -1268,7 +1264,7 @@ int LoadTypeInformation( IDispatch* pDisp ) /* pass dispatch interface */
VariantInit( m_pDispInfo[i].m_pOutput );
m_pDispInfo[i].m_vtOutputType = pFuncDesc->elemdescFunc.tdesc.vt;
if( m_pDispInfo[i].m_vtOutputType==VT_VOID||m_pDispInfo[i].m_vtOutputType==VT_NULL )
if( m_pDispInfo[i].m_vtOutputType == VT_VOID || m_pDispInfo[i].m_vtOutputType == VT_NULL )
{
m_pDispInfo[i].m_vtOutputType = VT_EMPTY;
}
@@ -1278,7 +1274,7 @@ int LoadTypeInformation( IDispatch* pDisp ) /* pass dispatch interface */
m_pDispInfo[i].m_bstrName, /* wide-character string */
-1, /* number of chars in string. */
cBuffer, /* buffer for new string */
128, /* size of buffer */
sizeof( cBuffer ), /* size of buffer */
NULL, /* default for unmappable chars */
NULL /* set when default char used */
);
@@ -1294,11 +1290,11 @@ int LoadTypeInformation( IDispatch* pDisp ) /* pass dispatch interface */
m_pDispInfo[i].m_pParamTypes = (WORD*) hb_xgrab( sizeof(WORD) * (m_pDispInfo[i].m_nParamCount+1));
for( j=0; j<m_pDispInfo[i].m_nParamCount; j++ )
{
if( pFuncDesc->lprgelemdescParam[j].tdesc.vt==VT_SAFEARRAY )
if( pFuncDesc->lprgelemdescParam[j].tdesc.vt == VT_SAFEARRAY )
{
m_pDispInfo[i].m_pParamTypes[j] = (pFuncDesc->lprgelemdescParam[j].tdesc.lptdesc->vt)|VT_ARRAY;
}
else if( pFuncDesc->lprgelemdescParam[j].tdesc.vt==VT_PTR )
else if( pFuncDesc->lprgelemdescParam[j].tdesc.vt == VT_PTR )
{
m_pDispInfo[i].m_pParamTypes[j] = (pFuncDesc->lprgelemdescParam[j].tdesc.lptdesc->vt)|VT_BYREF;
}
@@ -1313,10 +1309,10 @@ int LoadTypeInformation( IDispatch* pDisp ) /* pass dispatch interface */
hb_ToOutDebug( "--------------- looping through var count -------------------");
for( i=m_nMethodCount; i<m_nMethodCount+m_nVarCount; i++ )
for( i = m_nMethodCount; i < m_nMethodCount + m_nVarCount; i++ )
{
VARDESC* pVarDesc;
hr = pTypeInfo->lpVtbl->GetVarDesc(pTypeInfo, i-m_nMethodCount, &pVarDesc);
hr = pTypeInfo->lpVtbl->GetVarDesc(pTypeInfo, i - m_nMethodCount, &pVarDesc);
if( hr != S_OK )
{
pTypeInfo->lpVtbl->ReleaseTypeAttr( pTypeInfo, pTypeAttr );
@@ -1328,12 +1324,12 @@ int LoadTypeInformation( IDispatch* pDisp ) /* pass dispatch interface */
m_pDispInfo[i].m_dispID = pVarDesc->memid;
m_pDispInfo[i+m_nVarCount].m_dispID = m_pDispInfo[i].m_dispID;
hr = pTypeInfo->lpVtbl->GetNames( pTypeInfo, m_pDispInfo[i].m_dispID ,&m_pDispInfo[i].m_bstrName,1,&nCount );
hr = pTypeInfo->lpVtbl->GetNames( pTypeInfo, m_pDispInfo[i].m_dispID, &m_pDispInfo[i].m_bstrName, 1, &nCount );
if( hr != S_OK )
{
pTypeInfo->lpVtbl->ReleaseVarDesc(pTypeInfo, pVarDesc);
pTypeInfo->lpVtbl->ReleaseTypeAttr(pTypeInfo, pTypeAttr);
pTypeInfo->lpVtbl->Release(pTypeInfo);
pTypeInfo->lpVtbl->ReleaseVarDesc( pTypeInfo, pVarDesc );
pTypeInfo->lpVtbl->ReleaseTypeAttr( pTypeInfo, pTypeAttr );
pTypeInfo->lpVtbl->Release( pTypeInfo );
/*m_nMethodCount = m_nVarCount = m_nDispInfoCount = 0; */
/* free memory */
return 0;
@@ -1354,13 +1350,13 @@ int LoadTypeInformation( IDispatch* pDisp ) /* pass dispatch interface */
break;
default:
m_pDispInfo[i].m_wFlag = 0;
m_pDispInfo[i+m_nVarCount].m_wFlag = 0;
m_pDispInfo[i + m_nVarCount].m_wFlag = 0;
break;
}
m_pDispInfo[i].m_pOutput = ( VARIANT* ) hb_xgrab( sizeof( VARIANT ) );/* new VARIANT; */
::VariantInit( m_pDispInfo[i].m_pOutput );
m_pDispInfo[i+m_nVarCount].m_pOutput = ( VARIANT* ) hb_xgrab( sizeof( VARIANT ) ); /* new VARIANT; */
VariantInit( m_pDispInfo[i+m_nVarCount].m_pOutput );
VariantInit( m_pDispInfo[i + m_nVarCount].m_pOutput );
pTypeInfo->lpVtbl->ReleaseVarDesc( pTypeInfo, pVarDesc );
}
@@ -1397,11 +1393,11 @@ HB_FUNC( HB_AX_ADVISEEVENTS )
bstrClassID = hb_oleAnsiToSysString( hb_parcx( 2 ) );
hr = IIDFromString( bstrClassID, ( LPIID ) &iid );
SysFreeString( bstrClassID );
if ( hr == S_OK )
if( hr == S_OK )
{
hb_ToOutDebug( "<<<<<<<<<<<<<<< 1 >>>>>>>>>>>>" );
thisobj = ( IEventHandler * ) GlobalAlloc( GMEM_FIXED, sizeof(MyRealIEventHandler ) );
if ( !( thisobj ) )
if( !( thisobj ) )
{
hr = E_OUTOFMEMORY;
}
@@ -1420,11 +1416,11 @@ hb_ToOutDebug( "<<<<<<<<<<<<<<< 3 >>>>>>>>>>>>");
{
hb_ToOutDebug( "<<<<<<<<<<<<<<< 4 >>>>>>>>>>>>");
hr = pCPC->lpVtbl->FindConnectionPoint( pCPC, (REFIID)&iid, &pCP );
if ( hr == S_OK )
if( hr == S_OK )
{
hb_ToOutDebug( "<<<<<<<<<<<<<<< 5 >>>>>>>>>>>>");
hr = pCP->lpVtbl->Advise( pCP, pIUnknown, &dwCookie );
if ( hr == S_OK )
if( hr == S_OK )
{
hb_ToOutDebug( "<<<<<<<<<<<<<<< 6 >>>>>>>>>>>>");
((MyRealIEventHandler *) thisobj)->device_event_interface_iid = iid;

View File

@@ -294,21 +294,24 @@ FUNCTION __I18N_POTARRAYLOAD( cFile, cErrorMsg )
RETURN aTrans
FUNCTION __I18N_POTARRAYSAVE( cFile, aTrans, cErrorMsg )
FUNCTION __I18N_POTARRAYSAVE( cFile, aTrans, cErrorMsg, lVersionNo, lSourceRef )
LOCAL aItem
LOCAL hFile
LOCAL lRet, lPlural
LOCAL cEol, cPOT, cFlg
LOCAL msg
DEFAULT lVersionNo TO .T.
DEFAULT lSourceRef TO .T.
lRet := .F.
cEol := hb_osNewLine()
cFlg := "#, c-format" + cEol
cPOT := "#" + cEol + ;
"# This file is generated by " + hb_version() + cEol + ;
"# This file is generated by " + iif( lVersionNo, hb_version(), "Harbour" ) + cEol + ;
"#" + cEol + cEol
FOR EACH aItem IN aTrans
IF !Empty( aItem[ _I18N_SOURCE ] )
IF lSourceRef .AND. !Empty( aItem[ _I18N_SOURCE ] )
cPOT += "#: "
cPOT += aItem[ _I18N_SOURCE ]
cPOT += cEol

View File

@@ -210,23 +210,24 @@ REQUEST hbmk_KEYW
#define _HBMK_lRUN 38
#define _HBMK_lINC 39
#define _HBMK_lREBUILDPO 40
#define _HBMK_lMINIPO 41
#define _HBMK_aPO 41
#define _HBMK_cHBI 42
#define _HBMK_aLNG 43
#define _HBMK_cPO 44
#define _HBMK_aPO 42
#define _HBMK_cHBI 43
#define _HBMK_aLNG 44
#define _HBMK_cPO 45
#define _HBMK_lDEBUGTIME 45
#define _HBMK_lDEBUGINC 46
#define _HBMK_lDEBUGSTUB 47
#define _HBMK_lDEBUGI18N 48
#define _HBMK_lDEBUGTIME 46
#define _HBMK_lDEBUGINC 47
#define _HBMK_lDEBUGSTUB 48
#define _HBMK_lDEBUGI18N 49
#define _HBMK_cCCPATH 49
#define _HBMK_cCCPREFIX 50
#define _HBMK_cCCPATH 50
#define _HBMK_cCCPREFIX 51
#define _HBMK_lUTF8 51
#define _HBMK_lUTF8 52
#define _HBMK_MAX_ 51
#define _HBMK_MAX_ 52
#ifndef _HBMK_EMBEDDED_
@@ -539,6 +540,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause, /* @ */ lUTF8 )
hbmk[ _HBMK_lRUN ] := .F.
hbmk[ _HBMK_lINC ] := .F.
hbmk[ _HBMK_lREBUILDPO ] := .F.
hbmk[ _HBMK_lMINIPO ] := .F.
hbmk[ _HBMK_lDEBUGTIME ] := .F.
hbmk[ _HBMK_lDEBUGINC ] := .F.
@@ -1257,6 +1259,9 @@ FUNCTION hbmk( aArgs, /* @ */ lPause, /* @ */ lUTF8 )
cParamL == "-nobeep" ; s_lBEEP := .F.
CASE cParamL == "-rebuild" ; hbmk[ _HBMK_lINC ] := .T. ; hbmk[ _HBMK_lREBUILD ] := .T.
CASE cParamL == "-rebuildpo" ; hbmk[ _HBMK_lREBUILDPO ] := .T.
CASE cParamL == "-minipo" ; hbmk[ _HBMK_lMINIPO ] := .T.
CASE cParamL == "-minipo-" .OR. ;
cParamL == "-nominipo" ; hbmk[ _HBMK_lMINIPO ] := .F.
CASE cParamL == "-clean" ; hbmk[ _HBMK_lINC ] := .T. ; s_lCLEAN := .T.
CASE cParamL == "-inc" ; hbmk[ _HBMK_lINC ] := .T.
CASE cParamL == "-inc-" .OR. ;
@@ -5463,7 +5468,7 @@ STATIC PROCEDURE POTMerge( hbmk, aFiles, cFileBase, cFileOut )
LOCAL aTrans := LoadPOTFiles( hbmk, aFiles, cFileBase, .T. )
IF aTrans != NIL
IF !__i18n_potArraySave( cFileOut, aTrans, @cErrorMsg )
IF !__i18n_potArraySave( cFileOut, aTrans, @cErrorMsg, ! hbmk[ _HBMK_lMINIPO ], ! hbmk[ _HBMK_lMINIPO ] )
hbmk_OutErr( hbmk, hb_StrFormat( I_( ".pot merge error: %1$s" ), cErrorMsg ) )
ENDIF
ENDIF
@@ -5475,7 +5480,7 @@ STATIC PROCEDURE AutoTrans( hbmk, cFileIn, aFiles, cFileOut )
IF !__I18N_potArraySave( cFileOut, ;
__I18N_potArrayTrans( LoadPOTFiles( hbmk, {}, cFileIn, .F. ), ;
LoadPOTFilesAsHash( hbmk, aFiles ) ), @cErrorMsg )
LoadPOTFilesAsHash( hbmk, aFiles ) ), @cErrorMsg, ! hbmk[ _HBMK_lMINIPO ], ! hbmk[ _HBMK_lMINIPO ] )
hbmk_OutErr( hbmk, hb_StrFormat( I_( "Error: %1$s" ), cErrorMsg ) )
ENDIF
@@ -5789,6 +5794,7 @@ STATIC PROCEDURE ShowHelp( hbmk, lLong )
{ "-hbi[=<output>]" , I_( "output .hbi filename. ${lng} macro is accepted in filename" ) },;
{ "-lng=<languages>" , I_( "list of languages to be replaced in ${lng} macros in .pot/.po filenames and output .hbi/.po filenames. Comma separared list:\n-lng=en-EN,hu-HU,de" ) },;
{ "-po=<output>" , I_( "create/update .po file from source. Merge it with previous .po file of the same name" ) },;
{ "-[no]minipo" , I_( "don't (or do) add Harbour version number and source file reference to .po (default: add them)" ) },;
{ "-rebuildpo" , I_( "recreate .po file, thus removing all obsolete entries in it" ) },;
NIL,;
{ "-target=<script>" , I_( "specify a new build target. <script> can be .prg (or no extension) or .hbm file (available on command line only)" ) },;