• src/sbbs3/xtrn.cpp

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Friday, November 10, 2023 21:03:12
    https://gitlab.synchro.net/main/sbbs/-/commit/47773812d5d779c3a2d5466a
    Modified Files:
    src/sbbs3/xtrn.cpp
    Log Message:
    Eliminate unsafe sprintf calls (replaced with snprintf) in *nix build
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Friday, December 08, 2023 23:03:47
    https://gitlab.synchro.net/main/sbbs/-/commit/90de66ac9910333dfdf76d98
    Modified Files:
    src/sbbs3/xtrn.cpp
    Log Message:
    Move the startup directory checking to the "native" block of *nix build

    of sbbs_t::external()

    The startup directory for DOS doors might not be a valid Unix (case-sensitive) path, so let's just do that check in the native block here.

    Also, removed a bunch of redundant startup_dir ==/!= NULL checks. It can't be NULL here.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Monday, February 12, 2024 14:07:17
    https://gitlab.synchro.net/main/sbbs/-/commit/241475effe9d6c09d677b323
    Modified Files:
    src/sbbs3/xtrn.cpp
    Log Message:
    Since on at least Debian 12.4, the ttydefaults array is completely
    wrong, do c_cc the stupid (but POSIXly correct) way with a billion
    supporting.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Monday, February 12, 2024 14:26:47
    https://gitlab.synchro.net/main/sbbs/-/commit/d1642fb88cf3d8ac38c6d8e2
    Modified Files:
    src/sbbs3/xtrn.cpp
    Log Message:
    Explicitly initialize c_cc to _POSIX_VDISABLE since we can't know
    that we're setting all the values anymore. :(
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Monday, February 12, 2024 14:54:00
    https://gitlab.synchro.net/main/sbbs/-/commit/9db2d372ed865d17b7fb4ce2
    Modified Files:
    src/sbbs3/xtrn.cpp
    Log Message:
    Don't use i for loop index since it's signed.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Friday, April 26, 2024 17:11:49
    https://gitlab.synchro.net/main/sbbs/-/commit/40280934edd931d5d3516b7e
    Modified Files:
    src/sbbs3/xtrn.cpp
    Log Message:
    Convert CP437 to UTF-8 (when necessary) for *nix stdio doors (e.g. DOSEMU)

    ... as requested by "ben" in #synchronet at irc.synchro.net

    Currently, this assumes all stdio doors aren't "UTF-8 native", which might be an incorrect assumption.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Friday, April 26, 2024 17:25:56
    https://gitlab.synchro.net/main/sbbs/-/commit/5277021c97929fc46c742093
    Modified Files:
    src/sbbs3/xtrn.cpp
    Log Message:
    Fix GCC-aarch64 compile (caught be pipeline)

    error: cannot bind non-const lvalue reference of type `long unsigned int&' to an rvalue of type `long unsigned int'

    Just getting rid of more use of ulong (replaced with size_t).
    ---
    � Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Friday, April 26, 2024 19:16:06
    https://gitlab.synchro.net/main/sbbs/-/commit/da313d28ca8be77e28f96d8e
    Modified Files:
    src/sbbs3/xtrn.cpp
    Log Message:
    Fix MSVC compiler issues introduced in previous commit

    And use DWORD insteaad of 'unsigned long' where specified by Win32 API.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Saturday, March 01, 2025 15:05:35
    https://gitlab.synchro.net/main/sbbs/-/commit/76fa22e427a7b9978084bf94
    Modified Files:
    src/sbbs3/xtrn.cpp
    Log Message:
    Remove lprintf() call from child process of fork() call on *nix

    the info-level debug message "Detaching external process"... as this appears
    to be the cause of background events hanging sometimes, on Linux (at least). ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on ChromeOS)@VERT to Git commit to main/sbbs/master on Sunday, March 23, 2025 18:11:54
    https://gitlab.synchro.net/main/sbbs/-/commit/fd2a8b605803259ceb974d49
    Modified Files:
    src/sbbs3/xtrn.cpp
    Log Message:
    Add node interrupt flag checking to *nix external() execution of stdio progs

    and abort the execution of the program when the node is interrupted. This should allow more cases were the node interrupt flag can be used to gracefully disconnect a user running a DOS or native (stdio) program on *nix.

    We have this functionality already in the Windows version of external()
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Tuesday, July 21, 2026 01:41:46
    https://gitlab.synchro.net/main/sbbs/-/commit/de1662c069cb723cd2acd958
    Modified Files:
    src/sbbs3/xtrn.cpp
    Log Message:
    Log an error when an external program's command line is truncated

    sbbs_t::external() assembles the child's command line into
    fullcmdline[MAX_PATH + 1] -- 260 usable characters -- via SAFEPRINTF / SAFECOPY, both of which truncate SILENTLY. That string IS the child's entire command line, so an over-long one runs the program with its trailing
    arguments missing.

    The failure is very hard to diagnose because the evidence contradicts the symptom: the "Executing external" log line prints the command we MEANT to
    run, while the child received a shortened one. Observed with a SyncRetro
    door whose lobby built a 334-character line -- the ROM path fell off the end and the door reported its content missing while the log showed that
    content's full path, which sent the search in entirely the wrong direction.

    Log the truncation on both branches, with the length it was cut to, the
    length it needed, and the command as actually issued.

    The needed length is MEASURED from the inputs rather than read from snprintf()'s return, which looks backwards and is commented as such at both sites: genwrap.h redirects snprintf() to xpdev's safe_snprintf() unless USE_SNPRINTF is defined, and that wrapper clamps its return to size-1 (31 callers accumulate with `d += snprintf(...)` and would otherwise run past
    the buffer). USE_SNPRINTF is set only for darwin and freebsd, so the return value is the C99 would-be length on those and the truncated length on Linux
    and Windows -- a check written the obvious way would work on a developer's
    Mac and be silently dead in production.

    This only reports; nothing is resized. Note that cmdstr() has its own,
    earlier limit (cmdstr_output[512]) which is likewise silent, so a very long configured command line can already be shortened before external() ever
    sees it.

    Windows branch compiles clean; the *nix branch is UNCOMPILED here (no
    GCC/Clang on this host) and the log message has not yet been observed
    firing.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net