Merge pull request #965 from lioncash/unused-files
hle: Remove unused romfs.cpp/.h
This commit is contained in:
		| @@ -104,8 +104,6 @@ add_library(core STATIC | ||||
|     hle/lock.cpp | ||||
|     hle/lock.h | ||||
|     hle/result.h | ||||
|     hle/romfs.cpp | ||||
|     hle/romfs.h | ||||
|     hle/service/acc/acc.cpp | ||||
|     hle/service/acc/acc.h | ||||
|     hle/service/acc/acc_aa.cpp | ||||
|   | ||||
| @@ -1,102 +0,0 @@ | ||||
| // Copyright 2017 Citra Emulator Project | ||||
| // Licensed under GPLv2 or any later version | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #include <cstring> | ||||
| #include "common/swap.h" | ||||
| #include "core/hle/romfs.h" | ||||
|  | ||||
| namespace RomFS { | ||||
|  | ||||
| struct Header { | ||||
|     u32_le header_length; | ||||
|     u32_le dir_hash_table_offset; | ||||
|     u32_le dir_hash_table_length; | ||||
|     u32_le dir_table_offset; | ||||
|     u32_le dir_table_length; | ||||
|     u32_le file_hash_table_offset; | ||||
|     u32_le file_hash_table_length; | ||||
|     u32_le file_table_offset; | ||||
|     u32_le file_table_length; | ||||
|     u32_le data_offset; | ||||
| }; | ||||
|  | ||||
| static_assert(sizeof(Header) == 0x28, "Header has incorrect size"); | ||||
|  | ||||
| struct DirectoryMetadata { | ||||
|     u32_le parent_dir_offset; | ||||
|     u32_le next_dir_offset; | ||||
|     u32_le first_child_dir_offset; | ||||
|     u32_le first_file_offset; | ||||
|     u32_le same_hash_next_dir_offset; | ||||
|     u32_le name_length; // in bytes | ||||
|     // followed by directory name | ||||
| }; | ||||
|  | ||||
| static_assert(sizeof(DirectoryMetadata) == 0x18, "DirectoryMetadata has incorrect size"); | ||||
|  | ||||
| struct FileMetadata { | ||||
|     u32_le parent_dir_offset; | ||||
|     u32_le next_file_offset; | ||||
|     u64_le data_offset; | ||||
|     u64_le data_length; | ||||
|     u32_le same_hash_next_file_offset; | ||||
|     u32_le name_length; // in bytes | ||||
|     // followed by file name | ||||
| }; | ||||
|  | ||||
| static_assert(sizeof(FileMetadata) == 0x20, "FileMetadata has incorrect size"); | ||||
|  | ||||
| static bool MatchName(const u8* buffer, u32 name_length, const std::u16string& name) { | ||||
|     std::vector<char16_t> name_buffer(name_length / sizeof(char16_t)); | ||||
|     std::memcpy(name_buffer.data(), buffer, name_length); | ||||
|     return name == std::u16string(name_buffer.begin(), name_buffer.end()); | ||||
| } | ||||
|  | ||||
| const u8* GetFilePointer(const u8* romfs, const std::vector<std::u16string>& path) { | ||||
|     constexpr u32 INVALID_FIELD = 0xFFFFFFFF; | ||||
|  | ||||
|     // Split path into directory names and file name | ||||
|     std::vector<std::u16string> dir_names = path; | ||||
|     dir_names.pop_back(); | ||||
|     const std::u16string& file_name = path.back(); | ||||
|  | ||||
|     Header header; | ||||
|     std::memcpy(&header, romfs, sizeof(header)); | ||||
|  | ||||
|     // Find directories of each level | ||||
|     DirectoryMetadata dir; | ||||
|     const u8* current_dir = romfs + header.dir_table_offset; | ||||
|     std::memcpy(&dir, current_dir, sizeof(dir)); | ||||
|     for (const std::u16string& dir_name : dir_names) { | ||||
|         u32 child_dir_offset; | ||||
|         child_dir_offset = dir.first_child_dir_offset; | ||||
|         while (true) { | ||||
|             if (child_dir_offset == INVALID_FIELD) { | ||||
|                 return nullptr; | ||||
|             } | ||||
|             const u8* current_child_dir = romfs + header.dir_table_offset + child_dir_offset; | ||||
|             std::memcpy(&dir, current_child_dir, sizeof(dir)); | ||||
|             if (MatchName(current_child_dir + sizeof(dir), dir.name_length, dir_name)) { | ||||
|                 current_dir = current_child_dir; | ||||
|                 break; | ||||
|             } | ||||
|             child_dir_offset = dir.next_dir_offset; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // Find the file | ||||
|     FileMetadata file; | ||||
|     u32 file_offset = dir.first_file_offset; | ||||
|     while (file_offset != INVALID_FIELD) { | ||||
|         const u8* current_file = romfs + header.file_table_offset + file_offset; | ||||
|         std::memcpy(&file, current_file, sizeof(file)); | ||||
|         if (MatchName(current_file + sizeof(file), file.name_length, file_name)) { | ||||
|             return romfs + header.data_offset + file.data_offset; | ||||
|         } | ||||
|         file_offset = file.next_file_offset; | ||||
|     } | ||||
|     return nullptr; | ||||
| } | ||||
|  | ||||
| } // namespace RomFS | ||||
| @@ -1,22 +0,0 @@ | ||||
| // Copyright 2017 Citra Emulator Project | ||||
| // Licensed under GPLv2 or any later version | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include <string> | ||||
| #include <vector> | ||||
| #include "common/common_types.h" | ||||
|  | ||||
| namespace RomFS { | ||||
|  | ||||
| /** | ||||
|  * Gets the pointer to a file in a RomFS image. | ||||
|  * @param romfs The pointer to the RomFS image | ||||
|  * @param path A vector containing the directory names and file name of the path to the file | ||||
|  * @return the pointer to the file | ||||
|  * @todo reimplement this with a full RomFS manager | ||||
|  */ | ||||
| const u8* GetFilePointer(const u8* romfs, const std::vector<std::u16string>& path); | ||||
|  | ||||
| } // namespace RomFS | ||||
		Reference in New Issue
	
	Block a user