• exec/load/filecontents_lib.js exec/tests/filecontents_test.js

    From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Sunday, September 20, 2026 03:31:33
    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>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)