예제 #1
0
        /// <summary>
        /// Things changed in 3.2.0
        /// </summary>
        private void FindVersionInfo2()
        {
            long startOffset = FileString.IndexOf("RELEASE_BUILD");

            if (startOffset > 0)
            {
                BaseStream.Position = startOffset;

                do
                {
                    BaseStream.Position--;
                } while (PeekChar() == 0);

                while (PeekChar() != 0)
                {
                    BaseStream.Position--;
                }

                BaseStream.Position++;
                var version = this.ReadCString();
                BaseStream.Position -= 2;

                while (PeekChar() != 0)
                {
                    BaseStream.Position--;
                }

                do
                {
                    BaseStream.Position--;
                } while (PeekChar() == 0);

                while (PeekChar() != 0)
                {
                    BaseStream.Position--;
                }

                BaseStream.Position++;
                var build = this.ReadCString();

                m_version = new ClientVersion(version + "." + build);

                /*
                 * Aug 17 2009.10314....3.2.0..RELEASE_BUILD
                 * */
                //BaseStream.Position = startOffset - 16;

                //var build = this.ReadCString();
                //BaseStream.Position += 3;
                //m_version = new ClientVersion(this.ReadCString() + "." + build);
            }
            else
            {
                throw new InvalidDataException("Could not locate version information");
            }
        }
예제 #2
0
        private void FindVersionInfo()
        {
            long startOffset = FileString.IndexOf("=> Version %s (%s) %s");

            if (startOffset > 0)
            {
                BaseStream.Position = startOffset;
                this.ReadCString();

                while (PeekChar() == 0)
                {
                    BaseStream.Position++;
                }
                var version = this.ReadCString();

                while (PeekChar() == 0)
                {
                    BaseStream.Position++;
                }
                var build = this.ReadCString();

                try
                {
                    m_version = new ClientVersion(version + "." + build);
                }
                catch
                {
                    // something went wrong:
                    FindVersionInfo2();
                }

                /*
                 * 6898....2.1.3...RELEASE_BUILD
                 * */
                //BaseStream.Position = startOffset - 16;

                //var build = this.ReadCString();
                //BaseStream.Position += 3;
                //m_version = new ClientVersion(this.ReadCString() + "." + build);
            }
            else
            {
                //throw new InvalidDataException("Could not locate version information");
                FindVersionInfo2();
            }
        }