From 39ff203c1e60cae0f31fc881cd88fa68a203b79f Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sun, 18 Jun 2017 14:17:33 +0200 Subject: [PATCH] DiscExtractor: Don't create extra folders when extracting a folder Before, if you extracted a directory like /map/Final/Release/, Dolphin would create the nested folders map, Final and Release in the output directory and put the files in Release instead of just putting the files directly in the output directory. --- Source/Core/DiscIO/DiscExtractor.cpp | 12 ++++++------ .../Core/DolphinWX/ISOProperties/FilesystemPanel.cpp | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Source/Core/DiscIO/DiscExtractor.cpp b/Source/Core/DiscIO/DiscExtractor.cpp index dbd5a7a821..9a2dd16487 100644 --- a/Source/Core/DiscIO/DiscExtractor.cpp +++ b/Source/Core/DiscIO/DiscExtractor.cpp @@ -76,11 +76,13 @@ void ExportDirectory(const Volume& volume, const Partition partition, const File const std::string& export_folder, const std::function& update_progress) { + File::CreateFullPath(export_folder + '/'); + for (const FileInfo& file_info : directory) { - const std::string path = - filesystem_path + file_info.GetName() + (file_info.IsDirectory() ? "/" : ""); - const std::string export_path = export_folder + '/' + path; + const std::string name = file_info.GetName() + (file_info.IsDirectory() ? "/" : ""); + const std::string path = filesystem_path + name; + const std::string export_path = export_folder + '/' + name; if (update_progress(path)) return; @@ -96,9 +98,7 @@ void ExportDirectory(const Volume& volume, const Partition partition, const File } else if (recursive) { - File::CreateFullPath(export_path); - ExportDirectory(volume, partition, file_info, recursive, path, export_folder, - update_progress); + ExportDirectory(volume, partition, file_info, recursive, path, export_path, update_progress); } } } diff --git a/Source/Core/DolphinWX/ISOProperties/FilesystemPanel.cpp b/Source/Core/DolphinWX/ISOProperties/FilesystemPanel.cpp index f0f7cd429a..3d7f594aec 100644 --- a/Source/Core/DolphinWX/ISOProperties/FilesystemPanel.cpp +++ b/Source/Core/DolphinWX/ISOProperties/FilesystemPanel.cpp @@ -387,7 +387,6 @@ void FilesystemPanel::ExtractDirectories(const std::string& full_path, wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_CAN_ABORT | wxPD_ELAPSED_TIME | wxPD_ESTIMATED_TIME | wxPD_REMAINING_TIME | wxPD_SMOOTH); - File::CreateFullPath(output_folder + "/" + full_path); DiscIO::ExportDirectory( *m_opened_iso, filesystem.GetPartition(), *file_info, true, full_path, output_folder, [&](const std::string& path) {