Convert STFS filenames from Win-1252 to UTF-8
This commit is contained in:
committed by
Radosław Gliński
parent
60b31af811
commit
6cba5ba7e6
@@ -140,7 +140,9 @@ bool DiscImageDevice::ReadEntry(ParseState* state, const uint8_t* buffer,
|
||||
return false;
|
||||
}
|
||||
|
||||
auto name = std::string(name_buffer, name_length);
|
||||
// Filename is stored as Windows-1252, convert it to UTF-8.
|
||||
auto ansi_name = std::string(name_buffer, name_length);
|
||||
auto name = xe::win1252_to_utf8(ansi_name);
|
||||
|
||||
auto entry = DiscImageEntry::Create(this, parent, name, mmap_.get());
|
||||
entry->attributes_ = attributes | kFileAttributeReadOnly;
|
||||
|
||||
@@ -113,8 +113,10 @@ StfsContainerDevice::Result StfsContainerDevice::Read() {
|
||||
std::unique_ptr<XContentContainerEntry> StfsContainerDevice::ReadEntry(
|
||||
Entry* parent, MultiFileHandles* files,
|
||||
const StfsDirectoryEntry* dir_entry) {
|
||||
std::string name(reinterpret_cast<const char*>(dir_entry->name),
|
||||
dir_entry->flags.name_length & 0x3F);
|
||||
// Filename is stored as Windows-1252, convert it to UTF-8.
|
||||
std::string ansi_name(reinterpret_cast<const char*>(dir_entry->name),
|
||||
dir_entry->flags.name_length & 0x3F);
|
||||
std::string name = xe::win1252_to_utf8(ansi_name);
|
||||
|
||||
auto entry = XContentContainerEntry::Create(this, parent, name, &files_);
|
||||
|
||||
|
||||
@@ -153,7 +153,9 @@ SvodContainerDevice::Result SvodContainerDevice::ReadEntry(
|
||||
return Result::kReadError;
|
||||
}
|
||||
|
||||
auto name = std::string(name_buffer.get(), dir_entry.name_length);
|
||||
// Filename is stored as Windows-1252, convert it to UTF-8.
|
||||
auto ansi_name = std::string(name_buffer.get(), dir_entry.name_length);
|
||||
auto name = xe::win1252_to_utf8(ansi_name);
|
||||
|
||||
// Read the left node
|
||||
if (dir_entry.node_l) {
|
||||
|
||||
Reference in New Issue
Block a user