BBS: TELESC.NET.BR Assunto: src/syncterm/ansi_filter.c ansi_filter.hsrc/syncterm/CMakeLists.txt Sy De: Deuc¨ Data: Thu, 30 Apr 2026 10:38:25 -0700 ----------------------------------------------------------- https://gitlab.synchro.net/main/sbbs/-/commit/c8cf082f019a2f70da40b86b Added Files: src/syncterm/ansi_filter.c ansi_filter.h Modified Files: src/syncterm/CMakeLists.txt SyncTERM.vcxproj Wren.adoc objects.mk ripper.c src/syncterm/scripts/syncterm.wren src/syncterm/wren_bind.c wren_bind_hook.c wren_bind_hook.h wren_host.c wren_host_internal.h Log Message: SyncTERM: shared ANSI filter; Hook.onMatchClean; drop misleading onMatch consume Lifts ripper.c's `ansi_only` state machine into a reusable pair (`ansi_filter.[ch]`) with two modes KEEP_ESC (ripper's existing behavior, drops plain text) and KEEP_TEXT (drops escape sequences, keeps the text the user actually sees). ripper.c's `ansi_only` is now a 4-line wrapper, behavior unchanged. `Hook.onMatchClean(pattern, fn)` is the escape-aware variant of `onMatch`: inbound bytes are pre-filtered through `ansi_filter` in KEEP_TEXT mode before reaching the regex VM, so a literal pattern matches the visible text even when the BBS interleaves colour codes through it. Per-hook entry tracks its own filter state. Both `onMatch` and `onMatchClean` are now passthrough-only. The historical "Bool true to drop the matched bytes" contract on `onMatch` was misleading `dispatch_match_drain` only dropped the single byte that completed the match (every prior byte already went through cterm), so users never actually got "drop the matched span." Anyone needing wire-level drop should use Hook.onInput, which is byte-granular by design. Wren.adoc, the worked-example, and the hook table all updated. `check_speedwatch` in term.c was assessed for filter reuse but left alone it does sub-byte param validation specific to the speed response (`ESC [ 0|1 ; digits+ * r`) that the general filter doesn't help with; wrapping the filter around it requires a CSI-body buffer plus a post-parser, net code goes up. Co-Authored-By: Claude Opus 4.7 (1M context)n --- mSynchronetn hgVertrauen n hHome of Synchronet n gh[vert/cvs/bbs].synchro.net ----------------------------------------------------------- [Voltar]