// There's no such thing as global cfg dir in MS-DOS, let's return
// current directory (FIXME_MGL?)
return wxT(".\\");
+#elif defined(__WXWINCE__)
+ strDir = wxT("\\Windows\\");
#else // Windows
+
wxChar szWinDir[MAX_PATH];
::GetWindowsDirectory(szWinDir, MAX_PATH);
break;
}
- strTmp.append(wxConvertMB2WX(buf), inStream.LastRead());
+ // FIXME: this is broken because if we have part of multibyte
+ // character in the buffer (and another part hasn't been
+ // read yet) we're going to lose data because of conversion
+ // errors
+ buf[inStream.LastRead()] = '\0';
+ strTmp += conv.cMB2WX(buf);
}
while ( !inStream.Eof() );
Parse(memText, true /* local */);
SetRootPath();
+ ResetDirty();
}
#endif // wxUSE_STREAMS
{
LineListAppend(strLine);
- // let the root group have it start line as well
+ // let the root group have its start line as well
if ( !n )
{
m_pCurrentGroup->SetLine(m_linesTail);
{
wxString line = p->Text();
line += wxTextFile::GetEOL();
- if ( !os.Write(line.mb_str(conv), line.length()) )
+
+ wxCharBuffer buf(line.mb_str(conv));
+ if ( !os.Write(buf, strlen(buf)) )
{
wxLogError(_("Error saving user configuration data."));
else
pNext->SetPrev(pPrev);
+ if ( m_pRootGroup->GetGroupLine() == pLine )
+ m_pRootGroup->SetLine(m_linesHead);
+
wxLogTrace( FILECONF_TRACE_MASK,
_T(" head: %s"),
((m_linesHead) ? m_linesHead->Text().c_str() : wxEmptyString) );
void wxFileConfigGroup::SetLine(wxFileConfigLineList *pLine)
{
- wxASSERT( m_pLine == 0 ); // shouldn't be called twice
+ // shouldn't be called twice unless we are resetting the line
+ wxASSERT( m_pLine == 0 || pLine == 0 );
m_pLine = pLine;
}