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.kaganski@collabora.com>
Tested-by: Jenkins
This commit is contained in:
Mike Kaganski
2025-07-16 11:58:56 +02:00
parent a4ae800f2f
commit c8afc1eb73
2 changed files with 13 additions and 25 deletions
+4 -2
View File
@@ -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);
};
+9 -23
View File
@@ -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() + "\n";
else if (sLine.startsWith("\"X-Generator"))
rPoHeader += "X-Generator: LibreOffice\n";
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() + "\n";
else if (sTemp.starts_with("\"X-Generator"))
*pPoHeader += "X-Generator: LibreOffice\n";
else if (sTemp.starts_with("\""))
*pPoHeader += lcl_GenNormString(sTemp);
}
m_bEof = false;
}