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;
 }

Reply via email to