//! opens a file by index IReadFile* CMountPointReader::createAndOpenFile(u32 index) { if (index >= Files.size()) return 0; return createReadFile(RealFileNames[Files[index].ID]); }
//! opens a file for read access IReadFile* CFileSystem::createAndOpenFile(const c8* filename) { IReadFile* file = 0; u32 i; for ( i=0; i<ZipFileSystems.size(); ++i) { file = ZipFileSystems[i]->openFile(filename); if (file) return file; } for ( i = 0; i<PakFileSystems.size(); ++i) { file = PakFileSystems[i]->openFile(filename); if (file) return file; } for ( i = 0; i<UnZipFileSystems.size(); ++i) { file = UnZipFileSystems[i]->openFile(filename); if (file) return file; } // Create the file using an absolute path so that it matches // the scheme used by CNullDriver::getTexture(). return createReadFile(getAbsolutePath(filename).c_str()); }
//! opens a file for read access IReadFile* CFileSystem::createAndOpenFile(const c8* filename) { IReadFile* file = 0; u32 i; for ( i=0; i<ZipFileSystems.size(); ++i) { file = ZipFileSystems[i]->openFile(filename); if (file) return file; } for ( i = 0; i<PakFileSystems.size(); ++i) { file = PakFileSystems[i]->openFile(filename); if (file) return file; } for ( i = 0; i<UnZipFileSystems.size(); ++i) { file = UnZipFileSystems[i]->openFile(filename); if (file) return file; } file = createReadFile(filename); return file; }
/** See IXMLReader for more information on how to use the parser. \return 0, if file could not be opened, otherwise a pointer to the created IXMLReader is returned. After use, the reader has to be deleted using its IXMLReader::drop() method. See IReferenceCounted::drop() for more information. */ IXMLReader* SharedFileSystem::createXMLReader( const core::stringc& filename) { // Create the file using an absolute path so that it matches // the scheme used by CNullDriver::getTexture(). IReadFile * file = createReadFile(this->getAbsolutePath(filename)); IXMLReader* reader = irrgame::io::createXMLReader(file); if (file) file->drop(); return reader; }
//! opens a file for read access IReadFile* CFileSystem::createAndOpenFile(const io::path& filename) { IReadFile* file = 0; u32 i; for (i=0; i< FileArchives.size(); ++i) { file = FileArchives[i]->createAndOpenFile(filename); if (file) return file; } // Create the file using an absolute path so that it matches // the scheme used by CNullDriver::getTexture(). return createReadFile(getAbsolutePath(filename)); }
//! opens a file by file name IReadFile* CUnZipReader::openFile(const c8* filename) { s32 index = -1; if ( IgnorePaths ) { index = findFile(filename); } else if ( FileList.size () ) { core::stringc search = FileList[0].path + filename; index = findFile( search.c_str() ); } if (index == -1) return 0; IReadFile *file; file = createReadFile(FileList[index].zipFileName.c_str() ); return file; }
//! adds an pak archive to the filesystem bool CFileSystem::addPakFileArchive(const c8* filename, bool ignoreCase, bool ignorePaths) { IReadFile* file = createReadFile(filename); if (file) { CPakReader* zr = new CPakReader(file, ignoreCase, ignorePaths); if (zr) PakFileSystems.push_back(zr); file->drop(); bool ret = (zr != 0); _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX; return ret; } #ifdef _DEBUG os::Printer::log("Could not open file. Pakfile not added", filename, ELL_ERROR); #endif _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX; return false; }