diff --git a/sip/torture.py b/sip/torture.py new file mode 100644 index 0000000..6ba16ee --- /dev/null +++ b/sip/torture.py @@ -0,0 +1,19 @@ +# RFC4475 Torture Message String Literal Encoder + +import re +import sys +import textwrap + +hexsub = lambda m: re.sub(r'(..)', r'\x\1', m.group(1)) +repeatsub = lambda m: m.group(2) * int(m.group(1)) +allonelinesub = lambda m: m.group(1).replace('\n', '') + +message = sys.stdin.read() +message = textwrap.dedent(message) +message = re.sub(r'(.+?)', allonelinesub, message, 0, re.S) +message = re.sub(r'(.*?)', repeatsub, message, 0, re.S) +message = message.replace('\\', '\\\\') +message = re.sub(r'(.*?)', hexsub, message, 0, re.S) +message = message.replace('"', '\\"') +message = '"' + message.replace('\n', '\\r\\n" +\n"') + '"' +print message