bug fixes for '\r' handling in wxTextFile::Translate()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5272 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -67,14 +67,13 @@ const wxChar *wxTextFile::GetEOL(wxTextFileType type)
|
|||||||
wxFAIL_MSG(wxT("bad file type in wxTextFile::GetEOL."));
|
wxFAIL_MSG(wxT("bad file type in wxTextFile::GetEOL."));
|
||||||
// fall through nevertheless - we must return something...
|
// fall through nevertheless - we must return something...
|
||||||
|
|
||||||
case wxTextFileType_None: return wxT("");
|
case wxTextFileType_None: return wxT(_T(""));
|
||||||
case wxTextFileType_Unix: return wxT("\n");
|
case wxTextFileType_Unix: return wxT(_T("\n"));
|
||||||
case wxTextFileType_Dos: return wxT("\r\n");
|
case wxTextFileType_Dos: return wxT(_T("\r\n"));
|
||||||
case wxTextFileType_Mac: return wxT("\r");
|
case wxTextFileType_Mac: return wxT(_T("\r"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
wxString wxTextFile::Translate(const wxString& text, wxTextFileType type)
|
wxString wxTextFile::Translate(const wxString& text, wxTextFileType type)
|
||||||
{
|
{
|
||||||
// don't do anything if there is nothing to do
|
// don't do anything if there is nothing to do
|
||||||
@@ -93,34 +92,40 @@ wxString wxTextFile::Translate(const wxString& text, wxTextFileType type)
|
|||||||
{
|
{
|
||||||
wxChar ch = *pc;
|
wxChar ch = *pc;
|
||||||
switch ( ch ) {
|
switch ( ch ) {
|
||||||
case '\n':
|
case _T('\n'):
|
||||||
// Dos/Unix line termination
|
// Dos/Unix line termination
|
||||||
result += eol;
|
result += eol;
|
||||||
chLast = '\n';
|
chLast = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '\r':
|
case _T('\r'):
|
||||||
if ( chLast == '\r' ) {
|
if ( chLast == _T('\r') ) {
|
||||||
// Mac empty line
|
// Mac empty line
|
||||||
result += eol;
|
result += eol;
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
chLast = '\r';
|
// just remember it: we don't know whether it is just "\r"
|
||||||
|
// or "\r\n" yet
|
||||||
|
chLast = _T('\r');
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if ( chLast == '\r' ) {
|
if ( chLast == _T('\r') ) {
|
||||||
// Mac line termination
|
// Mac line termination
|
||||||
result += eol;
|
result += eol;
|
||||||
chLast = ch;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// add to the current line
|
|
||||||
result += ch;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// add to the current line
|
||||||
|
result += ch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( chLast ) {
|
||||||
|
// trailing '\r'
|
||||||
|
result += eol;
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,7 +274,7 @@ bool wxTextFile::Read()
|
|||||||
case '\r':
|
case '\r':
|
||||||
if ( chLast == '\r' ) {
|
if ( chLast == '\r' ) {
|
||||||
// Mac empty line
|
// Mac empty line
|
||||||
m_aLines.Add("");
|
m_aLines.Add(wxEmptyString);
|
||||||
m_aTypes.Add(wxTextFileType_Mac);
|
m_aTypes.Add(wxTextFileType_Mac);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user