l10ntools/inc/po.hxx | 2 ++ l10ntools/source/merge.cxx | 24 +++++++++++++++++++----- l10ntools/source/po.cxx | 15 ++++++++++++--- 3 files changed, 33 insertions(+), 8 deletions(-)
New commits: commit 8b22407ef36d1a8934f3d917354d95f37d4aab65 Author: Zolnai Tamás <zolnaitamas2...@gmail.com> Date: Mon Oct 1 20:26:05 2012 +0200 Add some new checking Plus use UpperCamelCase name for some variable. Change-Id: Iaba8b6f47f03b723aa31ef4b45f8b6fd78b7866f diff --git a/l10ntools/inc/po.hxx b/l10ntools/inc/po.hxx index 76312a4..9163e6a 100644 --- a/l10ntools/inc/po.hxx +++ b/l10ntools/inc/po.hxx @@ -113,6 +113,8 @@ public: friend class PoOfstream; friend class PoIfstream; + enum Exception { NOLANG }; + PoHeader(); PoHeader( const OString& rExtSrc ); PoHeader( std::ifstream& rOldPo ); diff --git a/l10ntools/source/merge.cxx b/l10ntools/source/merge.cxx index a588075..5738565 100644 --- a/l10ntools/source/merge.cxx +++ b/l10ntools/source/merge.cxx @@ -165,7 +165,7 @@ MergeDataFile::MergeDataFile( bool bFirstLang = true; while( !aInputStream.eof() ) { - const OString sHACK("HACK"); + const OString sHack("HACK"); const OString sFileName( lcl_NormalizeFilename(rFile) ); PoIfstream aPoInput; aPoInput.open( OString(sPoFileName.data(), sPoFileName.length()) ); @@ -189,8 +189,22 @@ MergeDataFile::MergeDataFile( return; } } - const OString nLANG = aPoHeader.getLanguage(); - aLanguageSet.insert( nLANG ); + OString sLang; + try + { + sLang = aPoHeader.getLanguage(); + } + catch( PoHeader::Exception& aException ) + { + if( aException = PoHeader::NOLANG ) + { + printf( + "Warning : %s' header not has language specification\n", + sPoFileName.c_str() ); + return; + } + } + aLanguageSet.insert( sLang ); PoEntry aNextPo; do { @@ -247,7 +261,7 @@ MergeDataFile::MergeDataFile( InsertEntry( aActPo.getResourceType(), aActPo.getGroupId(), - aActPo.getLocalId(), sHACK, nLANG, sText, + aActPo.getLocalId(), sHack, sLang, sText, sQHText, sTitle, sFileName, bCaseSensitive ); if( bFirstLang ) @@ -255,7 +269,7 @@ MergeDataFile::MergeDataFile( aLanguageSet.insert("qtz"); InsertEntry( aActPo.getResourceType(), aActPo.getGroupId(), - aActPo.getLocalId(), sHACK, "qtz", + aActPo.getLocalId(), sHack, "qtz", sQTZText + "||" + sExText, sQTZQHText + "||" + sExQHText, sQTZTitle + "||" + sExTitle, sFileName, bCaseSensitive ); } diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx index a922575..465e18e 100644 --- a/l10ntools/source/po.cxx +++ b/l10ntools/source/po.cxx @@ -537,6 +537,7 @@ void PoEntry::setFuzzy(const bool bFuzzy) //Check whether po-s belong to the same localization component bool PoEntry::IsInSameComp(const PoEntry& rPo1,const PoEntry& rPo2) { + assert( rPo1.m_bIsInitialized && rPo2.m_bIsInitialized ); return ( rPo1.getSourceFile() == rPo2.getSourceFile() && rPo1.getGroupId() == rPo2.getGroupId() && rPo1.getLocalId() == rPo2.getLocalId() && @@ -632,7 +633,11 @@ OString PoHeader::getLanguage() const const OString sTransStr = m_aGenPo.getTransStr(); const sal_Int32 nFirstIndex = sTransStr.indexOf(sLang)+sLang.getLength(); const sal_Int32 nCount = sTransStr.indexOf('\n',nFirstIndex)-nFirstIndex; - return sTransStr.copy(nFirstIndex,nCount); + if( nFirstIndex == sLang.getLength()-1 || nCount == -nFirstIndex-1 ) + { + throw NOLANG; + } + return sTransStr.copy( nFirstIndex, nCount ); } //Class PoOfstream @@ -741,12 +746,16 @@ void PoIfstream::readEntry( PoEntry& rPoEntry ) else { const OString sContext = aGenPo.getContext(); + const sal_Int32 nFirstEndLine = sContext.indexOf('\n'); + const sal_Int32 nLastEndLine = sContext.lastIndexOf('\n'); const sal_Int32 nLastDot = sContext.lastIndexOf('.'); const OString sType = sContext.copy( nLastDot + 1 ); if( !aGenPo.getReference().isEmpty() && - sContext.indexOf('\n') > 0 && + nFirstEndLine > 0 && + (nLastEndLine == nFirstEndLine || + nLastEndLine == sContext.indexOf('\n',nFirstEndLine+1)) && + nLastDot - nLastEndLine > 1 && (sType == "text" || sType == "quickhelptext" || sType == "title") && - nLastDot - sContext.lastIndexOf('\n') > 0 && !aGenPo.getUnTransStr().isEmpty() ) { rPoEntry.m_aGenPo = aGenPo;
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits