summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/core/file_sys/card_image.cpp4
-rw-r--r--src/core/file_sys/card_image.h3
-rw-r--r--src/core/file_sys/content_archive.cpp3
-rw-r--r--src/core/file_sys/content_archive.h3
-rw-r--r--src/core/file_sys/partition_filesystem.cpp16
-rw-r--r--src/core/file_sys/partition_filesystem.h4
-rw-r--r--src/core/file_sys/submission_package.cpp4
-rw-r--r--src/core/file_sys/submission_package.h3
-rw-r--r--src/core/file_sys/vfs.h28
-rw-r--r--src/core/file_sys/vfs_layered.cpp3
-rw-r--r--src/core/file_sys/vfs_layered.h3
-rw-r--r--src/core/file_sys/vfs_real.cpp3
-rw-r--r--src/core/file_sys/vfs_real.h3
-rw-r--r--src/core/file_sys/vfs_vector.cpp7
-rw-r--r--src/core/file_sys/vfs_vector.h3
-rw-r--r--src/core/file_sys/xts_archive.cpp3
-rw-r--r--src/core/file_sys/xts_archive.h3
17 files changed, 1 insertions, 95 deletions
diff --git a/src/core/file_sys/card_image.cpp b/src/core/file_sys/card_image.cpp
index ecdd7505b..1ece55731 100644
--- a/src/core/file_sys/card_image.cpp
+++ b/src/core/file_sys/card_image.cpp
@@ -168,10 +168,6 @@ VirtualDir XCI::GetParentDirectory() const {
168 return file->GetContainingDirectory(); 168 return file->GetContainingDirectory();
169} 169}
170 170
171bool XCI::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
172 return false;
173}
174
175Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) { 171Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) {
176 if (partitions[static_cast<std::size_t>(part)] == nullptr) { 172 if (partitions[static_cast<std::size_t>(part)] == nullptr) {
177 return Loader::ResultStatus::ErrorXCIMissingPartition; 173 return Loader::ResultStatus::ErrorXCIMissingPartition;
diff --git a/src/core/file_sys/card_image.h b/src/core/file_sys/card_image.h
index 48cbef666..8f62571cf 100644
--- a/src/core/file_sys/card_image.h
+++ b/src/core/file_sys/card_image.h
@@ -94,9 +94,6 @@ public:
94 94
95 VirtualDir GetParentDirectory() const override; 95 VirtualDir GetParentDirectory() const override;
96 96
97protected:
98 bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override;
99
100private: 97private:
101 Loader::ResultStatus AddNCAFromPartition(XCIPartition part); 98 Loader::ResultStatus AddNCAFromPartition(XCIPartition part);
102 99
diff --git a/src/core/file_sys/content_archive.cpp b/src/core/file_sys/content_archive.cpp
index 6c356d85d..77e04704e 100644
--- a/src/core/file_sys/content_archive.cpp
+++ b/src/core/file_sys/content_archive.cpp
@@ -546,7 +546,4 @@ u64 NCA::GetBaseIVFCOffset() const {
546 return ivfc_offset; 546 return ivfc_offset;
547} 547}
548 548
549bool NCA::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
550 return false;
551}
552} // namespace FileSys 549} // namespace FileSys
diff --git a/src/core/file_sys/content_archive.h b/src/core/file_sys/content_archive.h
index 1c903cd3f..211946686 100644
--- a/src/core/file_sys/content_archive.h
+++ b/src/core/file_sys/content_archive.h
@@ -100,9 +100,6 @@ public:
100 // Returns the base ivfc offset used in BKTR patching. 100 // Returns the base ivfc offset used in BKTR patching.
101 u64 GetBaseIVFCOffset() const; 101 u64 GetBaseIVFCOffset() const;
102 102
103protected:
104 bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override;
105
106private: 103private:
107 bool CheckSupportedNCA(const NCAHeader& header); 104 bool CheckSupportedNCA(const NCAHeader& header);
108 bool HandlePotentialHeaderDecryption(); 105 bool HandlePotentialHeaderDecryption();
diff --git a/src/core/file_sys/partition_filesystem.cpp b/src/core/file_sys/partition_filesystem.cpp
index 5791c76ff..a5259a593 100644
--- a/src/core/file_sys/partition_filesystem.cpp
+++ b/src/core/file_sys/partition_filesystem.cpp
@@ -83,7 +83,7 @@ std::vector<std::shared_ptr<VfsFile>> PartitionFilesystem::GetFiles() const {
83} 83}
84 84
85std::vector<std::shared_ptr<VfsDirectory>> PartitionFilesystem::GetSubdirectories() const { 85std::vector<std::shared_ptr<VfsDirectory>> PartitionFilesystem::GetSubdirectories() const {
86 return pfs_dirs; 86 return {};
87} 87}
88 88
89std::string PartitionFilesystem::GetName() const { 89std::string PartitionFilesystem::GetName() const {
@@ -103,18 +103,4 @@ void PartitionFilesystem::PrintDebugInfo() const {
103 pfs_files[i]->GetName(), pfs_files[i]->GetSize()); 103 pfs_files[i]->GetName(), pfs_files[i]->GetSize());
104 } 104 }
105} 105}
106
107bool PartitionFilesystem::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
108 const auto iter = std::find(pfs_files.begin(), pfs_files.end(), file);
109 if (iter == pfs_files.end())
110 return false;
111
112 const std::ptrdiff_t offset = std::distance(pfs_files.begin(), iter);
113 pfs_files[offset] = std::move(pfs_files.back());
114 pfs_files.pop_back();
115
116 pfs_dirs.emplace_back(std::move(dir));
117
118 return true;
119}
120} // namespace FileSys 106} // namespace FileSys
diff --git a/src/core/file_sys/partition_filesystem.h b/src/core/file_sys/partition_filesystem.h
index 739c63a7f..248fdfdeb 100644
--- a/src/core/file_sys/partition_filesystem.h
+++ b/src/core/file_sys/partition_filesystem.h
@@ -35,9 +35,6 @@ public:
35 std::shared_ptr<VfsDirectory> GetParentDirectory() const override; 35 std::shared_ptr<VfsDirectory> GetParentDirectory() const override;
36 void PrintDebugInfo() const; 36 void PrintDebugInfo() const;
37 37
38protected:
39 bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override;
40
41private: 38private:
42 struct Header { 39 struct Header {
43 u32_le magic; 40 u32_le magic;
@@ -84,7 +81,6 @@ private:
84 std::size_t content_offset = 0; 81 std::size_t content_offset = 0;
85 82
86 std::vector<VirtualFile> pfs_files; 83 std::vector<VirtualFile> pfs_files;
87 std::vector<VirtualDir> pfs_dirs;
88}; 84};
89 85
90} // namespace FileSys 86} // namespace FileSys
diff --git a/src/core/file_sys/submission_package.cpp b/src/core/file_sys/submission_package.cpp
index ab5dc900c..2aaba4179 100644
--- a/src/core/file_sys/submission_package.cpp
+++ b/src/core/file_sys/submission_package.cpp
@@ -205,10 +205,6 @@ VirtualDir NSP::GetParentDirectory() const {
205 return file->GetContainingDirectory(); 205 return file->GetContainingDirectory();
206} 206}
207 207
208bool NSP::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
209 return false;
210}
211
212void NSP::InitializeExeFSAndRomFS(const std::vector<VirtualFile>& files) { 208void NSP::InitializeExeFSAndRomFS(const std::vector<VirtualFile>& files) {
213 exefs = pfs; 209 exefs = pfs;
214 210
diff --git a/src/core/file_sys/submission_package.h b/src/core/file_sys/submission_package.h
index da3dc5e9f..338080b7e 100644
--- a/src/core/file_sys/submission_package.h
+++ b/src/core/file_sys/submission_package.h
@@ -55,9 +55,6 @@ public:
55 55
56 VirtualDir GetParentDirectory() const override; 56 VirtualDir GetParentDirectory() const override;
57 57
58protected:
59 bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override;
60
61private: 58private:
62 void InitializeExeFSAndRomFS(const std::vector<VirtualFile>& files); 59 void InitializeExeFSAndRomFS(const std::vector<VirtualFile>& files);
63 void ReadNCAs(const std::vector<VirtualFile>& files); 60 void ReadNCAs(const std::vector<VirtualFile>& files);
diff --git a/src/core/file_sys/vfs.h b/src/core/file_sys/vfs.h
index 7f0d520ca..09dc9f288 100644
--- a/src/core/file_sys/vfs.h
+++ b/src/core/file_sys/vfs.h
@@ -262,36 +262,8 @@ public:
262 // item name -> type. 262 // item name -> type.
263 virtual std::map<std::string, VfsEntryType, std::less<>> GetEntries() const; 263 virtual std::map<std::string, VfsEntryType, std::less<>> GetEntries() const;
264 264
265 // Interprets the file with name file instead as a directory of type directory.
266 // The directory must have a constructor that takes a single argument of type
267 // std::shared_ptr<VfsFile>. Allows to reinterpret container files (i.e NCA, zip, XCI, etc) as a
268 // subdirectory in one call.
269 template <typename Directory>
270 bool InterpretAsDirectory(std::string_view file) {
271 auto file_p = GetFile(file);
272
273 if (file_p == nullptr) {
274 return false;
275 }
276
277 return ReplaceFileWithSubdirectory(file_p, std::make_shared<Directory>(file_p));
278 }
279
280 bool InterpretAsDirectory(const std::function<VirtualDir(VirtualFile)>& function,
281 const std::string& file) {
282 auto file_p = GetFile(file);
283 if (file_p == nullptr)
284 return false;
285 return ReplaceFileWithSubdirectory(file_p, function(file_p));
286 }
287
288 // Returns the full path of this directory as a string, recursively 265 // Returns the full path of this directory as a string, recursively
289 virtual std::string GetFullPath() const; 266 virtual std::string GetFullPath() const;
290
291protected:
292 // Backend for InterpretAsDirectory.
293 // Removes all references to file and adds a reference to dir in the directory's implementation.
294 virtual bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) = 0;
295}; 267};
296 268
297// A convenience partial-implementation of VfsDirectory that stubs out methods that should only work 269// A convenience partial-implementation of VfsDirectory that stubs out methods that should only work
diff --git a/src/core/file_sys/vfs_layered.cpp b/src/core/file_sys/vfs_layered.cpp
index bfee01725..338e398da 100644
--- a/src/core/file_sys/vfs_layered.cpp
+++ b/src/core/file_sys/vfs_layered.cpp
@@ -126,7 +126,4 @@ bool LayeredVfsDirectory::Rename(std::string_view name_) {
126 return true; 126 return true;
127} 127}
128 128
129bool LayeredVfsDirectory::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
130 return false;
131}
132} // namespace FileSys 129} // namespace FileSys
diff --git a/src/core/file_sys/vfs_layered.h b/src/core/file_sys/vfs_layered.h
index d85310f57..8a25c3428 100644
--- a/src/core/file_sys/vfs_layered.h
+++ b/src/core/file_sys/vfs_layered.h
@@ -39,9 +39,6 @@ public:
39 bool DeleteFile(std::string_view name) override; 39 bool DeleteFile(std::string_view name) override;
40 bool Rename(std::string_view name) override; 40 bool Rename(std::string_view name) override;
41 41
42protected:
43 bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override;
44
45private: 42private:
46 std::vector<VirtualDir> dirs; 43 std::vector<VirtualDir> dirs;
47 std::string name; 44 std::string name;
diff --git a/src/core/file_sys/vfs_real.cpp b/src/core/file_sys/vfs_real.cpp
index 9defad04c..e21300a7c 100644
--- a/src/core/file_sys/vfs_real.cpp
+++ b/src/core/file_sys/vfs_real.cpp
@@ -430,7 +430,4 @@ std::map<std::string, VfsEntryType, std::less<>> RealVfsDirectory::GetEntries()
430 return out; 430 return out;
431} 431}
432 432
433bool RealVfsDirectory::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
434 return false;
435}
436} // namespace FileSys 433} // namespace FileSys
diff --git a/src/core/file_sys/vfs_real.h b/src/core/file_sys/vfs_real.h
index 5b61db90d..a0a857a31 100644
--- a/src/core/file_sys/vfs_real.h
+++ b/src/core/file_sys/vfs_real.h
@@ -100,9 +100,6 @@ public:
100 std::string GetFullPath() const override; 100 std::string GetFullPath() const override;
101 std::map<std::string, VfsEntryType, std::less<>> GetEntries() const override; 101 std::map<std::string, VfsEntryType, std::less<>> GetEntries() const override;
102 102
103protected:
104 bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override;
105
106private: 103private:
107 RealVfsDirectory(RealVfsFilesystem& base, const std::string& path, Mode perms = Mode::Read); 104 RealVfsDirectory(RealVfsFilesystem& base, const std::string& path, Mode perms = Mode::Read);
108 105
diff --git a/src/core/file_sys/vfs_vector.cpp b/src/core/file_sys/vfs_vector.cpp
index 389c7e003..808f31e81 100644
--- a/src/core/file_sys/vfs_vector.cpp
+++ b/src/core/file_sys/vfs_vector.cpp
@@ -132,11 +132,4 @@ void VectorVfsDirectory::AddFile(VirtualFile file) {
132void VectorVfsDirectory::AddDirectory(VirtualDir dir) { 132void VectorVfsDirectory::AddDirectory(VirtualDir dir) {
133 dirs.push_back(std::move(dir)); 133 dirs.push_back(std::move(dir));
134} 134}
135
136bool VectorVfsDirectory::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
137 if (!DeleteFile(file->GetName()))
138 return false;
139 dirs.emplace_back(std::move(dir));
140 return true;
141}
142} // namespace FileSys 135} // namespace FileSys
diff --git a/src/core/file_sys/vfs_vector.h b/src/core/file_sys/vfs_vector.h
index 48a414c98..3e3f790c3 100644
--- a/src/core/file_sys/vfs_vector.h
+++ b/src/core/file_sys/vfs_vector.h
@@ -57,9 +57,6 @@ public:
57 virtual void AddFile(VirtualFile file); 57 virtual void AddFile(VirtualFile file);
58 virtual void AddDirectory(VirtualDir dir); 58 virtual void AddDirectory(VirtualDir dir);
59 59
60protected:
61 bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override;
62
63private: 60private:
64 std::vector<VirtualFile> files; 61 std::vector<VirtualFile> files;
65 std::vector<VirtualDir> dirs; 62 std::vector<VirtualDir> dirs;
diff --git a/src/core/file_sys/xts_archive.cpp b/src/core/file_sys/xts_archive.cpp
index b2b164368..eec51c64e 100644
--- a/src/core/file_sys/xts_archive.cpp
+++ b/src/core/file_sys/xts_archive.cpp
@@ -163,7 +163,4 @@ std::shared_ptr<VfsDirectory> NAX::GetParentDirectory() const {
163 return file->GetContainingDirectory(); 163 return file->GetContainingDirectory();
164} 164}
165 165
166bool NAX::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
167 return false;
168}
169} // namespace FileSys 166} // namespace FileSys
diff --git a/src/core/file_sys/xts_archive.h b/src/core/file_sys/xts_archive.h
index 8fedd8585..7704dee90 100644
--- a/src/core/file_sys/xts_archive.h
+++ b/src/core/file_sys/xts_archive.h
@@ -51,9 +51,6 @@ public:
51 51
52 std::shared_ptr<VfsDirectory> GetParentDirectory() const override; 52 std::shared_ptr<VfsDirectory> GetParentDirectory() const override;
53 53
54protected:
55 bool ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) override;
56
57private: 54private:
58 Loader::ResultStatus Parse(std::string_view path); 55 Loader::ResultStatus Parse(std::string_view path);
59 56