From abba013e29d15c5e2d126e49cf5817284169915d Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 27 Aug 2010 13:50:20 +0000 Subject: [PATCH] 2010-08-27 15:49 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * src/rtl/hbi18n2.prg * utils/hbmk2/hbmk2.prg + UTF8 BOM logic contained in core. Should fix it for all cases in hbmk2 and hbi18n. --- harbour/ChangeLog | 6 ++++++ harbour/src/rtl/hbi18n2.prg | 23 ++++++++++++++++++----- harbour/utils/hbmk2/hbmk2.prg | 21 +-------------------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 043349b4d3..622d8f281b 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,12 @@ The license applies to all entries newer than 2009-04-28. */ +2010-08-27 15:49 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * src/rtl/hbi18n2.prg + * utils/hbmk2/hbmk2.prg + + UTF8 BOM logic contained in core. Should fix it for all + cases in hbmk2 and hbi18n. + 2010-08-27 15:33 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * src/rtl/hbi18n2.prg ! __I18N_POTARRAYSAVE() typo in BOM flag default. diff --git a/harbour/src/rtl/hbi18n2.prg b/harbour/src/rtl/hbi18n2.prg index b7bec4a80c..2c8a3ba107 100644 --- a/harbour/src/rtl/hbi18n2.prg +++ b/harbour/src/rtl/hbi18n2.prg @@ -299,7 +299,23 @@ FUNCTION __I18N_POTARRAYLOAD( cFile, cErrorMsg ) RETURN aTrans -FUNCTION __I18N_POTARRAYSAVE( cFile, aTrans, cErrorMsg, lVersionNo, lSourceRef, lUTF8BOM ) +STATIC FUNCTION IsBOM_UTF8( cFileName ) + LOCAL fhnd := FOpen( cFileName, FO_READ ) + LOCAL cBuffer + + IF fhnd != F_ERROR + cBuffer := Space( Len( _UTF8_BOM ) ) + FRead( fhnd, @cBuffer, Len( cBuffer ) ) + FClose( fhnd ) + IF cBuffer == _UTF8_BOM + RETURN .T. + ENDIF + ENDIF + + RETURN .F. + + +FUNCTION __I18N_POTARRAYSAVE( cFile, aTrans, cErrorMsg, lVersionNo, lSourceRef ) LOCAL aItem LOCAL hFile LOCAL lRet, lPlural @@ -312,14 +328,11 @@ FUNCTION __I18N_POTARRAYSAVE( cFile, aTrans, cErrorMsg, lVersionNo, lSourceRef, IF ! ISLOGICAL( lSourceRef ) lSourceRef := .T. ENDIF - IF ! ISLOGICAL( lUTF8BOM ) - lUTF8BOM := .F. - ENDIF lRet := .F. cEol := hb_eol() cFlg := "#, c-format" + cEol - cPOT := iif( lUTF8BOM, _UTF8_BOM + cEol, "" ) + ; /* Put it in separate line to less confuse non-BOM aware parsers */ + cPOT := iif( hb_FileExists( cFile ) .AND. IsBOM_UTF8( cFile ), _UTF8_BOM + cEol, "" ) + ; /* Put it in separate line to less confuse non-BOM aware parsers */ "#" + cEol + ; "# This file is generated by " + iif( lVersionNo, hb_version(), "Harbour" ) + cEol + ; "#" + cEol diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 4fa69edd41..02450b6cdc 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -10164,11 +10164,9 @@ STATIC PROCEDURE POTMerge( hbmk, aFiles, cFileBase, cFileOut ) STATIC PROCEDURE AutoTrans( hbmk, cFileIn, aFiles, cFileOut ) LOCAL cErrorMsg - LOCAL lUTF8BOM := IsBOM_UTF8( cFileOut ) - IF ! __i18n_potArraySave( cFileOut, ; __i18n_potArrayTrans( LoadPOTFiles( hbmk, {}, cFileIn, .F. ), ; - LoadPOTFilesAsHash( hbmk, aFiles ) ), @cErrorMsg, ! hbmk[ _HBMK_lMINIPO ], ! hbmk[ _HBMK_lMINIPO ], lUTF8BOM ) + LoadPOTFilesAsHash( hbmk, aFiles ) ), @cErrorMsg, ! hbmk[ _HBMK_lMINIPO ], ! hbmk[ _HBMK_lMINIPO ] ) hbmk_OutErr( hbmk, hb_StrFormat( I_( "Error: %1$s" ), cErrorMsg ) ) ENDIF @@ -10192,23 +10190,6 @@ STATIC FUNCTION GenHBL( hbmk, aFiles, cFileOut, lEmpty ) RETURN lRetVal -#define _UTF8_BOM e"\xEF\xBB\xBF" - -STATIC FUNCTION IsBOM_UTF8( cFileName ) - LOCAL fhnd := FOpen( cFileName, FO_READ ) - LOCAL cBuffer - - IF fhnd != F_ERROR - cBuffer := Space( Len( _UTF8_BOM ) ) - FRead( fhnd, @cBuffer, Len( cBuffer ) ) - FClose( fhnd ) - IF cBuffer == _UTF8_BOM - RETURN .T. - ENDIF - ENDIF - - RETURN .F. - STATIC FUNCTION win_implib_command( hbmk, cCommand, cSourceDLL, cTargetLib, cFlags ) IF ! hb_FileExists( cSourceDLL )