[XAM] Fixed issue with invalid path returned in launch_data
This commit is contained in:
parent
08c740c788
commit
e8afad8f8a
|
@ -398,13 +398,13 @@ X_STATUS Emulator::MountPath(const std::filesystem::path& path,
|
||||||
return X_STATUS_NO_SUCH_FILE;
|
return X_STATUS_NO_SUCH_FILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
file_system_->UnregisterSymbolicLink(kDefaultPartitonSymbolicLink);
|
file_system_->UnregisterSymbolicLink(kDefaultPartitionSymbolicLink);
|
||||||
file_system_->UnregisterSymbolicLink(kDefaultGameSymbolicLink);
|
file_system_->UnregisterSymbolicLink(kDefaultGameSymbolicLink);
|
||||||
file_system_->UnregisterSymbolicLink("plugins:");
|
file_system_->UnregisterSymbolicLink("plugins:");
|
||||||
|
|
||||||
// Create symlinks to the device.
|
// Create symlinks to the device.
|
||||||
file_system_->RegisterSymbolicLink(kDefaultGameSymbolicLink, mount_path);
|
file_system_->RegisterSymbolicLink(kDefaultGameSymbolicLink, mount_path);
|
||||||
file_system_->RegisterSymbolicLink(kDefaultPartitonSymbolicLink, mount_path);
|
file_system_->RegisterSymbolicLink(kDefaultPartitionSymbolicLink, mount_path);
|
||||||
|
|
||||||
return X_STATUS_SUCCESS;
|
return X_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -875,14 +875,14 @@ std::string Emulator::FindLaunchModule() {
|
||||||
// Remove previous symbolic links.
|
// Remove previous symbolic links.
|
||||||
// Some titles can provide root within specific directory.
|
// Some titles can provide root within specific directory.
|
||||||
kernel_state_->file_system()->UnregisterSymbolicLink(
|
kernel_state_->file_system()->UnregisterSymbolicLink(
|
||||||
kDefaultPartitonSymbolicLink);
|
kDefaultPartitionSymbolicLink);
|
||||||
kernel_state_->file_system()->UnregisterSymbolicLink(
|
kernel_state_->file_system()->UnregisterSymbolicLink(
|
||||||
kDefaultGameSymbolicLink);
|
kDefaultGameSymbolicLink);
|
||||||
|
|
||||||
file_path /= std::filesystem::path(xam->loader_data().launch_path);
|
file_path /= std::filesystem::path(xam->loader_data().launch_path);
|
||||||
|
|
||||||
kernel_state_->file_system()->RegisterSymbolicLink(
|
kernel_state_->file_system()->RegisterSymbolicLink(
|
||||||
kDefaultPartitonSymbolicLink,
|
kDefaultPartitionSymbolicLink,
|
||||||
xe::path_to_utf8(file_path.parent_path()));
|
xe::path_to_utf8(file_path.parent_path()));
|
||||||
kernel_state_->file_system()->RegisterSymbolicLink(
|
kernel_state_->file_system()->RegisterSymbolicLink(
|
||||||
kDefaultGameSymbolicLink, xe::path_to_utf8(file_path.parent_path()));
|
kDefaultGameSymbolicLink, xe::path_to_utf8(file_path.parent_path()));
|
||||||
|
|
|
@ -53,7 +53,7 @@ namespace xe {
|
||||||
|
|
||||||
constexpr fourcc_t kEmulatorSaveSignature = make_fourcc("XSAV");
|
constexpr fourcc_t kEmulatorSaveSignature = make_fourcc("XSAV");
|
||||||
static const std::string kDefaultGameSymbolicLink = "GAME:";
|
static const std::string kDefaultGameSymbolicLink = "GAME:";
|
||||||
static const std::string kDefaultPartitonSymbolicLink = "D:";
|
static const std::string kDefaultPartitionSymbolicLink = "D:";
|
||||||
|
|
||||||
// The main type that runs the whole emulator.
|
// The main type that runs the whole emulator.
|
||||||
// This is responsible for initializing and managing all the various subsystems.
|
// This is responsible for initializing and managing all the various subsystems.
|
||||||
|
|
|
@ -110,10 +110,15 @@ void XamModule::SaveLoaderData() {
|
||||||
|
|
||||||
std::filesystem::path host_path = loader_data_.host_path;
|
std::filesystem::path host_path = loader_data_.host_path;
|
||||||
std::string launch_path = loader_data_.launch_path;
|
std::string launch_path = loader_data_.launch_path;
|
||||||
const std::string launch_prefix = "game:\\";
|
|
||||||
if (launch_path.compare(0, launch_prefix.length(), launch_prefix) == 0) {
|
auto remove_prefix = [&launch_path](std::string& prefix) {
|
||||||
launch_path = launch_path.substr(launch_prefix.length());
|
if (launch_path.compare(0, prefix.length(), prefix) == 0) {
|
||||||
}
|
launch_path = launch_path.substr(prefix.length());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
remove_prefix(std::string("game:\\"));
|
||||||
|
remove_prefix(std::string("d:\\"));
|
||||||
|
|
||||||
if (host_path.extension() == ".xex") {
|
if (host_path.extension() == ".xex") {
|
||||||
host_path.remove_filename();
|
host_path.remove_filename();
|
||||||
|
|
Loading…
Reference in New Issue