Exemplo n.º 1
0
        bool CouldBeIndexItem(BinaryReader br, long pos, int step, bool strict)
        {
            if (pos < 0)
            {
                return(false);
            }

            for (int i = 0; i < 4; i++)
            {
                br.BaseStream.Seek(pos + i * step, SeekOrigin.Begin);
                SimPe.Packages.PackedFileDescriptor pfd = new PackedFileDescriptor();
                pfd.LoadFromStream(pkg.Header, br);


                if (!types.Contains(pfd.Type))
                {
                    return(false);
                }
                if (pfd.Size <= 0)
                {
                    return(false);
                }
                if (pfd.Offset <= 0 || pfd.Offset >= br.BaseStream.Length)
                {
                    return(false);
                }

                if (strict)
                {
                    if (pfd.Type == 0x00000000)
                    {
                        return(false);
                    }
                    if (pfd.Type == 0xffffffff)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }