Beispiel #1
0
        internal static void GetHFS0Managed(string inFile, ref hfs0_header header, ref List <hfs0_file_entry> entries, ref List <string> stringTable)
        {
            // TODO Check file integrity
            FileStream   fs = new FileStream(inFile, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);

            header = Utils.FromBinaryReader <hfs0_header>(br);

            int offset = HFS0_HEADER_LENGTH;

            // Deserialize structs
            for (int i = 0; i < header.NumberOfFiles; i++)
            {
                fs.Seek(offset, SeekOrigin.Begin);
                hfs0_file_entry entry = Utils.FromBinaryReader <hfs0_file_entry>(br);
                entries.Add(entry);
                offset += HFS0_ENTRY_LENGTH;
            }
            // Parse string table
            for (int i = 0; i < header.NumberOfFiles; i++)
            {
                var entry = entries[i];
                fs.Seek(offset + entry.StringTableOffset, SeekOrigin.Begin);
                byte        b           = 0x0;
                List <byte> stringBytes = new List <byte>();
                while ((b = br.ReadByte()) > 0)
                {
                    stringBytes.Add(b);
                }
                stringTable.Add(Encoding.ASCII.GetString(stringBytes.ToArray()));
            }

            br.Close();
            fs.Close();
        }
        public static xci_header GetXCIHeader(string inFile)
        {
            // TODO Check magic
            FileStream   fs     = new FileStream(inFile, FileMode.Open, FileAccess.Read);
            BinaryReader br     = new BinaryReader(fs);
            xci_header   header = Utils.FromBinaryReader <xci_header>(br);


            br.Close();
            fs.Close();
            return(header);
        }