in ILRepack/Steps/Win32Resources/RsrcReader.cs [38:76]
private static ResourceEntry ReadResourceEntry(BinaryReader dr, uint baseAddress)
{
var re = new ResourceEntry();
uint id = dr.ReadUInt32();
uint offset = dr.ReadUInt32();
long pos = dr.BaseStream.Position;
if ((id & 0x80000000) != 0)
{
dr.BaseStream.Position = (id & 0x7fffffff);
var b = new StringBuilder();
int c;
while ((c = dr.Read()) > 0)
b.Append((char) c);
re.Name = b.ToString();
}
else
{
re.Id = id;
}
if ((offset & 0x80000000) != 0)
{
dr.BaseStream.Position = (offset & 0x7fffffff);
re.Directory = ReadResourceDirectory(dr, baseAddress);
}
else
{
dr.BaseStream.Position = offset;
uint rva = dr.ReadUInt32();
uint size = dr.ReadUInt32();
uint cp = dr.ReadUInt32();
uint res = dr.ReadUInt32();
re.CodePage = cp;
re.Reserved = res;
dr.BaseStream.Position = (rva - baseAddress);
re.Data = dr.ReadBytes((int)size);
}
dr.BaseStream.Position = pos;
return re;
}