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); }