/// <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"); } }
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(); } }