https://gitlab.synchro.net/main/sbbs/-/commit/370c9c2390b78eb55b5cb5f5
Modified Files:
.gitignore docs/v322_new.md src/sbbs3/js_global.cpp src/xpdev/ini_file.c ini_file.h xtrn/syncarcade/.gitignore
Log Message:
xpdev: file_cfgname() prefers a sysop's <name>.local.<ext>
iniFileName() already picks the most specific configuration file that exists, preferring a per-host or per-platform variation over the plain name. All of those variations are untracked, so a sysop using one is already safe from an upgrade overwriting their edits -- but naming a machine is the wrong shape for "this is my copy of a file Synchronet ships", which is what a sysop editing a bundled door's config actually wants, and which has to keep working when the hostname changes or the install is shared.
So a `.local` variation is searched between the platform variation and the plain name: below the host and platform ones, which are more specific and should still win where they exist, and above the file we ship. When none of
the variations exist the plain name is still what comes back, so a caller
that creates the file writes ours, not a .local.
The tree-wide gitignore rule is what makes the convention true in practice: a .local file is never tracked, wherever in the tree it sits.
Nothing changes for an existing install -- the new step can only fire when a .local file exists, and none did before this.
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)