mitm/cfg: pass around override status for decision-making

This commit is contained in:
Michael Scire
2019-11-21 04:03:19 -08:00
committed by SciresM
parent 37e065fa2d
commit 421324b498
59 changed files with 425 additions and 265 deletions

View File

@@ -23,10 +23,13 @@ namespace ams::ldr {
NON_COPYABLE(ScopedCodeMount);
private:
Result result;
cfg::OverrideStatus override_status;
bool has_status;
bool is_code_mounted;
bool is_hbl_mounted;
public:
ScopedCodeMount(const ncm::ProgramLocation &loc);
ScopedCodeMount(const ncm::ProgramLocation &loc, const cfg::OverrideStatus &override_status);
~ScopedCodeMount();
Result GetResult() const {
@@ -41,17 +44,24 @@ namespace ams::ldr {
return this->is_hbl_mounted;
}
const cfg::OverrideStatus &GetOverrideStatus() const {
AMS_ASSERT(this->has_status);
return this->override_status;
}
private:
Result Initialize(const ncm::ProgramLocation &loc);
void InitializeOverrideStatus(const ncm::ProgramLocation &loc);
Result MountCodeFileSystem(const ncm::ProgramLocation &loc);
Result MountSdCardCodeFileSystem(const ncm::ProgramLocation &loc);
Result MountHblFileSystem();
};
/* Content Management API. */
Result OpenCodeFile(FILE *&out, ncm::ProgramId program_id, const char *relative_path);
Result OpenCodeFileFromBaseExefs(FILE *&out, ncm::ProgramId program_id, const char *relative_path);
Result OpenCodeFile(FILE *&out, ncm::ProgramId program_id, const cfg::OverrideStatus &status, const char *relative_path);
Result OpenCodeFileFromBaseExefs(FILE *&out, ncm::ProgramId program_id, const cfg::OverrideStatus &status, const char *relative_path);
/* Redirection API. */
Result ResolveContentPath(char *out_path, const ncm::ProgramLocation &loc);