https://gitlab.synchro.net/main/sbbs/-/commit/1635fb18e653ea4338efa893
Modified Files:
src/sbbs3/ansi_terminal.cpp ansi_terminal.h con_out.cpp terminal.h
Log Message:
Send the ANSI music terminator raw on UTF-8 connections
ANSI music is CSI M, N or | followed by note characters and ended by SO
(0x0E). On a UTF-8 terminal, cp437_out() translated every byte through cp437_unicode_tbl[], which maps 0x0E to U+266B (beamed eighth notes), so
the terminal never saw the terminator and silently discarded the tune.
ANSI_Terminal now tracks when output is inside a music string: it starts
on CSI N, CSI |, or CSI M without parameters (with parameters, CSI M is
Delete Line), continues through the music alphabet, and ends on SO or on
any other byte. While a string is open, SO is sent untranslated; outside
one, 0x0E still renders as the CP437 glyph. The note characters no longer advance the tracked column, and a completed music string is removed from
the saved line so restoreline() doesn't replay the tune.
Fixes #1344
Co-Authored-By: Claude Opus 5.5 <
noreply@anthropic.com>
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net