X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d9ade1df2f02bbb86987487ae35f0eaa0eee4517..142b15c5a1c54540de52a72f3059fdffaa1c8afe:/src/common/textfile.cpp diff --git a/src/common/textfile.cpp b/src/common/textfile.cpp index 6a82fa5860..604bb54c4c 100644 --- a/src/common/textfile.cpp +++ b/src/common/textfile.cpp @@ -6,14 +6,14 @@ // Created: 03.04.98 // RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // ============================================================================ // headers // ============================================================================ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "textfile.h" #endif @@ -97,30 +97,30 @@ bool wxTextFile::OnRead(wxMBConv& conv) char *strBuf, *strPtr, *strEnd; char ch, chLast = '\0'; char buf[1024]; - int n, nRead; + wxFileSize_t nRead; strPtr = strBuf = new char[1024]; strEnd = strBuf + 1024; - do + do { nRead = m_file.Read(buf, WXSIZEOF(buf)); - if ( nRead == wxInvalidOffset ) + if ( nRead == wxInvalidOffset ) { // read error (error message already given in wxFile::Read) delete[] strBuf; - return FALSE; + return false; } - for (n = 0; n < nRead; n++) + for (wxFileSize_t n = 0; n < nRead; n++) { ch = buf[n]; - switch ( ch ) + switch ( ch ) { case '\n': // Dos/Unix line termination *strPtr = '\0'; - AddLine(wxString(strBuf, conv), + AddLine(wxString(strBuf, conv), chLast == '\r' ? wxTextFileType_Dos : wxTextFileType_Unix); strPtr = strBuf; @@ -128,7 +128,7 @@ bool wxTextFile::OnRead(wxMBConv& conv) break; case '\r': - if ( chLast == '\r' ) + if ( chLast == '\r' ) { // Mac empty line AddLine(wxEmptyString, wxTextFileType_Mac); @@ -147,7 +147,7 @@ bool wxTextFile::OnRead(wxMBConv& conv) strPtr = strBuf; *(strPtr++) = ch; } - else + else { // add to the current line *(strPtr++) = ch; @@ -168,29 +168,33 @@ bool wxTextFile::OnRead(wxMBConv& conv) } while ( nRead == WXSIZEOF(buf) ); // anything in the last line? - if ( strPtr != strBuf ) + if ( strPtr != strBuf ) { *strPtr = '\0'; - AddLine(wxString(strBuf, conv), + AddLine(wxString(strBuf, conv), wxTextFileType_None); // no line terminator } delete[] strBuf; - return TRUE; + return true; } bool wxTextFile::OnWrite(wxTextFileType typeNew, wxMBConv& conv) { wxFileName fn = m_strBufferName; + + // We do NOT want wxPATH_NORM_CASE here, or the case will not + // be preserved. if ( !fn.IsAbsolute() ) - fn.Normalize(); + fn.Normalize(wxPATH_NORM_ENV_VARS | wxPATH_NORM_DOTS | wxPATH_NORM_TILDE | + wxPATH_NORM_ABSOLUTE | wxPATH_NORM_LONG); wxTempFile fileTmp(fn.GetFullPath()); if ( !fileTmp.IsOpened() ) { wxLogError(_("can't write buffer '%s' to disk."), m_strBufferName.c_str()); - return FALSE; + return false; } size_t nCount = GetLineCount();