https://gitlab.synchro.net/main/sbbs/-/commit/eed013b251f27881d5907507
Modified Files:
src/doors/clans-src/src/clanslib.vcxproj langcomp.vcxproj platform.h qtest.vcxproj scripteng.c unix_wrappers.c win_wrappers.c win_wrappers.h
Log Message:
clans: fix the Win32 MSVC build
src/clans.sln compiled nothing on MSVC, and past that failure linked eight
of its sixteen binaries short. Four independent things had drifted apart
from the sources they build.
win_wrappers both declared and defined its own strdup, a body that only
called _strdup. The UCRT already declares strdup, so the redeclaration
drew C4273 (inconsistent dll linkage) and every call site drew C4996 for
the deprecated POSIX name -- which /sdl, on in these projects, makes an
error, so clanslib never reached the linker. Map the POSIX spelling onto
the underscored one instead; <string.h> is included first, so that
rewrites our calls and not the CRT's own declaration.
u8cp437.c was in no project at all, leaving u8_fopen/u8_fgets unresolved
in the eight tools that read the UTF-8 data files. It belongs in clanslib, which every one of them already links.
langcomp's post-build step still named ../data/strings.txt, which the CP437-to-UTF-8 conversion replaced with strings.u8.txt, so generating mstrings.h failed and took the game binary down with it.
qtest was missing scripteng.c -- QTEST_OBJS in src/GNUmakefile has it --
and scripteng.c in turn called POSIX strncasecmp directly, the one file
that does not go through the plat_* wrappers. Add plat_strnicmp beside plat_stricmp and use it.
All sixteen projects now build Release|x86. Only MSVC was compiled here;
the Unix and mingw builds are untested, though what they see of this is a declaration, one new wrapper function, and two call sites.
Co-Authored-By: Claude Opus 4.8 (1M context) <
noreply@anthropic.com>
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)