public Delimiters(DelimiterOptions DelimiterOption) { switch (DelimiterOption) { case DelimiterOptions.Parentheses: StartDelimiter = '('; EndDelimiter = ')'; break; case DelimiterOptions.Brackets: StartDelimiter = '['; EndDelimiter = ']'; break; case DelimiterOptions.Braces: StartDelimiter = '{'; EndDelimiter = '}'; break; case DelimiterOptions.SingleQuotes: StartDelimiter = '\''; EndDelimiter = '\''; break; case DelimiterOptions.DoubleQuotes: StartDelimiter = '"'; EndDelimiter = '"'; break; case DelimiterOptions.None: StartDelimiter = ' '; EndDelimiter = ';'; break; default: throw new Exception("Invalid Delimiter Option"); } }
public Hook(string FunctionName, int Parameters, DelimiterOptions DelimiterOption) { this.FunctionName = FunctionName; ReplacementName = "Hook_" + _md5.ComputeHash(FunctionName) + Parameters; var d = new Delimiters(DelimiterOption); this.StartDelimiter = d.StartDelimiter; this.EndDelimiter = d.EndDelimiter; StringBuilder funcParams = new StringBuilder(); StringBuilder echoes = new StringBuilder(); string fileOpen = "$f = fopen($_SERVER['DOCUMENT_ROOT'] . '/" + TraceFile + "', 'a') or die('error opening trace file');\r\n", fileClose = "fclose($f);\r\n"; string callInfoStart = new string('-', 32) + "Start\\n", callInfoEnd = new string('-', 32) + "End\\n"; string startEcho = "fwrite($f, \"" + callInfoStart + "\");\r\n", endEcho = "fwrite($f, \"" + callInfoEnd + "\");\r\n"; for (int i = 0; i < Parameters; i++) { string paramName = "$Param" + i.ToString(); echoes.AppendLine("fwrite($f, '" + paramName + ": '." + paramName + ".\"\\n\");"); funcParams.Append((funcParams.Length != 0 ? "," : "") + paramName); } ReplacementFunction = DelimiterOption == DelimiterOptions.Parentheses ? "function " + ReplacementName + "(" + funcParams + ")\r\n{\r\n" + fileOpen + startEcho + "fwrite($f, \"Function Called: " + FunctionName + "\\n\");\r\n" + echoes.ToString() + endEcho + fileClose + "return " + FunctionName + StartDelimiter + funcParams + EndDelimiter + ";\r\n}\r\n" : "function " + ReplacementName + "(" + funcParams + ")\r\n{\r\n" + fileOpen + startEcho + "fwrite($f, \"Function Called: \\" + FunctionName + "\\n\");\r\n" + echoes.ToString() + "fwrite($f, \"Value: \");\r\n" + //"$e=var_export(" + FunctionName + "[$Param0]);fwrite($f, $e);\r\n" + "if (isset(" + FunctionName + "[$Param0])) { fwrite($f, is_array(" + FunctionName + "[$Param0]) ? " + "implode(',', " + FunctionName + "[$Param0]) : " + FunctionName + "[$Param0]); }\r\n" + "fwrite($f, \"\\n\");\r\n" + endEcho + fileClose + "return $Param0;\r\n}\r\n"; if (DelimiterOption == DelimiterOptions.None) ReplacementFunction = ""; }
public Hook(string FunctionName, int Parameters, DelimiterOptions DelimiterOption) { this.FunctionName = FunctionName; ReplacementName = "Hook_" + _md5.ComputeHash(FunctionName) + Parameters; var d = new Delimiters(DelimiterOption); this.StartDelimiter = d.StartDelimiter; this.EndDelimiter = d.EndDelimiter; StringBuilder funcParams = new StringBuilder(); StringBuilder echoes = new StringBuilder(); string fileOpen = "$f = fopen($_SERVER['DOCUMENT_ROOT'] . '/" + TraceFile + "', 'a') or die('error opening trace file');\r\n", fileClose = "fclose($f);\r\n"; string callInfoStart = new string('-', 32) + "Start\\n", callInfoEnd = new string('-', 32) + "End\\n"; string startEcho = "fwrite($f, \"" + callInfoStart + "\");\r\n", endEcho = "fwrite($f, \"" + callInfoEnd + "\");\r\n"; for (int i = 0; i < Parameters; i++) { string paramName = "$Param" + i.ToString(); echoes.AppendLine("fwrite($f, '" + paramName + ": '." + paramName + ".\"\\n\");"); funcParams.Append((funcParams.Length != 0 ? "," : "") + paramName); } ReplacementFunction = DelimiterOption == DelimiterOptions.Parentheses ? "function " + ReplacementName + "(" + funcParams + ")\r\n{\r\n" + fileOpen + startEcho + "fwrite($f, \"Function Called: " + FunctionName + "\\n\");\r\n" + echoes.ToString() + endEcho + fileClose + "return " + FunctionName + StartDelimiter + funcParams + EndDelimiter + ";\r\n}\r\n" : "function " + ReplacementName + "(" + funcParams + ")\r\n{\r\n" + fileOpen + startEcho + "fwrite($f, \"Function Called: \\" + FunctionName + "\\n\");\r\n" + echoes.ToString() + "fwrite($f, \"Value: \");\r\n" + //"$e=var_export(" + FunctionName + "[$Param0]);fwrite($f, $e);\r\n" + "if (isset(" + FunctionName + "[$Param0])) { fwrite($f, is_array(" + FunctionName + "[$Param0]) ? " + "implode(',', " + FunctionName + "[$Param0]) : " + FunctionName + "[$Param0]); }\r\n" + "fwrite($f, \"\\n\");\r\n" + endEcho + fileClose + "return $Param0;\r\n}\r\n"; if (DelimiterOption == DelimiterOptions.None) { ReplacementFunction = ""; } }
public static IEnumerable <Memory <T> > Split <T>(this Memory <T> memory, T delimiter, DelimiterOptions option = DelimiterOptions.Exclude) where T : IEquatable <T> { switch (option) { default: case DelimiterOptions.Exclude: return(SplitWithExclude <T>(memory, delimiter)); case DelimiterOptions.Return: return(SplitWithReturn <T>(memory, delimiter)); case DelimiterOptions.Carry: return(SplitWithCarry <T>(memory, delimiter)); } throw new NotSupportedException(); }
public static IEnumerable <Memory <char> > Split(this Memory <char> memory, char delimiter, DelimiterOptions option = DelimiterOptions.Exclude) { return(memory.Split <char>(delimiter, option)); }
public static IEnumerable <Memory <byte> > Split(this Memory <byte> memory, byte delimiter, DelimiterOptions option = DelimiterOptions.Exclude) { return(memory.Split <byte>(delimiter, option)); }