From de2fad40e7026ef6331d548fd173fcfe56c5ce21 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 7 Oct 2023 11:10:28 +0100 Subject: [PATCH] [Symbian Installation File] Add support for Unicode. --- Aaru.Archives/Symbian/Info.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Aaru.Archives/Symbian/Info.cs b/Aaru.Archives/Symbian/Info.cs index 28ad030d8..a5ea525ba 100644 --- a/Aaru.Archives/Symbian/Info.cs +++ b/Aaru.Archives/Symbian/Info.cs @@ -72,7 +72,7 @@ public partial class Symbian public void GetInformation(IFilter filter, Encoding encoding, out string information) { - encoding ??= Encoding.GetEncoding("windows-1252"); + _encoding= encoding ?? Encoding.GetEncoding("windows-1252"); information = ""; var description = new StringBuilder(); var languages = new List(); @@ -120,6 +120,9 @@ public partial class Symbian AaruConsole.DebugWriteLine(MODULE_NAME, "sh.reserved1 = {0}", sh.reserved1); AaruConsole.DebugWriteLine(MODULE_NAME, "sh.reserved2 = {0}", sh.reserved2); + if(sh.options.HasFlag(SymbianOptions.IsUnicode)) + _encoding = Encoding.Unicode; + var br = new BinaryReader(stream); // Go to enumerate languages @@ -153,7 +156,7 @@ public partial class Symbian br.BaseStream.Seek(componentRecord.namesPointers[i], SeekOrigin.Begin); buffer = br.ReadBytes((int)componentRecord.namesLengths[i]); - componentRecord.names[i] = encoding.GetString(buffer); + componentRecord.names[i] = _encoding.GetString(buffer); } // Go to capabilities (???) @@ -239,7 +242,6 @@ public partial class Symbian // description.AppendFormat("{0} = {1}", kvp.Key, kvp.Value).AppendLine(); // Set instance values - _encoding = encoding; _files = new List(); uint currentFile = 0; @@ -250,6 +252,8 @@ public partial class Symbian Parse(br, ref offset, ref currentFile, sh.files, languages); } while(currentFile < sh.files); + description.AppendLine(); + // Files appear on .sis in the reverse order they should be processed _files.Reverse();