• src/conio/cterm.c

    From Deucе@VERT to Git commit to main/sbbs/master on Saturday, January 11, 2025 00:01:13
    https://gitlab.synchro.net/main/sbbs/-/commit/9f6780d23478b6cb933d4949
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Get strncat() and strnlen() out of the hot path...

    Down to 4.7s now... 38× faster.
    Starting to get somewhere useful now.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Saturday, January 11, 2025 00:25:01
    https://gitlab.synchro.net/main/sbbs/-/commit/d308ae450e792921290484a5
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Get strspn() out of the ANSI hot path.

    This was the only standout issue when profiling the ANSI parsing
    code, and is a trivial fix since we're pretty much only checking
    contiguous ranges of characters.

    Unfortunately, I didn't create a test for comparison here.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Saturday, January 18, 2025 15:13:59
    https://gitlab.synchro.net/main/sbbs/-/commit/274d038bd34c8da952533932
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix race condition in starting/stopping playnote thread

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sunday, January 19, 2025 08:44:55
    https://gitlab.synchro.net/main/sbbs/-/commit/51644d7992facd9e90a07b6a
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Indicate not running before posting sem

    Memory is free()ed after sem is posted, so this write goes into
    lalaland.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Monday, January 20, 2025 16:21:27
    https://gitlab.synchro.net/main/sbbs/-/commit/c85d0cc939bffa1b1d30f1a1
    Modified Files:
    src/conio/cterm.c
    Log Message:
    retbuf paranoia

    Reported in unmonitor, which always passes NULL.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, January 22, 2025 10:34:07
    https://gitlab.synchro.net/main/sbbs/-/commit/ac92a69b18331da6083a68e2
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix handling of C1 control characters

    At the same time, fix an old error in prestel_handle_escaped() that
    didn't pass the ctrl to prestel_apply_ctrl_after() properly, and
    always flush the print buffer before calling prestel_handle_escaped()

    We still shouldn't actually get C1 characters on a Prestel connection,
    but if we do, at least we're doing the right thing now.

    As for G1 characters, the default repetoire for these terminals per
    ITU-T REC. T0101 is the mosaic character set with smoothed moasics,
    something there's no evidence of a Prestel terminal ever supporting.
    In order to implement those properly, I would need special handling
    of "separated" in the renderer, and would need to fiddle with the
    font to include the contiguous smoothed mosaics (and exclide the
    separated ones). Since this would end up allowing wildly un-Pretel
    behaviour (ie: mosaics without a mosaic escape) I'm inclined to
    just treat them all as spaces and move on util/unless I do full
    support for all the Videotex standards. Nobody has asked me to
    open this can of worms, so I'm just going to leave it on the shelf.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, January 22, 2025 11:55:15
    https://gitlab.synchro.net/main/sbbs/-/commit/1eb4ec043e73713ba2e9e4b2
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Ignore invalid ESC sequences in Prestel mode

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, January 22, 2025 11:56:38
    https://gitlab.synchro.net/main/sbbs/-/commit/bf58917b5e6a0c11203e127d
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Clear cterm->sequence and cterm->escbuf when ignoring ESC

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, January 22, 2025 12:00:47
    https://gitlab.synchro.net/main/sbbs/-/commit/7982c3cf4ad4cf07ae92d7ce
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Switch back to ignoring unhandled C0 bytes.

    This "feels" more like what the spec means.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, January 22, 2025 12:07:34
    https://gitlab.synchro.net/main/sbbs/-/commit/1817c363cce0eb301f339cf0
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Update comments for closer reading of the spec.

    Section 2.3.1 is the C0 set, which "is not stored or displayed"
    Section 2.3.2 is the C1 set, so interpret "all control characters"
    in this context as meaning "all C1 characters".

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thursday, January 23, 2025 12:26:13
    https://gitlab.synchro.net/main/sbbs/-/commit/4ab569ff44a8501fbfd653f4
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Some todone comments.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, February 05, 2025 16:11:20
    https://gitlab.synchro.net/main/sbbs/-/commit/d6315867039caf232b681831
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Mode 7 terminals (ie: Commstar) do not support cursor control

    Specifically, \x11 is not cursor on, and \x14 is not cursor off.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, February 05, 2025 20:03:09
    https://gitlab.synchro.net/main/sbbs/-/commit/ac68809c9d1f14f12b8fd6e1
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Split Prestel from Beeb emulation parsing, add VDU 7, 23, and 31

    Prestel and Beeb emulations are different enough that using a shared
    switch statement doesn't really make sense.

    This adds Mode 7 support for VDU commands 7 (beep), 23 (cursor only),
    and 31 (move to X/Y, 0-based).

    The rest of the unsupported commands don't seem overly useful in a
    BBS context (disable/enable output) or I don't want to deal with
    documenting and implementing ("Page mode").

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, February 05, 2025 20:09:46
    https://gitlab.synchro.net/main/sbbs/-/commit/8379c1205104a28c7a10cee4
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Character 127 in Beeb mode is destructive backspace.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, February 05, 2025 22:31:53
    https://gitlab.synchro.net/main/sbbs/-/commit/848602f4b2461e547f28bd31
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix handling of translated blast-through mosaics

    Since we're translating in ch[0], don't use buf[j] for mosaic or
    we'll lose the translation we just did.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sunday, February 09, 2025 13:53:41
    https://gitlab.synchro.net/main/sbbs/-/commit/852e6b7af4771259c2cb2904
    Modified Files:
    src/conio/cterm.c
    Log Message:
    A couple more Atari ST VT52 fixes...

    FF and VT both move down one line, scrolling if necessary.

    The rest of the unsupported control characters have no effect
    (ie: work like NUL)

    Delete shows the delta.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, February 12, 2025 18:53:42
    https://gitlab.synchro.net/main/sbbs/-/commit/ca515cf3952ad14839b7d7e8
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix blast-through glyphs for high mosaics.

    The smooth mosaics aren't available with the SAA5050.
    Nothing to see here.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Monday, February 24, 2025 09:52:53
    https://gitlab.synchro.net/main/sbbs/-/commit/cc07b354ec1912896a6bb546
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix defaults for variable length sequences

    Only SGR was impacted, but this explicitly sets the rest of the
    defaults to zero.

    Closes ticket 193.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tuesday, February 25, 2025 07:23:57
    https://gitlab.synchro.net/main/sbbs/-/commit/cbe604acdd0303d821bb8770
    Modified Files:
    src/conio/cterm.c
    Log Message:
    CSI < c only takes one manditory argument with default

    Fixes bug introduced in cc07b354 where the command without any
    parameters would not return anything.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tuesday, February 25, 2025 07:24:36
    https://gitlab.synchro.net/main/sbbs/-/commit/d90f4a4dad3ba0bbdaabb6cf
    Modified Files:
    src/conio/cterm.c
    Log Message:
    SGR has at least one (defaulted) parameter

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Monday, March 03, 2025 16:24:41
    https://gitlab.synchro.net/main/sbbs/-/commit/38bd307bf3e777425f37b1d1
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix Mode7 APS handling

    The code is 0x1C, not 0x1E, and it's row then column.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sunday, March 30, 2025 09:44:05
    https://gitlab.synchro.net/main/sbbs/-/commit/433eed47ed682016a43acef8
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Atari ST doesn't support the VT-52 Ident command

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, April 02, 2025 11:54:01
    https://gitlab.synchro.net/main/sbbs/-/commit/f6fbd8eac28330f9ecae607e
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Only call xptone_complete() if there's foreground notes

    Otherwise there's a race condition that will crash Win32 at least.
    Fixes ticket 199.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Saturday, September 27, 2025 19:26:57
    https://gitlab.synchro.net/main/sbbs/-/commit/16b62ca7bba402b324f07a65
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Bump CTerm revision for a SyncTERM APC for the last time.

    From here on out, SyncTERM-specific updates will not require a
    CTerm bump.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Saturday, March 14, 2026 18:14:10
    https://gitlab.synchro.net/main/sbbs/-/commit/ca8315b574aecac775cdeed7
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix up DECRQCRA a bit

    Better parameter validation, fix calculation in non-pixel mode.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Saturday, March 14, 2026 18:14:10
    https://gitlab.synchro.net/main/sbbs/-/commit/4989d81de144af8c05fd37b8
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Zero padding for DECRQCRA vmem_cell CRC

    There's potentially padding in struct vmem_cell, which means the
    crc may differ even if all the data is the same. Explicitly zero
    the padding before CRC calculation.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Saturday, March 14, 2026 18:14:10
    https://gitlab.synchro.net/main/sbbs/-/commit/bed40ce47064d9c18ba31af8
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Add screenb pixels to crc

    Blink vs. not blink should permute the crc.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Saturday, March 14, 2026 23:32:40
    https://gitlab.synchro.net/main/sbbs/-/commit/d66235fc5c54446e0baa4177
    Modified Files:
    src/conio/cterm.c
    Log Message:
    A couple small fixes...

    DECRQSS 's' had the wrong final byte in DECSLRM
    CTSMRR didn't actually support 4 and 5.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sunday, March 15, 2026 01:06:05
    https://gitlab.synchro.net/main/sbbs/-/commit/d5f6d74b83317aa52edd776d
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix musicbuf overflow and pixel checksum bounds in cterm.c

    musicbuf overflow (line 5930): ANSI music mode (triggered by ESC[|,
    ESC[N, or ESC[M with no params) appends each music character to
    musicbuf[1024] via strcat with no length check. A malicious server
    can send >1023 music characters to overflow the buffer. Add a
    bounds check before the strcat.

    Pixel checksum bounds (lines 3689/3691): The bounds checks for
    param_int[2] and param_int[4] (row parameters) were comparing
    against charwidth*width (the column pixel limit) instead of
    charheight*height (the row pixel limit). This made the check too
    permissive on wide screens and too strict on tall ones.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sunday, March 15, 2026 14:09:13
    https://gitlab.synchro.net/main/sbbs/-/commit/1024d7e8b341382e4879442b
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix ATASCII cursor left/right/backspace assigning to wrong variable

    Cursor left (case 30) and cursor right (case 31) were clamping y
    instead of x when the column went out of bounds, corrupting the
    cursor row position. Backspace (case 126) wrap to previous line
    set y = CURR_MAXY instead of x = CURR_MAXX. Note: backspace wrap
    behavior needs verification against real Atari 8-bit hardware.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sunday, March 15, 2026 16:01:53
    https://gitlab.synchro.net/main/sbbs/-/commit/562ed4bd1dde9067de65da78
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix ATASCII cursor movement wrap behavior and backspace

    Cursor movement (up/down/left/right) wraps to the opposite edge of the
    same row or column, matching real Atari hardware behavior. Backspace
    does not wrap — it sticks at the left margin.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sunday, March 15, 2026 20:35:47
    https://gitlab.synchro.net/main/sbbs/-/commit/d0be28bdfbb1b0c26ce8a723
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Clamp SU/SD scroll count to scroll region height

    CSI Ps S (Scroll Up) and CSI Ps T (Scroll Down) looped param_int[0]
    times calling cterm_scrollup()/scrolldown() individually. With a huge
    parameter (e.g. ESC[65536T), this performed tens of thousands of
    movetext + clear operations, hanging the terminal for seconds — a low-bandwidth DoS from a 9-byte sequence.

    Clamp the count to TERM_MAXY (the scroll region height). Scrolling
    more lines than the region contains is equivalent to clearing it.
    This matches how IL, DL, ICH, and DCH all clamp their counts already.

    Found by ANSI fuzz testing (termtest.js).

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sunday, March 15, 2026 20:35:47
    https://gitlab.synchro.net/main/sbbs/-/commit/1105669b6db24c1bc1f73351
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix integer overflow in dellines() clamp check

    The check (sy + lines - 1) > maxy overflows when lines is near
    INT_MAX (e.g. ESC[2147483647M), wrapping to negative and bypassing
    the clamp. The unclamped value then causes the clear loop at line 1075
    to iterate ~2 billion times (TERM_MAXY - lines + 1 goes hugely
    negative, looping up to TERM_MAXY).

    Rearrange to lines > maxy - sy + 1, which cannot overflow since
    maxy >= sy is guaranteed by the prior bounds check.

    Found by ANSI fuzz testing (termtest.js).

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sunday, March 15, 2026 20:35:47
    https://gitlab.synchro.net/main/sbbs/-/commit/5f54bde4ef38428075e84e60
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Clamp CHT/CVT/CBT tab count to width * height

    CSI Ps I (Cursor Forward Tabulation), CSI Ps Y (Cursor Line
    Tabulation), and CSI Ps Z (Cursor Backward Tabulation) looped
    param_int[0] times calling do_tab()/do_backtab(). With a huge
    parameter, CHT/CVT would perform billions of tab-then-scroll-up
    cycles (do_tab wraps and scrolls at the bottom margin), while CBT
    would perform billions of gotoxy() calls.

    Clamp the count to width * height. This preserves the legitimate
    behavior of tabbing across line boundaries with scrolling, while
    preventing a DoS from huge parameters. Any count beyond width * height
    just scrolls blank lines off the top repeatedly.

    Found by ANSI fuzz testing (termtest.js).

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Sunday, March 15, 2026 22:51:38
    https://gitlab.synchro.net/main/sbbs/-/commit/1ca9c740a257a2eb93f86bf9
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Fix uint64-to-int truncation and wrong variable in CSI parameter clamps

    Six fixes for CSI sequence handlers where seq->param_int[] (uint64_t)
    values could bypass bounds clamps:

    ICH '@' (Insert Character): The clamp compared against cterm->width - j
    where j is the Y/row coordinate — should be the X/column coordinate.
    Replaced with TERM_MAXX - i + 1 (where i is the column), matching the
    pattern DCH already uses. Without this fix, in tall narrow terminals
    where row > width, the subtraction underflows to a huge uint64_t,
    bypassing the clamp entirely and passing garbage to movetext().

    IL 'L' (Insert Line): Added if(i < 1) break after i = seq->param_int[0].
    The uint64-to-int assignment can produce negative values (e.g. param
    0x80000000 becomes INT_MIN) that pass the i > TERM_MAXY - row check,
    then cause integer overflow in movetext(... max_row - i ...).

    DCH 'P' (Delete Character): Same truncation issue. Negative i bypasses
    i > TERM_MAXX - col + 1, then overflows movetext(col2 + i, ...) and cterm_gotoxy(TERM_MAXX - i, ...).

    ECH 'X' (Erase Character): Negative i bypasses i > CURR_MAXX - col,
    then malloc(negative * sizeof) promotes to a huge size_t allocation
    that returns NULL, leading to a NULL dereference in vmem_puttext().

    Shift Left ' @' and Shift Right ' A': Same truncation pattern. Negative
    i bypasses the i > TERM_MAXX / i > cterm->width clamps, producing bad movetext() coordinates.

    All found via ANSI fuzz testing.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tuesday, March 17, 2026 22:53:09
    https://gitlab.synchro.net/main/sbbs/-/commit/730a519045111adc5b4db23f
    Modified Files:
    src/conio/cterm.c
    Log Message:
    Add missing #include <stdarg.h> in cterm.c

    cterm_respond_printf() uses va_list/va_start/va_end which require
    stdarg.h. Builds on FreeBSD pulled it in transitively but OpenBSD
    CI caught the missing include.

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

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wednesday, March 18, 2026 21:52:28
    https://gitlab.synchro.net/main/sbbs/-/commit/13db692a7140a52beaae7244
    Modified Files:
    src/conio/cterm.c
    Log Message:
    New commands, new CVS revision.

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