Bläddra i källkod

removed one too many implementation of extractToFolder.
changed parameter 2 from CFileInputStream to CInputStream

krs 2 år sedan
förälder
incheckning
6130776fe4
2 ändrade filer med 3 tillägg och 11 borttagningar
  1. 2 10
      lib/filesystem/CArchiveLoader.cpp
  2. 1 1
      lib/filesystem/CArchiveLoader.h

+ 2 - 10
lib/filesystem/CArchiveLoader.cpp

@@ -209,7 +209,7 @@ std::unordered_set<ResourceID> CArchiveLoader::getFilteredFiles(std::function<bo
 	return foundID;
 }
 
-void CArchiveLoader::extractToFolder(const std::string & outputSubFolder, CFileInputStream & fileStream, ArchiveEntry entry)
+void CArchiveLoader::extractToFolder(const std::string & outputSubFolder, CInputStream & fileStream, ArchiveEntry entry)
 {
 	si64 currentPosition = fileStream.tell(); // save filestream position
 
@@ -231,15 +231,7 @@ void CArchiveLoader::extractToFolder(const std::string & outputSubFolder, const
 {
 	std::unique_ptr<CInputStream> inputStream = load(ResourceID(mountPoint + entry.name));
 
-	std::vector<ui8> data(entry.fullSize);
-	inputStream->read(data.data(), entry.fullSize);
-
-	bfs::path extractedFilePath = createExtractedFilePath(outputSubFolder, entry.name);
-
-	// writeToOutputFile
-	std::ofstream out(extractedFilePath.string(), std::ofstream::binary);
-	out.exceptions(std::ifstream::failbit | std::ifstream::badbit);
-	out.write((char*)&data[0], entry.fullSize);
+	extractToFolder(outputSubFolder, *inputStream, entry);
 }
 
 bfs::path createExtractedFilePath(const std::string & outputSubFolder, const std::string & entryName)

+ 1 - 1
lib/filesystem/CArchiveLoader.h

@@ -68,7 +68,7 @@ public:
 	void updateFilteredFiles(std::function<bool(const std::string &)> filter) const override {}
 	std::unordered_set<ResourceID> getFilteredFiles(std::function<bool(const ResourceID &)> filter) const override;
 	/** Extracts one archive entry to the specified subfolder. Used for Video and Sound */
-	void extractToFolder(const std::string & outputSubFolder, CFileInputStream & fileStream, ArchiveEntry entry);
+	void extractToFolder(const std::string & outputSubFolder, CInputStream & fileStream, ArchiveEntry entry);
 	/** Extracts one archive entry to the specified subfolder. Used for Images, Sprites, etc */
 	void extractToFolder(const std::string & outputSubFolder, const std::string & mountPoint, ArchiveEntry entry);