https://gitlab.synchro.net/main/sbbs/-/commit/32d4aaf66581350ee596b795
Modified Files:
exec/load/filecontents_lib.js exec/tests/filecontents_test.js
Log Message:
filecontents: record which external lister reached a failure verdict
The store is shared between hosts, and those hosts do not necessarily have
the same tools installed. A host with no external lister would record "unreadable" for an ARC, which libarchive cannot read in any form, and a host that does have one would then trust that verdict and refuse to list a file it could read perfectly well.
A negative record now carries the external lister that reached it, and a
record whose lister differs from what this host has is treated as stale.
The version is part of the identity, since builds years apart are in the wild (1.8.1 and 1.10.8 both are) and a format the older one rejects may be one the newer one reads. Successful listings are unaffected: a listing is a listing whoever produced it.
Detection redirects stdout only, so a missing command reports on stderr and leaves the probe file empty, which holds for both /bin/sh and cmd.exe. The result is cached, and a host with no lister now skips the per-file shell it used to spawn only to fail.
#1247
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net