https://gitlab.synchro.net/main/sbbs/-/commit/c489466523386d8df663485e
Added Files:
src/doors/syncdrive/build.bat
Modified Files:
docs/v322_new.md src/doors/build.bat src/doors/syncdrive/.gitignore CLAUDE.md CMakeLists.txt DESIGN.md README.md src/doors/syncdrive/door/host_term.c scores_lock.c src/doors/syncdrive/tests/CMakeLists.txt
Log Message:
syncdrive: the Win32 / MSVC build
build.bat configures CMake for Visual Studio 2022, builds Win32 Release,
runs the unit tests and leaves the binary in build-msvc\Release; src/doors/build.bat gains syncdrive as a target. Win32 (x86) only, for the reason the sibling doors are: one Win32 binary serves a Win32 and a Win64 Synchronet host alike.
Two spots in our own code stood between the door and MSVC: host_term.c
reached strcasecmp through <strings.h>, and scores_lock.c opened the lock
file through <fcntl.h>/<unistd.h>. Both now go through the xpdev wrappers
-- stricmp() from genwrap.h, filewrap.h with O_BINARY and DEFFILEMODE,
which is 0666 on *nix as the literal 0666 was. The vendored tdport/ engine needed nothing.
libsndfile is a prerequisite for sound here rather than an optional tier:
the PC-speaker PCM is generated in-process, but termgfx streams it to
SyncTERM as Ogg/Opus, and without libsndfile that encoder is a stub and termgfx_stream_chunk_closed() drops every chunk -- a door that runs silent
with no other symptom. build.bat points CMAKE_PREFIX_PATH at the classic
vcpkg prefix and warns when it is absent; the configure warns too. No
libjxl: this door serves the sixel tier only.
The high-score lock test needs a second process contending for the lock
and uses fork(), so it stays *nix only, and the Windows build does not
cover scores_lock.c; the five pure tests run on both platforms.
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net