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:
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user