(NoaOpener): recognize ancient RSA archives.

This commit is contained in:
morkt 2016-02-17 11:49:05 +04:00
parent 7809225e52
commit fc724ee4c7

View File

@ -76,7 +76,7 @@ namespace GameRes.Formats.Entis
public NoaOpener () public NoaOpener ()
{ {
Extensions = new string[] { "noa", "dat" }; Extensions = new string[] { "noa", "dat", "rsa" };
} }
public static Dictionary<string, Dictionary<string, string>> KnownKeys = public static Dictionary<string, Dictionary<string, string>> KnownKeys =
@ -118,7 +118,7 @@ namespace GameRes.Formats.Entis
public override Stream OpenEntry (ArcFile arc, Entry entry) public override Stream OpenEntry (ArcFile arc, Entry entry)
{ {
var nent = entry as NoaEntry; var nent = entry as NoaEntry;
if (null == nent || !arc.File.View.AsciiEqual (entry.Offset, "filedata")) if (null == nent)
return arc.File.CreateStream (entry.Offset, entry.Size); return arc.File.CreateStream (entry.Offset, entry.Size);
ulong size = arc.File.View.ReadUInt64 (entry.Offset+8); ulong size = arc.File.View.ReadUInt64 (entry.Offset+8);
if (size > int.MaxValue) if (size > int.MaxValue)
@ -264,8 +264,8 @@ namespace GameRes.Formats.Entis
dir_offset += 4; dir_offset += 4;
if (extra_length > 0 && 0 == (entry.Attr & 0x70)) if (extra_length > 0 && 0 == (entry.Attr & 0x70))
{ {
entry.Extra = new byte[extra_length]; entry.Extra = m_file.View.ReadBytes (dir_offset, extra_length);
if (entry.Extra.Length != m_file.View.Read (dir_offset, entry.Extra, 0, extra_length)) if (entry.Extra.Length != extra_length)
return false; return false;
} }
dir_offset += extra_length; dir_offset += extra_length;