diff --git a/FileUtils.cpp b/FileUtils.cpp index 0e1632af..4aec16aa 100644 --- a/FileUtils.cpp +++ b/FileUtils.cpp @@ -239,7 +239,7 @@ int CFile::Read(char *pszBuffer, int iBytes) { return read(m_iFD, pszBuffer, iBytes); } -bool CFile::ReadLine(CString& sData) { +bool CFile::ReadLine(CString& sData, const CString & sDelimiter) { char buff[64]; sData.clear(); @@ -250,7 +250,7 @@ bool CFile::ReadLine(CString& sData) { bool bEOF = false; while(true) { - CString::size_type iFind = m_sBuffer.find("\n"); + CString::size_type iFind = m_sBuffer.find(sDelimiter); if (iFind != CString::npos) { sData = m_sBuffer.substr(0, (iFind + 1)); m_sBuffer.erase(0, (iFind + 1)); @@ -280,11 +280,17 @@ bool CFile::ReadLine(CString& sData) { } } - CString::size_type iFind = m_sBuffer.find("\n"); + CString::size_type iFind = m_sBuffer.find(sDelimiter); if (iFind != CString::npos) { return true; } + if( bEOF ) { + sData = m_sBuffer; + m_sBuffer.clear(); + break; + } + return !bEOF; } diff --git a/FileUtils.h b/FileUtils.h index 1b293a13..cd76a479 100644 --- a/FileUtils.h +++ b/FileUtils.h @@ -109,7 +109,7 @@ public: bool Open(const CString& sFileName, int iFlags, mode_t iMode = 0644); bool Open(int iFlags, mode_t iMode = 0644); int Read(char *pszBuffer, int iBytes); - bool ReadLine(CString & sData); + bool ReadLine(CString & sData, const CString & sDelimiter = "\n"); int Write(const char *pszBuffer, u_int iBytes); int Write(const CString & sData); void Close();