예제 #1
0
파일: PPVAX.cs 프로젝트: wabberz/Kuriimu
        public PPVAX(Stream input)
        {
            _stream = input;
            using (var br = new BinaryReaderX(input, true))
            {
                while (br.PeekInt32() != 0x800)
                {
                    br.ReadInt32();
                    lateStart = true;
                }

                do
                {
                    entries.Add(br.ReadStruct <Entry>());
                    if (firstFileOffset == 0)
                    {
                        firstFileOffset = entries.FirstOrDefault()?.Offset ?? 0;
                    }
                } while (br.PeekInt32() > 0);

                br.BaseStream.Position = firstFileOffset;

                for (var i = 0; i < entries.Count; i++)
                {
                    Files.Add(new PpvaxFileInfo
                    {
                        Entry    = entries[i],
                        FileName = $"{i.ToString("000")}.ppvax",
                        FileData = new SubStream(br.BaseStream, entries[i].Offset, entries[i].NextOffset - entries[i].Offset),
                        State    = ArchiveFileState.Archived
                    });
                }
            }
        }
예제 #2
0
        public bool Identify(string filename)
        {
            var result = true;

            try
            {
                using (var br = new BinaryReaderX(File.OpenRead(filename)))
                    if (br.PeekInt32() == 0)
                    {
                        return(false);
                    }
                var mmb = new MMB(File.OpenRead(filename));
            }
            catch
            {
                result = false;
            }
            return(result);
        }