public bool AddString(string se, string rep) { this.state.Clear(); Patcher.Pattern pattern = new Patcher.Pattern(); bool result; if (!pattern.AddString(se, rep)) { this.state.AddMessage(pattern.CurState, 16); result = false; } else { this.patterns.Add(pattern); result = true; } return(result); }
public bool Patch() { this.state.Clear(); bool result; if (this.patterns.Count == 0) { this.state.AddMessage("You did not specify the patterns! (patterns.Count = 0)", 16); result = false; } else if (!this.fileW.Load(this.fullPathToFile, this.bufferSize)) { this.state.AddMessage(this.fileW.CurState); result = false; } else { try { List <Patcher.Pattern> .Enumerator enumerator = this.patterns.GetEnumerator(); while (enumerator.MoveNext()) { Patcher.Pattern current = enumerator.Current; this.fileW.SetPosition(-1L); if (this.FindAllPatterns(current) && current.ReplaceImmediately) { this.ReplaceAllPatterns(current); } } ((IDisposable)enumerator).Dispose(); } finally { //List<Patcher.Pattern>.Enumerator enumerator; } this.fileW.Close(); result = (this.state.MessageCount <= 0 && this.ResultInMessage()); } return(result); }
private bool ResultInMessage() { int num = 0; int num2 = 0; bool flag = false; checked { try { List <Patcher.Pattern> .Enumerator enumerator = this.patterns.GetEnumerator(); while (enumerator.MoveNext()) { Patcher.Pattern current = enumerator.Current; if (current.SuccesFind) { num2++; } else if (current.FindCount > 0) { num2++; num++; } else { num++; } if (current.ReplaceImmediately) { flag = true; } } ((IDisposable)enumerator).Dispose(); } finally { //List<Patcher.Pattern>.Enumerator enumerator; } bool result; if (this.msg) { if (flag) { if (num > 0 && num2 > 0) { this.state.AddMessage(this.succesMessages[2], 0); result = true; return(result); } if (num == 0 && num2 > 0) { this.state.AddMessage(this.succesMessages[1], 0); result = true; return(result); } this.state.AddMessage(this.succesMessages[0], 0); } else { if (num > 0 && num2 > 0) { this.state.AddMessage(this.succesMessages[4], 0); result = true; return(result); } if (num == 0 && num2 > 0) { this.state.AddMessage(this.succesMessages[3], 0); result = true; return(result); } this.state.AddMessage(this.succesMessages[0], 0); } } else if (flag) { if (num > 0 && num2 > 0) { result = true; return(result); } if (num == 0 && num2 > 0) { result = true; return(result); } } else { if (num > 0 && num2 > 0) { result = true; return(result); } if (num == 0 && num2 > 0) { result = true; return(result); } } result = false; return(result); } }
private bool ReplaceAllPatterns(Patcher.Pattern pt) { checked { bool result; if (!pt.ValidPattern) { this.state.AddMessage(pt.CurState, 0); result = false; } else { int num = 0; List <Patcher.Pattern.Place> allPlaces = pt.AllPlaces; try { List <Patcher.Pattern.Place> .Enumerator enumerator = allPlaces.GetEnumerator(); while (enumerator.MoveNext()) { Patcher.Pattern.Place current = enumerator.Current; int num2 = 0; bool flag = false; bool flag2 = false; if (!this.fileW.SetPosition(current.bufferPos - 1L)) { this.state.AddMessage(this.fileW.CurState); result = false; return(result); } while (this.fileW.ReadNext(true)) { int arg_91_0 = 0; int bufferLength = this.fileW.BufferLength; for (int i = arg_91_0; i <= bufferLength; i++) { if (num2 == 0) { i = current.position; } if (pt.replace[num2].Length == 1) { this.fileW.buffer[i] = pt.replace[num2][0]; flag = true; } num2++; if (flag && (pt.replace.Count == num2 || i == this.fileW.BufferLength)) { this.fileW.FlushBuffer(); flag2 = true; flag = false; } if (pt.replace.Count == num2) { if (flag2) { num++; } this.fileW.RunAway(); break; } } Application.DoEvents(); } if (this.fileW.CurState != null) { this.state.AddMessage(this.fileW.CurState); result = false; return(result); } } ((IDisposable)enumerator).Dispose(); } finally { //List<Patcher.Pattern.Place>.Enumerator enumerator; } result = true; } return(result); } }
private bool FindAllPatterns(Patcher.Pattern pt) { checked { bool result; if (!pt.ValidPattern && !pt.Validate()) { this.state.AddMessage(pt.CurState, 0); result = false; } else { long num = 0L; int num2 = 0; int num3 = 0; int num4 = 0; int num5 = 0; while (this.fileW.ReadNext(true)) { int arg_4A_0 = 0; int bufferLength = this.fileW.BufferLength; for (int i = arg_4A_0; i <= bufferLength; i++) { if (pt.search[num3].Length == 2 || this.fileW.buffer[i] == pt.search[num3][0]) { if (num3 == 0) { num2 = i; num = this.fileW.CurrentBufferOffset; } if (pt.search.Count - 1 == num3) { num3 = 0; if (num4 == pt.replaceAfter) { num5++; pt.AddPlace(num, num2); if (pt.brakAfter != -1 && num5 == pt.brakAfter) { result = true; return(result); } } else { num4++; } } else { num3++; } } else if (num3 > 0) { if (!this.fileW.EndOfFile || pt.search.Count - num3 <= this.fileW.BufferLength) { num3 = 0; if (this.fileW.CurrentBufferOffset != num && !this.fileW.ReadWhere(num)) { if (this.fileW.CurState != null) { this.state.AddMessage(this.fileW.CurState); } result = false; return(result); } i = num2; } } } Application.DoEvents(); } if (this.fileW.CurState != null) { this.state.AddMessage(this.fileW.CurState); result = false; } else { if (pt.brakAfter == -1) { if (num5 > 0) { result = true; return(result); } } else if (num5 > 0) { result = true; return(result); } result = false; } } return(result); } }