]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/textfile.cpp
Metrowerks Objective-C++ is more strict about types than Apple's.
[wxWidgets.git] / src / common / textfile.cpp
index 6a82fa5860640895107b6181fc6ced89e226c521..25503be862e36806246222c6d8246dc56e64ad19 100644 (file)
@@ -6,14 +6,14 @@
 // Created:     03.04.98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// 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;
+    size_t nRead;
 
     strPtr = strBuf = new char[1024];
     strEnd = strBuf + 1024;
 
-    do 
+    do
     {
         nRead = m_file.Read(buf, WXSIZEOF(buf));
-        if ( nRead == wxInvalidOffset ) 
+        if ( nRead == (size_t)wxInvalidOffset )
         {
             // read error (error message already given in wxFile::Read)
             delete[] strBuf;
-            return FALSE;
+            return false;
         }
 
-        for (n = 0; n < nRead; n++)
+        for (size_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();