• src/doors/syncduke/Game/src/game.c src/doors/syncduke/syncduke_config.

    From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Fri Jun 26 22:40:09 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/705a840fe95017643a65bdfc
    Modified Files:
    src/doors/syncduke/Game/src/game.c src/doors/syncduke/syncduke_config.c Log Message:
    syncduke: fix two Windows door startup failures (setvbuf, GRP dir)

    Both killed the Win32 door at launch -- it died straight back to the BBS
    after the "Loading..." splash; found while bringing up the MSVC build.

    1. syncduke_config.c: setvbuf(stdout, NULL, _IOLBF, 0) (used to route the
    engine's diagnostics to the BBS log) is fine on glibc, but MSVC's CRT
    rejects _IOLBF with size 0 (it requires size >= 2) -> invalid-parameter
    fast-fail (c0000409), confirmed from the WER minidump. Use _IONBF on
    Windows (unbuffered, valid with size 0, flushes immediately); *nix keeps
    _IOLBF.

    2. Game/src/game.c: the Windows findGRPToUse() never consulted
    syncduke_grpdir (only the *nix branch did), so with -home (CWD = the
    per-user dir) it scanned the wrong directory and exited with
    "Can't find 'duke3d*.grp'". Honor syncduke_grpdir first, mirroring the
    *nix branch, so the GRP opens by absolute path regardless of CWD.

    Verified on Windows via an inherited-socket harness matching the live launch (-s<socket> -home <userdir>): loads DUKE3D.GRP by absolute path and renders (sixel and JXL tiers).

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

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