• src/sbbs3/exec.cpp

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sun Dec 28 20:46:08 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/e61b31a5acca617fb4051730
    Modified Files:
    src/sbbs3/exec.cpp
    Log Message:
    select_shell() won't try to write to user base when useron.number == 0

    The same trick used in select_editor()

    ---
    þ 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 Sat Jan 3 23:32:29 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/bb8f4440c41d0c3a32fb9d3d
    Modified Files:
    src/sbbs3/exec.cpp
    Log Message:
    sbbs_t::select_editor() now returns true when quit/aborted by user

    and only returns false if there were no external editors available to the
    user.

    Desired behavior by newuser_info.js so we don't print the message "Sorry, no external editors are available to you" just because the user aborted.

    ---
    þ 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 Sat Jan 10 03:59:18 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/3edd0f9a329829aabcb97d6c
    Modified Files:
    src/sbbs3/exec.cpp
    Log Message:
    Log (w/debug level msg) non-zero return values from loadable modules

    ---
    þ 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 Wed Feb 11 16:23:06 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/6496ebbd8fb69639493f1694
    Modified Files:
    src/sbbs3/exec.cpp
    Log Message:
    Don' t log "Attempt to recursively execute" error for some modules

    Some loadable modules will fallback to internal functions if the module fails to execute - we track that with the optional 'invoked' parameter. Only log an error when exec_mod() is called recursively for the same module when the invoked parameter is null, otherwise just fail (return -1) silently so that the calling function can revert to built-in functions. It should be obvious that's what is happening since the built-in functionality would execute and no
    (e.g. debug-level) log message should be needed.

    ---
    þ 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 Tue Feb 17 23:05:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/5afc12e5b736a89fde1dfff4
    Modified Files:
    src/sbbs3/exec.cpp
    Log Message:
    Fix the bbs.select_shell() and select_editor() ARS checking/application

    Commit 9d7ada16df7e9f didn't really work because the user pointer we get
    from the User private data doesn't necessarily match the sbbs_t::useron, though it is the same user (the way user_settings.js works today).

    So users were seeing *all* editors and command shells when selecting from user_settings.js, even those they weren't supposed to have access to per ARS.

    ---
    þ 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 Tue Mar 3 22:56:22 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/284b5098d617661517a58d8c
    Modified Files:
    src/sbbs3/exec.cpp
    Log Message:
    Enable globally-supported (SCFG->System->Advanced) extra attr codes in PRINT

    Fix issue #1091

    ---
    þ 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 Sat Aug 1 19:44:16 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/62012e3c4ca4d5e7724e530e
    Modified Files:
    src/sbbs3/exec.cpp
    Log Message:
    Always append .js to an extensionless module name

    js_execfile() resolved a command containing a path separator by trying the
    name as given first and appending .js only when that failed, so the two branches of one function disagreed about what an extensionless name means. Everywhere else it means "<name>.js" unconditionally: exec_bin() appends
    .js (and then .bin) without ever trying the bare name, the no-separator
    branch here appends it to each directory it searches, and jsexec appends it
    to every candidate path. Do the same here.

    A module file carrying no extension can no longer be run by path. Nothing
    else could run one either - not by bare name, not through exec_bin(), and
    not through jsexec since 8f8a8f9249 (defeat-12-living, 2026-08-01).

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

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