From d8a33f2581810d70eca01c674d3cfee496272045 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 2 Nov 2012 18:52:14 +0000 Subject: [PATCH] 2012-11-02 19:47 UTC+0100 Viktor Szakats (harbour syenar.net) * config/postinst.hb + compile list of all available contrib functions (into a file named 'hbmk2.hbr'), so hbmk2 can use it as for hints for libs, even if they are not built/installed on the user's system. * utils/hbmk2/hbmk2.prg * tweaked the hint message for not installed packages ! fixed new strings not marked as translatable * package/winuni/mpkg_win_uni.bat * package/winuni/mpkg_win_uni.nsi * include .hbr files in winuni packages * contrib/xhb/xdbmodst.prg * contrib/xhb/xhbmemo.prg * contrib/hbct/disk.c * contrib/hbct/doc/en/dattime3.txt * contrib/hbct/doc/en/video.txt * extras/hbxlsxml/tests/*.prg * extras/hbxlsxml/*.prg * src/debug/dbgentry.c * minor cleanups --- harbour/ChangeLog | 25 +++++++++ harbour/config/postinst.hb | 64 ++++++++++++++++++++-- harbour/contrib/hbct/disk.c | 2 +- harbour/contrib/hbct/doc/en/dattime3.txt | 7 +-- harbour/contrib/hbct/doc/en/video.txt | 4 -- harbour/contrib/xhb/xdbmodst.prg | 32 +++-------- harbour/contrib/xhb/xhbmemo.prg | 2 +- harbour/extras/hbxlsxml/tests/example.prg | 2 +- harbour/extras/hbxlsxml/tests/example2.prg | 2 +- harbour/extras/hbxlsxml/tests/example3.prg | 2 +- harbour/extras/hbxlsxml/xlsxml.prg | 2 +- harbour/extras/hbxlsxml/xlsxml_s.prg | 2 +- harbour/extras/hbxlsxml/xlsxml_y.prg | 2 +- harbour/package/winuni/mpkg_win_uni.bat | 1 + harbour/package/winuni/mpkg_win_uni.nsi | 1 + harbour/src/debug/dbgentry.c | 17 +++--- harbour/utils/hbmk2/hbmk2.prg | 11 ++-- 17 files changed, 119 insertions(+), 59 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index f2769b75c4..c4bc5adc2a 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,31 @@ The license applies to all entries newer than 2009-04-28. */ +2012-11-02 19:47 UTC+0100 Viktor Szakats (harbour syenar.net) + * config/postinst.hb + + compile list of all available contrib functions (into + a file named 'hbmk2.hbr'), so hbmk2 can use it as for + hints for libs, even if they are not built/installed on + the user's system. + + * utils/hbmk2/hbmk2.prg + * tweaked the hint message for not installed packages + ! fixed new strings not marked as translatable + + * package/winuni/mpkg_win_uni.bat + * package/winuni/mpkg_win_uni.nsi + * include .hbr files in winuni packages + + * contrib/xhb/xdbmodst.prg + * contrib/xhb/xhbmemo.prg + * contrib/hbct/disk.c + * contrib/hbct/doc/en/dattime3.txt + * contrib/hbct/doc/en/video.txt + * extras/hbxlsxml/tests/*.prg + * extras/hbxlsxml/*.prg + * src/debug/dbgentry.c + * minor cleanups + 2012-11-02 18:13 UTC+0100 Viktor Szakats (harbour syenar.net) * utils/hbmk2/hbmk2.prg ! fixed to use proper harbour root for finding missing diff --git a/harbour/config/postinst.hb b/harbour/config/postinst.hb index a6aa7c2bed..aac8092351 100644 --- a/harbour/config/postinst.hb +++ b/harbour/config/postinst.hb @@ -126,11 +126,11 @@ PROCEDURE Main( ... ) IF hb_DirBuild( PathSepToSelf( GetEnvC( "HB_INSTALL_MAN" ) ) + hb_ps() + "man1" ) FOR EACH tmp IN { ; - "src/main/harbour.1", ; - "src/pp/hbpp.1", ; - "utils/hbmk2/hbmk2.1", ; - "utils/hbtest/hbtest.1", ; - "contrib/hbrun/hbrun.1" } + "src/main/harbour.1", ; + "src/pp/hbpp.1", ; + "utils/hbmk2/hbmk2.1", ; + "utils/hbtest/hbtest.1", ; + "contrib/hbrun/hbrun.1" } mk_hb_FCopy( tmp, GetEnvC( "HB_INSTALL_MAN" ) + hb_ps() + "man1" + hb_ps(), .T. ) NEXT ELSE @@ -193,13 +193,22 @@ PROCEDURE Main( ... ) /* Creating docs for core */ - IF ! Empty( tmp := GetEnvC( "HB_INSTALL_DOC" ) ) .AND. ! tmp == "no" + IF ! Empty( tmp := GetEnvC( "HB_INSTALL_DOC" ) ) .AND. !( tmp == "no" ) OutStd( "! Compiling core documentation (.hbd)..." + hb_eol() ) mk_hbd_core( "." + hb_ps(), tmp ) ENDIF + /* Creating compressed archives of available contrib functions */ + + IF ! Empty( tmp := GetEnvC( "HB_INSTALL_BIN" ) ) + + OutStd( "! Compiling list of contrib functions (.hbr)..." + hb_eol() ) + + mk_hbr( tmp ) + ENDIF + /* Creating install packages */ IF GetEnvC( "HB_BUILD_PKG" ) == "yes" .AND. ; @@ -513,6 +522,49 @@ STATIC FUNCTION GetEnvC( cEnvVar ) RETURN s_hEnvCache[ cEnvVar ] := GetEnv( cEnvVar ) +PROCEDURE mk_hbr( cDestDir ) + + LOCAL hAll := { => } + + LOCAL cDir := "contrib" + hb_ps() + LOCAL aFile + LOCAL cFileName + + FOR EACH aFile IN Directory( cDir + hb_osFileMask(), "D" ) + IF aFile[ F_NAME ] == "." .OR. aFile[ F_NAME ] == ".." + ELSEIF "D" $ aFile[ F_ATTR ] + IF hb_FileExists( cFileName := cDir + aFile[ F_NAME ] + hb_ps() + aFile[ F_NAME ] + ".hbx" ) + LoadHBX( cFileName, hAll ) + ENDIF + ENDIF + NEXT + + hb_MemoWrit( hb_DirSepAdd( cDestDir ) + "hbmk2.hbr", hb_ZCompress( hb_Serialize( hAll ) ) ) + + RETURN + +STATIC FUNCTION LoadHBX( cFileName, hAll ) + + LOCAL cName := StrTran( cFileName, "\", "/" ) + + LOCAL cFile + LOCAL pRegex + LOCAL tmp + LOCAL aDynamic := {} + + IF ! Empty( cFile := hb_MemoRead( cFileName ) ) .AND. ; + ! Empty( pRegex := hb_regexComp( "^DYNAMIC ([a-zA-Z0-9_]*)$", .T., .T. ) ) + FOR EACH tmp IN hb_regexAll( pRegex, StrTran( cFile, Chr( 13 ) ),,,,, .T. ) + IF tmp[ 2 ] $ hAll + hAll[ tmp[ 2 ] ] += "," + cName + ELSE + hAll[ tmp[ 2 ] ] := cName + ENDIF + NEXT + ENDIF + + RETURN aDynamic + #define _HB_FUNC_INCLUDE_ "HB_FUNC_INCLUDE" #define _HB_FUNC_EXCLUDE_ "HB_FUNC_EXCLUDE" diff --git a/harbour/contrib/hbct/disk.c b/harbour/contrib/hbct/disk.c index 686467156d..638a79abed 100644 --- a/harbour/contrib/hbct/disk.c +++ b/harbour/contrib/hbct/disk.c @@ -143,7 +143,7 @@ HB_FUNC( DRIVETYPE ) iType = 5; /* Network Drive - xHarbour extension */ break; default: - iType = 9; /* Unknow Drive - xHarbour extension */ + iType = 9; /* Unknown Drive - xHarbour extension */ break; } hb_retni( iType ); diff --git a/harbour/contrib/hbct/doc/en/dattime3.txt b/harbour/contrib/hbct/doc/en/dattime3.txt index 3a48415c64..7e02401bd2 100644 --- a/harbour/contrib/hbct/doc/en/dattime3.txt +++ b/harbour/contrib/hbct/doc/en/dattime3.txt @@ -19,7 +19,7 @@ WAITPERIOD() returns .T., if the time span designated at initialization has not elapsed. $DESCRIPTION$ - This function sets a time span for a xHarbour DO WHILE loop to run. + This function sets a time span for a DO WHILE loop to run. The function must initialize prior to the loop, since you must specify the parameter in 1/100th seconds. Subsequently, the function can be implemented without a parameter for additional loop conditions. @@ -137,7 +137,7 @@ The FUNCTION RETURNs .T. when the time is set successfully. $DESCRIPTION$ When you use this FUNCTION to convert the time into the system time from - within your xHarbour application, all files acquire this time with + within your application, all files acquire this time with each write procedure. $EXAMPLES$ Set the system time in each case; but the hardware clock only @@ -188,8 +188,7 @@ SETDATE() RETURNs .T. when the date is successfully set. $DESCRIPTION$ When you use this FUNCTION to set the system date from within your - xHarbour application, all files acquire this date with each write - procedure. + application, all files acquire this date with each write procedure. $EXAMPLES$ Set the system date in each case; but the hardware clock only on an AT: diff --git a/harbour/contrib/hbct/doc/en/video.txt b/harbour/contrib/hbct/doc/en/video.txt index 67d99551fb..df89df3c0a 100644 --- a/harbour/contrib/hbct/doc/en/video.txt +++ b/harbour/contrib/hbct/doc/en/video.txt @@ -24,7 +24,6 @@ $STATUS$ Started $COMPLIANCE$ - This function is xHarbour libct contrib $PLATFORMS$ DJGPP $FILES$ @@ -64,7 +63,6 @@ $STATUS$ Started $COMPLIANCE$ - This function is xHarbour libct contrib $PLATFORMS$ DJGPP $FILES$ @@ -96,7 +94,6 @@ $STATUS$ Started $COMPLIANCE$ - This function is xHarbour libct contrib $PLATFORMS$ DJGPP $FILES$ @@ -134,7 +131,6 @@ $STATUS$ Started $COMPLIANCE$ - This function is xHarbour libct contrib $PLATFORMS$ DJGPP $FILES$ diff --git a/harbour/contrib/xhb/xdbmodst.prg b/harbour/contrib/xhb/xdbmodst.prg index c92aa85a00..2b2521e3ce 100644 --- a/harbour/contrib/xhb/xdbmodst.prg +++ b/harbour/contrib/xhb/xdbmodst.prg @@ -4,7 +4,7 @@ /* * Harbour Project source code: - * dbModifyStructure( ) -> lSuccess + * dbModifyStructure( ) -> lSuccess * * Copyright 2009 Ron Pinkas * www - http://harbour-project.org @@ -59,11 +59,7 @@ #define EG_RENAME 26 #endif -#xtranslate THROW( ) => ( Eval( ErrorBlock(), ), Break( ) ) - -/* - xHarbour extensions by Ron Pinkas - */ +#xtranslate THROW( ) => ( Eval( ErrorBlock(), ), Break( ) ) FUNCTION dbModifyStructure( cFile ) @@ -81,7 +77,6 @@ FUNCTION dbModifyStructure( cFile ) BEGIN SEQUENCE WITH {| oErr | Break( oErr ) } // Open exclusively, get name info, and create the structure db. - // ----------------------- USE ( cFile ) ALIAS ModifySource EXCLUSIVE NEW nSourceArea := Select() @@ -95,22 +90,19 @@ FUNCTION dbModifyStructure( cFile ) cNewFile := cTable + ".new." + cDateTime + cExt COPY STRUCTURE EXTENDED TO ( cStructureFile ) - // ----------------------- // Let user modify the structure. - // ----------------------- USE ( cStructureFile ) ALIAS NewStructure EXCLUSIVE NEW Browse( 0, 0, Min( 20, MaxRow() - 1 ), Min( MaxCol() - 30, 50 ) ) + PACK CLOSE CREATE ( cNewFile ) FROM ( cStructureFile ) ALIAS NEW_MODIFIED NEW - // ----------------------- // Import data into the new file, and close it - // ----------------------- lRet := dbImport( nSourceArea ) CLOSE @@ -118,10 +110,8 @@ FUNCTION dbModifyStructure( cFile ) CLOSE SELECT ( nPresetArea ) - // ----------------------- // Rename original as backup, and new file as the new original. - // ----------------------- IF lRet IF FRename( cFile, cBakFile ) == -1 BREAK @@ -146,13 +136,12 @@ FUNCTION dbModifyStructure( cFile ) ENDIF ENDIF ENDIF - // ----------------------- RECOVER USING oErr IF oErr:ClassName == "ERROR" IF oErr:genCode == EG_RENAME // This kind of error must be reported - lRet := Throw( oErr ) + lRet := THROW( oErr ) ELSE lRet := .F. ENDIF @@ -176,11 +165,9 @@ FUNCTION dbMerge( xSource, lAppend ) LOCAL cField, xField LOCAL nSourcePos, aTranslate := {}, aTranslation -// LOCAL oErr LOCAL cTargetType // Safety - // ----------------------- IF LastRec() > 0 IF ! lAppend RETURN .F. @@ -188,7 +175,6 @@ FUNCTION dbMerge( xSource, lAppend ) ENDIF // Validate args - // ----------------------- IF HB_ISSTRING( xSource ) nArea := Select() @@ -208,7 +194,6 @@ FUNCTION dbMerge( xSource, lAppend ) ENDIF // Create translation plan - // ----------------------- aFields := Array( FCount() ) AFields( aFields ) @@ -228,7 +213,7 @@ FUNCTION dbMerge( xSource, lAppend ) // Ok to process AAdd( aTranslate, { cField:__EnumIndex(), nSourcePos, {| xSource | xSource } } ) - RECOVER // USING oErr + RECOVER cTargetType := ValType( FieldGet( cField:__EnumIndex() ) ) BEGIN SEQUENCE WITH {| oErr | Break( oErr ) } @@ -240,7 +225,7 @@ FUNCTION dbMerge( xSource, lAppend ) // Ok to process AAdd( aTranslate, { cField:__EnumIndex(), nSourcePos, {| xSource | ValToType( xSource, cTargetType ) } } ) - RECOVER // USING oErr + RECOVER // TraceLog( oErr:Description, oErr:Operation ) END SEQUENCE END SEQUENCE @@ -248,16 +233,14 @@ FUNCTION dbMerge( xSource, lAppend ) NEXT // Reset - // ----------------------- IF LastRec() == 1 .AND. ! lAppend DELETE ZAP ENDIF // Process - // ----------------------- nRecNo := ( nSource )->( RecNo() ) - ( nSource )->( dbGoTop( 1 ) ) + ( nSource )->( dbGoTop() ) WHILE ! ( nSource )->( Eof() ) APPEND BLANK @@ -272,7 +255,6 @@ FUNCTION dbMerge( xSource, lAppend ) ( nSource )->( dbGoto( nRecNo ) ) // Reset - // ----------------------- IF ! Empty( nArea ) SELECT ( nSource ) CLOSE diff --git a/harbour/contrib/xhb/xhbmemo.prg b/harbour/contrib/xhb/xhbmemo.prg index 4d0892696a..3dfc2558db 100644 --- a/harbour/contrib/xhb/xhbmemo.prg +++ b/harbour/contrib/xhb/xhbmemo.prg @@ -322,7 +322,7 @@ METHOD HandleUdf( nKey, nUdfReturn, lEdited ) CLASS XHB_TMemoEditor CASE ME_IGNORE // (32) - // Ignore unknow key, only check insert state. + // Ignore unknown key, only check insert state. ::DisplayInsert( ::lInsert() ) EXIT diff --git a/harbour/extras/hbxlsxml/tests/example.prg b/harbour/extras/hbxlsxml/tests/example.prg index 447cdd16dd..8e75dcfec8 100644 --- a/harbour/extras/hbxlsxml/tests/example.prg +++ b/harbour/extras/hbxlsxml/tests/example.prg @@ -6,7 +6,7 @@ * Harbour Project source code: * * Copyright 2011 Fausto Di Creddo Trautwein, ftwein@yahoo.com.br - * www - http://www.xharbour.org http://harbour-project.org + * www - http://harbour-project.org * * Thanks TO Robert F Greer, PHP original version * http://sourceforge.net/projects/excelwriterxml/ diff --git a/harbour/extras/hbxlsxml/tests/example2.prg b/harbour/extras/hbxlsxml/tests/example2.prg index 7170434231..28369f28d3 100644 --- a/harbour/extras/hbxlsxml/tests/example2.prg +++ b/harbour/extras/hbxlsxml/tests/example2.prg @@ -6,7 +6,7 @@ * Harbour Project source code: * * Copyright 2011 Fausto Di Creddo Trautwein, ftwein@yahoo.com.br - * www - http://www.xharbour.org http://harbour-project.org + * www - http://harbour-project.org * * Thanks TO Robert F Greer, PHP original version * http://sourceforge.net/projects/excelwriterxml/ diff --git a/harbour/extras/hbxlsxml/tests/example3.prg b/harbour/extras/hbxlsxml/tests/example3.prg index 16a1b1f1e5..331cde6cae 100644 --- a/harbour/extras/hbxlsxml/tests/example3.prg +++ b/harbour/extras/hbxlsxml/tests/example3.prg @@ -6,7 +6,7 @@ * Harbour Project source code: * * Copyright 2011 Fausto Di Creddo Trautwein, ftwein@yahoo.com.br - * www - http://www.xharbour.org http://harbour-project.org + * www - http://harbour-project.org * * Thanks TO Robert F Greer, PHP original version * http://sourceforge.net/projects/excelwriterxml/ diff --git a/harbour/extras/hbxlsxml/xlsxml.prg b/harbour/extras/hbxlsxml/xlsxml.prg index 1c4de859f8..b93789a324 100644 --- a/harbour/extras/hbxlsxml/xlsxml.prg +++ b/harbour/extras/hbxlsxml/xlsxml.prg @@ -6,7 +6,7 @@ * Harbour Project source code: * * Copyright 2011 Fausto Di Creddo Trautwein, ftwein@yahoo.com.br - * www - http://www.xharbour.org http://harbour-project.org + * www - http://harbour-project.org * * Thanks to Robert F Greer, PHP original version * http://sourceforge.net/projects/excelwriterxml/ diff --git a/harbour/extras/hbxlsxml/xlsxml_s.prg b/harbour/extras/hbxlsxml/xlsxml_s.prg index e3c4a71084..6f43f214a7 100644 --- a/harbour/extras/hbxlsxml/xlsxml_s.prg +++ b/harbour/extras/hbxlsxml/xlsxml_s.prg @@ -6,7 +6,7 @@ * Harbour Project source code: * * Copyright 2011 Fausto Di Creddo Trautwein, ftwein@yahoo.com.br - * www - http://www.xharbour.org http://harbour-project.org + * www - http://harbour-project.org * * Thanks TO Robert F Greer, PHP original version * http://sourceforge.net/projects/excelwriterxml/ diff --git a/harbour/extras/hbxlsxml/xlsxml_y.prg b/harbour/extras/hbxlsxml/xlsxml_y.prg index b594d45def..b8004a2c6c 100644 --- a/harbour/extras/hbxlsxml/xlsxml_y.prg +++ b/harbour/extras/hbxlsxml/xlsxml_y.prg @@ -6,7 +6,7 @@ * Harbour Project source code: * * Copyright 2011 Fausto Di Creddo Trautwein, ftwein@yahoo.com.br - * www - http://www.xharbour.org http://harbour-project.org + * www - http://harbour-project.org * * Thanks TO Robert F Greer, PHP original version * http://sourceforge.net/projects/excelwriterxml/ diff --git a/harbour/package/winuni/mpkg_win_uni.bat b/harbour/package/winuni/mpkg_win_uni.bat index f1397a2ccf..8d060a1278 100644 --- a/harbour/package/winuni/mpkg_win_uni.bat +++ b/harbour/package/winuni/mpkg_win_uni.bat @@ -117,6 +117,7 @@ echo "%HB_DR%bin\hbpp.exe" >> _hbfiles echo "%HB_DR%bin\hbrun.exe" >> _hbfiles echo "%HB_DR%bin\hbtest.exe" >> _hbfiles if exist "%HB_DR%bin\*.hb" echo "%HB_DR%bin\*.hb" >> _hbfiles +if exist "%HB_DR%bin\*.hbr" echo "%HB_DR%bin\*.hbr" >> _hbfiles if exist "%HB_DR%bin\*.ucf" echo "%HB_DR%bin\*.ucf" >> _hbfiles if exist "%HB_DR%bin\hbmk.hbc" echo "%HB_DR%bin\hbmk.hbc" >> _hbfiles echo "%HB_DR%bin\upx*.*" >> _hbfiles diff --git a/harbour/package/winuni/mpkg_win_uni.nsi b/harbour/package/winuni/mpkg_win_uni.nsi index 42236e48ff..4b8100a66b 100644 --- a/harbour/package/winuni/mpkg_win_uni.nsi +++ b/harbour/package/winuni/mpkg_win_uni.nsi @@ -102,6 +102,7 @@ Section "Main components" hb_main File "$%HB_ABSROOT%bin\hbrun.exe" File "$%HB_ABSROOT%bin\hbtest.exe" File /nonfatal "$%HB_ABSROOT%bin\*.hb" + File /nonfatal "$%HB_ABSROOT%bin\*.hbr" File /nonfatal "$%HB_ABSROOT%bin\*.ucf" File /nonfatal "$%HB_ABSROOT%bin\hbmk.hbc" File "$%HB_ABSROOT%bin\upx*.*" diff --git a/harbour/src/debug/dbgentry.c b/harbour/src/debug/dbgentry.c index b30f81a2e6..48ecfab3b8 100644 --- a/harbour/src/debug/dbgentry.c +++ b/harbour/src/debug/dbgentry.c @@ -24,26 +24,27 @@ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). * - * As a special exception, xHarbour license gives permission for - * additional uses of the text contained in its release of xHarbour. + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. * - * The exception is that, if you link the xHarbour libraries with other + * The exception is that, if you link the Harbour libraries with other * files to produce an executable, this does not by itself cause the * resulting executable to be covered by the GNU General Public License. * Your use of that executable is in no way restricted on account of - * linking the xHarbour library code into it. + * linking the Harbour library code into it. * * This exception does not however invalidate any other reasons why * the executable file might be covered by the GNU General Public License. * - * This exception applies only to the code released with this xHarbour - * explicit exception. If you add/copy code from other sources, - * as the General Public License permits, the above exception does + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does * not apply to the code that you add in this way. To avoid misleading * anyone as to the status of such modified files, you must delete * this exception notice from them. * - * If you write modifications of your own for xHarbour, it is your choice + * If you write modifications of your own for Harbour, it is your choice * whether to permit this exception to apply to your modifications. * If you do not wish that, delete this exception notice. * diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 3b86d866f7..ae1bc9b1a5 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -12239,14 +12239,17 @@ STATIC PROCEDURE AdviseMissingLibs( hbmk, cOutput ) FOR EACH tmp IN hNeeded aLib := LibReferenceToOption( tmp:__enumKey() ) - _hbmk_OutStd( hbmk, hb_StrFormat( "Hint: Add option '%1$s'%2$s for missing function(s): %3$s", ; + _hbmk_OutStd( hbmk, hb_StrFormat( ; + iif( aLib[ 2 ], ; + I_( "Hint: Add option '%1$s' for missing function(s): %2$s" ), ; + I_( "Hint: Install package %3$s and add option '%1$s' for missing function(s): %2$s" ) ), ; aLib[ 1 ], ; - iif( aLib[ 2 ], "", " (not installed)" ), ; - ArrayToList( tmp, ", ",,,, "()" ) ) ) + ArrayToList( tmp, ", ",,,, "()" ), ; + hb_FNameName( aLib[ 1 ] ) ) ) NEXT IF ! Empty( aFunction ) - _hbmk_OutStd( hbmk, hb_StrFormat( "Error: Referenced, missing, but unknown function(s): %1$s", ArrayToList( aFunction, ", ",,,, "()" ) ) ) + _hbmk_OutStd( hbmk, hb_StrFormat( I_( "Error: Referenced, missing, but unknown function(s): %1$s" ), ArrayToList( aFunction, ", ",,,, "()" ) ) ) ENDIF RETURN