3.0 KiB
External dependencies in copied format units
Sample data
Real message bases for testing live at ~/fidonet/msg/:
hudson/— Hudson MSGINFO/IDX/HDR/TXT/TOIDX.BBS setjam/— many JAM echo areas (e.g.10thamd.jhr/jdt/jdx/jlr)echomail.jam/— extra JAM samplesnetmail/— FTS-1 *.MSG numbered files (mixed upper/lower case on disk)squish/— Squish bases (currently empty but layout reserved)local/jam/,lowerit/,passthru/— additional collections
Tests should open these read-only and verify message counts, first/last messages, and specific known attributes. Do NOT write to these paths from tests — copy them into a scratch dir first.
Authoritative specs
The FTSC document collection at /home/ken/Source Code/ftsc/docs/ is the
source of truth when validating attribute bits, packet header layouts,
date strings, and kludge syntax. Key documents we cross-check against:
fts-0001.016— FTS-1 packet & message format (PKT, *.MSG, attributes, date string, kludges)fsc-0039.001/fsc-0039.004— Type-2+ packet headerfsc-0045.001— Type-2.2 packet headerfsc-0048.002— AuxNet Type-2 variantfsc-0009,fsc-0035etc. — kludges and control lines
When in doubt about an encoding or bit position, reference the spec
before changing the conversion tables in ma.types.pas.
These references were inherited from the Allfix tree and need to be resolved during the format-by-format refactor pass.
ma.fmt.pkt.pas
Currently uses: msgunit, netaddrs, aftypes.
Needs from msgunit:
PktHeader— 58-byte FTN packet header recordPktRecord— per-message header record inside a packetPacketRecord— high-level parsed message with kludges, address parts, flavours, etc.FlavourType,FlavourTypeSet,DateTimeArray
Plan:
- Move
PktHeader+PktRecordintoma.fmt.pkt.pasitself (packet-only). - Move
PacketRecord,FlavourType,FlavourTypeSet,DateTimeArrayintoma.types.passo other backends can use them where needed. - Drop the
msgunit/netaddrs/aftypesusesclauses.
ma.fmt.wildcat.pas + ma.fmt.wcutil.pas
Use the WildCat 4 SDK. The SDK source has been copied verbatim into
src/wc_sdk/ (formerly wc_dev/ in Allfix) so this repo can build the
Wildcat backend without external paths.
The SDK pulls in OS/2-era helpers (Os2Comp, DosUtil, p_System,
btisbase, isamtool, …). Keeping it on its own search-path entry
(-Fusrc/wc_sdk) means callers that don't need Wildcat can omit the
backend without forcing the SDK onto the build line.
include.inc
Allfix sources start with {$I include.inc}. Our copied units no longer
have that on the search path (we deliberately want the new lib to be
self-contained). Plan during refactor:
- Replace each
{$I include.inc}with explicit{$mode objfpc}{$H+}plus any other compiler switches the unit actually needs (most don't need more than mode +$H+). - Drop
WILDCAT4,EXECSWAP,UNIand other Allfix-specific defines.