// default type is the native one
const wxTextFile::Type wxTextFile::typeDefault = wxTextFile::
-#if defined(__WXMSW__)
+#if defined(__WINDOWS__)
Type_Dos;
#elif defined(__UNIX__)
Type_Unix;
-#elif defined(__MAC__)
+#elif defined(__WXMAC__)
Type_Mac;
- // if you feel brave, remove the next line
- #error "wxTextFile: code for Mac files is untested."
#else
Type_None;
#error "wxTextFile: unsupported platform."
wxASSERT( m_file.IsOpened() && m_file.Tell() == 0 );
// scan the file lines
- uint nUnix = 0, // number of '\n's alone
+ size_t nUnix = 0, // number of '\n's alone
nDos = 0, // number of '\r\n'
nMac = 0; // number of '\r's
// we take MAX_LINES_SCAN in the beginning, middle and the end of file
#define MAX_LINES_SCAN (10)
- uint nCount = m_aLines.Count() / 3,
+ size_t nCount = m_aLines.Count() / 3,
nScan = nCount > 3*MAX_LINES_SCAN ? MAX_LINES_SCAN : nCount / 3;
#define AnalyseLine(n) \
default: wxFAIL_MSG(_("unknown line terminator")); \
}
- uint n;
+ size_t n;
for ( n = 0; n < nScan; n++ ) // the beginning
AnalyseLine(n);
for ( n = (nCount - nScan)/2; n < (nCount + nScan)/2; n++ )
return FALSE;
}
- #ifdef __MAC__
- #pragma message("wxTextFile::Read() hasn't been tested with Mac files.")
- #endif
-
for ( n = 0; n < nRead; n++ ) {
ch = buf[n];
switch ( ch ) {
// Mac line termination
m_aLines.Add(str);
m_aTypes.Add(Type_Mac);
+ chLast = ch;
str = ch;
}
else {
return FALSE;
}
- uint nCount = m_aLines.Count();
- for ( uint n = 0; n < nCount; n++ ) {
+ size_t nCount = m_aLines.Count();
+ for ( size_t n = 0; n < nCount; n++ ) {
fileTmp.Write(m_aLines[n] +
GetEOL(typeNew == Type_None ? m_aTypes[n] : typeNew));
}
// replace the old file with this one
return fileTmp.Commit();
}
+
+const char *wxTextFile::GetEOL(Type type)
+ {
+ switch ( type ) {
+ case Type_None: return "";
+ case Type_Unix: return "\n";
+ case Type_Dos: return "\r\n";
+ case Type_Mac: return "\r";
+
+ default:
+ wxFAIL_MSG("bad file type in wxTextFile::GetEOL.");
+ return (const char *) NULL;
+ }
+ }
+