+
+wxString wxFileSystem::FindFirst(const wxString& spec, int flags)
+{
+ wxNode *node;
+ wxString spec2(spec);
+
+ m_FindFileHandler = NULL;
+
+ for (int i = spec2.Length()-1; i >= 0; i--)
+ if (spec2[(unsigned int) i] == wxT('\\')) spec2.GetWritableChar(i) = wxT('/'); // wanna be windows-safe
+
+ node = m_Handlers.GetFirst();
+ while (node)
+ {
+ m_FindFileHandler = (wxFileSystemHandler*) node -> GetData();
+ if (m_FindFileHandler -> CanOpen(m_Path + spec2))
+ return m_FindFileHandler -> FindFirst(m_Path + spec2, flags);
+ node = node->GetNext();
+ }
+
+ node = m_Handlers.GetFirst();
+ while (node)
+ {
+ m_FindFileHandler = (wxFileSystemHandler*) node -> GetData();
+ if (m_FindFileHandler -> CanOpen(spec2))
+ return m_FindFileHandler -> FindFirst(spec2, flags);
+ node = node->GetNext();
+ }
+
+ return wxEmptyString;
+}
+
+
+
+wxString wxFileSystem::FindNext()
+{
+ if (m_FindFileHandler == NULL) return wxEmptyString;
+ else return m_FindFileHandler -> FindNext();
+}
+
+
+