• src/conio/cterm.c cterm.h cterm_test.c

    From Deucе@VERT to Git commit to main/sbbs/master on Thu Mar 19 10:20:49 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/6160b43cb83228a4ef3d6d2a
    Modified Files:
    src/conio/cterm.c cterm.h cterm_test.c
    Log Message:
    Fix REP (CSI b) across packet boundaries, add 55 ANSI unit tests

    Move lastch from cterm_write local variable to cterm->lastch in the
    cterminal struct so REP works when the character and the CSI b sequence
    arrive in separate cterm_write calls (e.g., split across TCP packets). Previously REP would silently do nothing if the data was split.

    Add 55 ANSI-BBS tests to cterm_test (177 total): C0 controls (NUL, BS,
    HT, LF, CR, NEL, HTS, RI, RIS), cursor movement (CUU/CUD/CUF/CUB/ CNL/CPL/CUP/HVP/CHA/VPA/HPA/HPR/VPR/HPB/VPB + clamping), erase ops (ED/EL/ICH/DCH/IL/DL/ECH), SGR (reset/bold/blink/negative/fg/bg),
    margins (DECSTBM/DECSLRM), scrolling (SU/SD), modes (autowrap/nowrap/
    origin), DEC rectangular ops (DECERA/DECFRA/DECCRA), REP with split
    regression test, and save/restore cursor (SCOSC/SCORC/DECSC/DECRC).

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net