aboutsummaryrefslogtreecommitdiff
path: root/src/core/file_sys
AgeCommit message (Collapse)Author
2018-10-04ips_layer: Add IPSwitchCompiler to process IPSwitch formatZach Hilman
2018-10-04Merge pull request #1415 from DarkLordZach/ipsbunnei
file_sys: Add support for loading IPS patches
2018-10-03Merge pull request #1436 from lioncash/viewbunnei
submission_package: Cleanup and bug fixes
2018-10-03Merge pull request #1435 from lioncash/xcibunnei
card_image: Ensure program_nca_status is always initialized
2018-10-03submission_package: Avoid dangling std::string_view within SetTicketKeys()Lioncash
GetName() returns a std::string by value, not by reference, so after the std::string_view is constructed, it's not well defined to actually execute any member functions of std::string_view that attempt to access the data, as the std::string has already been destroyed. Instead, we can just use a std::string and erase the last four characters.
2018-10-03submission_package: Correct location of null check within SetTicketKeys()Lioncash
If a ticket file was ever a null pointer, we'd cause a null pointer dereference, as we were calling GetExtension() on the pointer instance.
2018-10-03submission_package: Use std::string's rfind() when looking for the extension ↵Lioncash
in InitializeExeFSAndRomFS() When searching for a file extension, it's generally preferable to begin the search at the end of the string rather than the beginning, as the whole string isn't going to be walked just to check for something at the end of it.
2018-10-03submission_package: Ensure the 'extracted' member variable is always initializedLioncash
If an error occurs when constructing the PartitionFilesystem instance, the constructor would be exited early, which wouldn't initialize the extracted data member, making it possible for other code to perform an uninitialized read by calling the public IsExtractedType() member function. This prevents that.
2018-10-03submission_package: Move ExeFS and RomFS initialization to its own functionLioncash
Like the other two bits of factored out code, this can also be put within its own function. We can also modify the code so that it accepts a const reference to a std::vector of files, this way, we can deduplicate the file retrieval. Now the constructor for NSP isn't a combination of multiple behaviors in one spot. It's nice and separate.
2018-10-03submission_package: Move NCA reading code to its own functionLioncash
This too, is completely separate behavior from what is in the constructor, so we can move this to its own isolated function to keep everything self-contained.
2018-10-03submission_package: Move ticket key setting to its own functionLioncash
This behavior is entirely independent of the surrounding code, so it can be put in its own function to keep the behavior separate.
2018-10-03submission_package: Invert conditionals within NSP's constructor to reduce ↵Lioncash
nesting We can use early continues here to reduce the amount of nesting.
2018-10-02card_image: Ensure program_nca_status is always initializedLioncash
If any of the error paths before the NCA retrieval are taken, it'll result in program_nca_status being left in an inconsistent state. So we initialize it by default with a value indicating an error.
2018-10-02nso: Optimize loading of IPS patchesZach Hilman
Avoid resource-heavy classes and remove quasi-duplicated code.
2018-10-01patch_manager: Add PatchNSO functionZach Hilman
While PatchExeFS operated on the entire directory, this function operates on the uncompressed NSO. Avoids copying decompression code to PatchManager.
2018-10-01patch_manager: Use strings for patch type instead of enumZach Hilman
2018-10-01file_sys: Implement function to apply IPS patchesZach Hilman
2018-09-30aoc_u: Extract AccumulateAOCTitleIDs to separate functionZach Hilman
2018-09-30aoc_u: Implement GetAddOnContentBaseIdZach Hilman
Command #5
2018-09-30romfs_factory: Read from all locations with StorageId NoneZach Hilman
Previous behavior was to assert. Seems to mirror expected game behavior.
2018-09-30patch_manager: Add DLC recognition to PatchManagerZach Hilman
2018-09-30kernel/process: Make data member variables privateLioncash
Makes the public interface consistent in terms of how accesses are done on a process object. It also makes it slightly nicer to reason about the logic of the process class, as we don't want to expose everything to external code.
2018-09-29Merge pull request #1395 from lioncash/vmbunnei
process/vm_manager: Initial modifications to load NPDM metadata
2018-09-26fsmitm_romfsbuild: std::move std::vector instances in Build()Lioncash
Avoids making copies of large std::vector instances where it's trivially avoidable to do so.
2018-09-26fsmitm_romfsbuild: Replace manual value aligning with Common::AlignUp()Lioncash
Theres no need to do explicit bitwise arithmetic here, when we have a function that does this with a more descriptive name.
2018-09-25patch_manager: Invert conditionals within ApplyLayeredFS()Lioncash
Avoids the need to nest code quite a bit by early-exiting in error cases.
2018-09-25vfs_vector: Amend initializer list order in VectorVfsFile's constructor ↵Lioncash
initializer list Orders the initializer list members to be in the same order that they would be initialized in. Avoids compiler warnings.
2018-09-25fsmitm_romfsbuild: Avoid type truncation warningsLioncash
Cast where explicitly necessary and in other cases we can simply modify the algorithm to accomodate larger data.
2018-09-25fsmitm_romfsbuild: Remove unnecessary constructors and initializers for ↵Lioncash
RomFSBuildFileContext and RomFSBuildDirectoryContext There's no need to duplicate in-class initializers with a constructor initializer list. std::strings also initialize to empty by default.
2018-09-25fsmitm_romfsbuild: Remove unnecessary loops in Build()Lioncash
The std::vector instances are already initially allocated with all entries having these values, there's no need to loop through and fill them with it again when they aren't modified.
2018-09-25fsmitm_romfsbuild: Make auto variable into a std::size_t variable within Build()Lioncash
auto x = 0; auto-deduces x to be an int. This is undesirable when working with unsigned values. It also causes sign conversion warnings. Instead, we can make it a proper unsigned value with the correct width that the following expressions operate on.
2018-09-25vfs/etc: Append std:: to size_t usagesLioncash
Given we just recently had a patch backport this from citra, let's try and keep the convention uniform.
2018-09-25vfs_concat/vfs_layered: Remove friend declarations from ConcatenatedVfsFileLioncash
Given these are only added to the class to allow those functions to access the private constructor, it's a better approach to just make them static functions in the interface, to make the dependency explicit.
2018-09-25vfs_static: Remove template byte parameter from StaticVfsFileLioncash
This converts it into a regular constructor parameter. There's no need to make this a template parameter on the class when it functions perfectly well as a constructor argument. This also reduces the amount of code bloat produced by the compiler, as it doesn't need to generate the same code for multiple different instantiations of the same class type, but with a different fill value.
2018-09-24process/vm_manager: Amend API to allow reading parameters from NPDM metadataLioncash
Rather than hard-code the address range to be 36-bit, we can derive the parameters from supplied NPDM metadata if the supplied exectuable supports it. This is the bare minimum necessary for this to be possible. The following commits will rework the memory code further to adjust to this.
2018-09-23fsmitm: Cleanup and modernize fsmitm portZach Hilman
2018-09-21qt: Add UI elements for LayeredFS and related toolsZach Hilman
2018-09-21romfs: Implement CreateRomFSZach Hilman
2018-09-21file_sys: Port Atmosphere-NX fs_mitm implementationZach Hilman
2018-09-21bis_factory: Add mod directory VFS getterZach Hilman
2018-09-21patch_manager: Add LayeredFS mods supportZach Hilman
2018-09-21vfs_concat: Rewrite and fix ConcatenatedVfsFileZach Hilman
2018-09-21vfs_layered: Add LayeredVfsDirectoryZach Hilman
Reads multiple dirs through as if a waterfall.
2018-09-21vfs_vector: Add VectorVfsFileZach Hilman
Maps a vector into the VFS interface.
2018-09-21vfs_static: Add StaticVfsFileZach Hilman
Always returns the template argument byte for all reads. Doesn't support writes.
2018-09-21vfs: Add and rewite VfsRawCopy functionsZach Hilman
2018-09-21vfs: Add GetEntries methodZach Hilman
Maps name string to directory or file.
2018-09-20Merge pull request #1364 from lioncash/contentbunnei
file-sys: Default heavy-weight class destructors in the cpp file
2018-09-20Merge pull request #1358 from DarkLordZach/temp-storagebunnei
savedata_factory: Add TemporaryStorage SaveDataType
2018-09-20Merge pull request #1363 from lioncash/controlbunnei
control_metadata: Move language name array definition to the cpp file