https://gitlab.synchro.net/main/sbbs/-/commit/42b968575b3f556a9306fb5a
Modified Files:
src/doors/syncdoom/README.md i_system.c syncdoom.c xtrn/syncdoom/syncdoom.example.ini
Log Message:
syncdoom: log fatal errors to a file instead of a modal dialog
A fatal engine error (I_Error -- e.g. a bad WAD) popped a modal GUI dialog (MessageBoxW on Win32, zenity on *nix). In a door that is actively harmful:
the box BLOCKS the door process, and under a Windows service it lands on a non-interactive window station nobody can dismiss, so the node hangs until the session times out while the remote user sees a frozen screen -- and the sysop usually never sees the box at all.
Record the error durably and non-interactively instead:
- I_Error routes the message through dlog() -- stderr (captured into the BBS
log on *nix) plus, on Win32, OutputDebugString (DebugView) -- then exits.
- Add a durable file log, off by default: -log <path>, syncdoom.ini
[debug] log, or $SYNCDOOM_LOG. dlog() now writes every diagnostic line and
the fatal error to it. A bare filename lands in <SBBSDATA>/syncdoom/ (the
door's data dir), a path with a separator is used verbatim; the filename is
node-tagged as syncdoom_n<node>.log so concurrent sessions don't collide.
This matters most on Windows, where a native socket door's stderr is NOT
captured by the BBS (no EX_STDOUT pipe), so the file is the only durable sink.
- Remove the now-dead popup code (MessageBoxW / CFUserNotification / zenity
helpers) and the -nogui parm that only suppressed it.
Also drop the -l<rows> fallback option: the door always live-probes the terminal size (then terminal.ini, else a 25-row default), so a manual row count is never needed. This also fixes a latent bug -- the -l prefix match silently swallowed -log -- and a legacy -l%R from an existing install command line is still harmlessly stripped before the engine sees it.
Verified under MSVC: a forced I_Error (bogus IWAD) exits promptly with no dialog and writes the banner + "FATAL: ..." to <data>/syncdoom/syncdoom_n<N>.log
via both the -log arg and the env var.
Co-Authored-By: Claude Fable 5 <
noreply@anthropic.com>
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net