class WXDLLEXPORT wxFSFile : public wxObject
{
public:
- wxFSFile(wxInputStream *stream, const wxString& loc,
+ wxFSFile(wxInputStream *stream, const wxString& loc,
const wxString& mimetype, const wxString& anchor,
wxDateTime modif)
{
wxString m_MimeType;
wxString m_Anchor;
wxDateTime m_Modif;
+
+ DECLARE_ABSTRACT_CLASS(wxFSFile)
};
virtual wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);
virtual wxString FindFirst(const wxString& spec, int flags = 0);
virtual wxString FindNext();
-
+
// wxLocalFSHandler will prefix all filenames with 'root' before accessing
// files on disk. This effectively makes 'root' the top-level directory
- // and prevents access to files outside this directory.
+ // and prevents access to files outside this directory.
// (This is similar to Unix command 'chroot'.)
static void Chroot(const wxString& root) { ms_root = root; }
-
+
protected:
static wxString ms_root;
};
int l = loc.Length(), l2;
l2 = l;
- for (int i = l-1; i >= 0; i--)
+ for (int i = l-1; i >= 0; i--)
{
c = loc[(unsigned int) i];
if ( c == wxT('#') )
l2 = i + 1;
if ( c == wxT('.') )
{
- ext = loc.Right(l2-i-1);
+ ext = loc.Right(l2-i-1);
break;
}
if ( (c == wxT('/')) || (c == wxT('\\')) || (c == wxT(':')) )
// location has Unix path separators
wxString right = ms_root + GetRightLocation(location);
wxFileName fn(right, wxPATH_UNIX);
-
+
if (!wxFileExists(fn.GetFullPath()))
return (wxFSFile*) NULL;
-
+
return new wxFSFile(new wxFileInputStream(fn.GetFullPath()),
right,
GetMimeTypeFromExt(location),
//-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxFileSystem, wxObject)
+IMPLEMENT_ABSTRACT_CLASS(wxFSFile, wxObject)
wxList wxFileSystem::m_Handlers;