This build adds Linux and FreeBSD support, fixes the FILES.BBS rename bug, and adds cross-platform path handling.
New Platforms
- Linux x86_64 and FreeBSD x86_64 builds now included in releases. Native Unix binaries with forward-slash paths, case-preserving filenames, and FILES.BBS support.
- On Unix, only BBStype 255 (fileecho config / FILES.BBS) is supported. DOS/OS2 BBS file databases are not yet compatible with Unix paths.
Bug Fixes
- Fixed FILES.BBS rename failure (root cause found): The TextRec.name buffer was being read with str2pas/StrPas which produced garbage due to FPC ShortString/AnsiString type resolution. The rename target was truncated to just
H(OS/2) or/(Linux) instead of the full path. Fixed with direct byte-copy from the TextRec name buffer. - Fixed savedname corruption: The filename was also being read AFTER terase() which corrupts the TextRec buffer. Now saved before close/erase.
- Fixed DOS file attach paths on Linux: Incoming netmail with DOS paths (e.g.
C:\INBOUND\FILE.ZIP) now has drive letters stripped and separators converted. Falls back to searching inbound directories if the original path doesn’t exist.
Cross-Platform Path Handling
- All config paths normalized with
SetDirSeparatorsat load time — converts\to/on Linux,/to\on Windows. - Replaced hardcoded backslashes with
DirectorySeparatorin dosutil, binkley, execuni2, snetmail, fbbs, fcomp, and all 12 BBS modules. - Replaced
BuildPathwith FPC’sForceDirectoriesfor recursive directory creation. UprCase(path)replaced with case-preservingNormPathon Unix (30+ callsites).
Testing
- Added
test_fbbs.pas— 32 tests for FILES.BBS create, add, search, multiple sequential adds, and file replacement. Specifically tests the FILES.$$0 rename that was failing in the field.