fpc-bbs

A unified Free Pascal library for reading and writing BBS-side file-area databases across multiple BBS systems.

Sibling to fpc-msgbase (message-base storage) and fpc-ftn-transport (FTN wire / queue / bundle). Same vendoring model: each library is its own repo, its own tests; consumers vendor it via cp / rsync; bug fix → commit here → consumers make pull-fpc-bbs at their convenience → rebuild → deploy.

Scope

Concern Owned by
Message storage (Hudson, JAM, Squish, MSG, PCBoard, EzyCom, GoldBase, Wildcat) fpc-msgbase
FTN transport (PKT, BSO, ArcMail, FilQueue, DBridge) fpc-ftn-transport
TIC processing / file echo (FSC-0087) fpc-ftn-transport (tt.tic.*)
BBS file-area databases (FILES.BBS, DIR.LST, per-BBS variants) fpc-bbs
BBS config readers (per-BBS .CFG / .DAT / .PRM / .CTL formats) fpc-bbs
BBS user databases (USERS.BBS, USER.DAT) fpc-bbs (when needed)

Initial backends (priority order)

BBS Priority Reference
RemoteAccess (RA) high RA's CONFIG.RA + FAREA.RA
Maximus high Maximus PRM + AREA.DAT
Synchronet high SBBS XSDK conventions
Renegade 1.4 high Renegade 1.4 binary configs / file area files
PCBoard secondary PCBoard 14/15 + Allfix's PCBTYPES.PAS head start
ProBoard secondary ProBoard CFG + Allfix's PROBOARD.PAS head start

Allfix v6 (~/Source Code/originalallfix/AllFix.1/TPFILES/ALLFIX/) is the primary reference — its file-area handling already covers several of these, and the migration is the practical motivation for this library.

Status

See CHANGELOG.md for the full release history and docs/backlog.md for the per-release cadence through the v0.1.0 API freeze. Downstream consumers pin by the latest vX.Y.Z tag, not commit hash.

The framework (bbs.types / bbs.events / bbs.api) shipped in v0.0.2. Individual BBS adapters land one family per minor release. Re-read CHANGELOG before integrating any specific backend -- status per family is recorded there with the release that landed it and any known limitations.

Naming

Unit prefix: bbs.<category>.<name>.pas

Namespace Owner
bbs.api top-level facade + abstract TBbsBase
bbs.types shared types (TFileArea, TFileEntry, etc.)
bbs.events event hooks (mirrors mb.events / TMessageEvents)
bbs.fmt.<vendor> per-BBS adapter
bbs.fmt.<vendor>.uni unified-API adapter (when warranted)

All units use {$mode objfpc}{$H+}{$modeswitch advancedrecords}.

Building

Once units land:

fpc -Fusrc -Fusrc/formats examples/example_filearea_list.pas

fpc.cfg covers the multi-target build (i386-go32v2, i386-win32, i386-linux, i386-os2, x86_64-linux).

Layout

src/             bbs.api, bbs.types, bbs.events
src/formats/     bbs.fmt.<vendor>.pas
docs/            architecture, scope, format notes
tests/           regression tests, sample data
examples/        small CLI programs that double as smoke tests

Documentation

Family

Library Concern Status
comet Comet daemon (session/WFC/routing; wraps fpc-binkp + fpc-comet) shipped (1.2.2)
fpc-log Shared TLogProc logger interface for every fpc-* lib shipped (0.1.0)
fpc-crypto Shared crypto primitives — MD5 (go32v2-safe), SHA-256/384/512, Ed25519 shipped (0.1.0)
fpc-msgbase Message-base storage (8 formats) + mb.address leaf shipped (0.7.0)
fpc-ftn-transport FTN transport tier (PKT / BSO / FilQueue / DBridge / Filebox / ArcMail) shipped (0.6.0)
fpc-binkp BinkP/1.1 + Argus / binkd extensions (CRYPT / NR / ND / PLZ / EXTCMD-GZ / ED25519 / DES-CBC / TRF / FREQ) shipped (0.2.1)
fpc-comet Native Comet protocol (FSP-COMET-001; X25519 + ChaCha20 + Ed25519 via fpc-crypto) shipped (0.2.0)
fpc-filexfer XMODEM / YMODEM / ZMODEM / SEAlink / Hydra / Janus / nova shipped (0.1.1)
fpc-emsi EMSI / WaZOO / FTS-1 / IEMSI session handshakes + dispatcher (MD5 via fpc-crypto) shipped (0.1.3)
fpc-bbs BBS file-area databases shipped (0.0.5, modernized + RA family + Max3), this repo
fpc-ftpmail FTP / SFTP server lib (file-tree provider) proposed — open slot
fpc-dbapi DB abstraction in progress (Fastway)
fpc-filebase (folded into fpc-bbs as the file-area-database side)

The tt.tic.* modules (file-echo TIC handling per FSC-0087) live in fpc-ftn-transport -- TIC processing is transport-tier and rides BSO/ArcMail rails. fpc-bbs is the BBS-side storage that the tosser writes into after .TIC validation.

Description
BBS-side file-area / config / user-DB library
Readme 479 KiB
Languages
Pascal 98.6%
Shell 1.4%