l10ntools/inc/po.hxx | 6 ++++-- l10ntools/source/po.cxx | 32 +++++++++----------------------- 2 files changed, 13 insertions(+), 25 deletions(-)
New commits: commit c8afc1eb73dad4a5fdbe14a081ecf2e7a0997df5 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Wed Jul 16 13:18:10 2025 +0500 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Wed Jul 16 11:58:56 2025 +0200 Deduplicate and simplify PoIfstream::open Use a common implementation; do not create a temporary OString, where we only need a view of existing std::string. Change-Id: I1ba29d2600ac03279a19dbf2919ac80d3f8a620c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187945 Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> Tested-by: Jenkins diff --git a/l10ntools/inc/po.hxx b/l10ntools/inc/po.hxx index b6e03ab8dfb1..74869703a016 100644 --- a/l10ntools/inc/po.hxx +++ b/l10ntools/inc/po.hxx @@ -127,6 +127,8 @@ private: std::ifstream m_aInPut; bool m_bEof; + void open(const OString& rFileName, OString* pPoHeader); + public: class Exception final : public std::exception { }; @@ -139,8 +141,8 @@ public: bool isOpen() const { return m_aInPut.is_open(); } bool eof() const { return m_bEof; } - void open(const OString& rFileName); - void open(const OString& rFileName, OString& sPoHeader); + void open(const OString& rFileName) { open(rFileName, nullptr); } + void open(const OString& rFileName, OString& sPoHeader) { open(rFileName, &sPoHeader); } void close(); void readEntry(PoEntry& rPo); }; diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx index 729b01921d16..7f998f44c284 100644 --- a/l10ntools/source/po.cxx +++ b/l10ntools/source/po.cxx @@ -566,7 +566,7 @@ PoIfstream::~PoIfstream() } } -void PoIfstream::open( const OString& rFileName, OString& rPoHeader ) +void PoIfstream::open(const OString& rFileName, OString* pPoHeader) { assert( !isOpen() ); m_aInPut.open( rFileName.getStr(), std::ios_base::in ); @@ -577,28 +577,14 @@ void PoIfstream::open( const OString& rFileName, OString& rPoHeader ) while( !sTemp.empty() && !m_aInPut.eof() ) { std::getline(m_aInPut,sTemp); - OString sLine(sTemp.data(),sTemp.length()); - if (sLine.startsWith("\"PO-Revision-Date")) - rPoHeader += "PO-Revision-Date: " + lcl_GetTime() + " "; - else if (sLine.startsWith("\"X-Generator")) - rPoHeader += "X-Generator: LibreOffice "; - else if (sLine.startsWith("\"")) - rPoHeader += lcl_GenNormString(sLine); - } - m_bEof = false; -} - -void PoIfstream::open( const OString& rFileName ) -{ - assert( !isOpen() ); - m_aInPut.open( rFileName.getStr(), std::ios_base::in ); - - // Skip header - std::string sTemp; - std::getline(m_aInPut,sTemp); - while( !sTemp.empty() && !m_aInPut.eof() ) - { - std::getline(m_aInPut,sTemp); + if (!pPoHeader) + continue; + if (sTemp.starts_with("\"PO-Revision-Date")) + *pPoHeader += "PO-Revision-Date: " + lcl_GetTime() + " "; + else if (sTemp.starts_with("\"X-Generator")) + *pPoHeader += "X-Generator: LibreOffice "; + else if (sTemp.starts_with("\"")) + *pPoHeader += lcl_GenNormString(sTemp); } m_bEof = false; }