From: Christian Heller Date: Sun, 8 Jun 2025 14:20:00 +0000 (+0200) Subject: Filter pasted strings before entering them into prompt. X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/static/%7B%7Btodo.comment%7D%7D?a=commitdiff_plain;ds=sidebyside;p=ircplom Filter pasted strings before entering them into prompt. --- diff --git a/ircplom.py b/ircplom.py index 3c23a55..5a85656 100755 --- a/ircplom.py +++ b/ircplom.py @@ -148,8 +148,7 @@ class Terminal: if unhandleds: fused = ''.join([chr(n) for n in unhandleds]) if fused.startswith(OSC_52_PREFIX): - encoded = fused[len(OSC_52_PREFIX):] - if not encoded: + if not (encoded := fused[len(OSC_52_PREFIX):]): while True: gotch = self._blessed.getch() if ord(gotch) == 7: @@ -836,7 +835,17 @@ class KeyboardLoop(Loop): def process_bonus(self, yielded: str) -> None: if yielded.startswith(PREFIX_B64): encoded = yielded[len(PREFIX_B64):] - self.broadcast('PROMPT_ADD', b64decode(encoded).decode('utf-8')) + to_paste = '' + for i, c in enumerate(b64decode(encoded).decode('utf-8')): + if i > 512: + break + if c.isprintable(): + to_paste += c + elif c.isspace(): + to_paste += ' ' + else: + to_paste += '#' + self.broadcast('PROMPT_ADD', to_paste) elif yielded in KEYBINDINGS: self.broadcast('KEYBINDING', KEYBINDINGS[yielded]) elif len(yielded) == 1: