ROFTIC (C EDITION)
Reign of Fire BBS C-Net/5 TIC / Nodelist / TrapList Processor
===============================================================================
DESCRIPTION
===============================================================================
ROFTIC is a compiled Amiga C program that processes incoming FTN-style TIC
files for C-Net/5 Amiga SysOps. It reads the FILE and AREA fields, and places
received files into the correct C-Net/5 file areas using roftic.cfg.
It also supports automatic nodelist maintenance. When a nodelist TIC is
received, ROFTIC stages the file, extracts it if needed, locates the real
nodelist, installs it into the C-Net/5 nodelist directory, and runs TrapList
only after a successful nodelist update.
This is a from-scratch C port of the original roftic.rexx (ARexx) processor,
same version lineage, same configuration values, same log format, and the
same file layout on disk. Behavior is unchanged -- what's different is how it
runs: every AmigaDOS housekeeping step (MAKEDIR/DELETE/LIST/COPY/verify) that
the REXX version did by forking a Shell process now runs as a direct library
call in-process instead. A profiling pass of the REXX version found that
forking accounted for roughly 80% of its runtime, so the practical result is
a noticeably faster processor with identical output. Being a compiled binary
rather than a plain-text script is also simply less convenient to casually
copy or re-brand.
The script is designed to fail safely. If a required archiver is missing, if
an archive cannot be extracted, if the configured AREA is missing, or if the
expected file cannot be found, the inbound file and TIC are left in place so
the SysOp can correct the problem and run the processor again.
For full installation notes, examples, testing procedures, troubleshooting,
and version history, see manual.txt.
FILES INCLUDED
===============================================================================
roftic Compiled AmigaOS executable (m68k, AmigaOS 3.0+)
readme.txt Quick overview and install notes
manual.txt Full SysOp documentation
roftic-example.cfg Example AREA to C-Net/5 file directory map
Rename roftic-example.cfg to roftic.cfg after editing it for your system.
roftic.cfg has two parts: an optional settings block (TICDIR, NODELISTDIR,
TEMPDIR, PROCESSED, LOGFILE, TRAPLIST, MOVETIC, LOGMODE) followed by the
usual AREA to C-Net/5 file directory map. Any setting you leave out keeps
this release's compiled-in default -- see QUICK INSTALL below and manual.txt
for the full keyword list and defaults.
REQUIREMENTS
===============================================================================
* Commodore Amiga or compatible/emulated Amiga system, AmigaOS 3.0 or newer
* C-Net/5 Amiga Pro
* FTN mailer/tosser setup receiving TIC files and files
* C-Net/5 file directories already created
* C-Net/5 nodelist directory available
* C-Net/5 TrapList available, normally in Mail:bin/
* Archivers required for the nodelist formats your links send
No ARexx dependency -- ROFTIC is a standalone compiled executable.
Recommended archivers, depending on your links:
* UnZip - FTN .Z## nodelist archives
* LHA - FTN .L## nodelist archives
* ARC - FTN .A## nodelist archives
* ARJ - FTN .J## nodelist archives
* RAR - FTN .R## nodelist archives
Plain archive files such as .ZIP, .LHA, .LZH, .ARC, .ARJ, and .RAR are routed
by TIC AREA unless their filename uses an FTN day-of-year nodelist archive
pattern such as .Z70 or .L70.
QUICK INSTALL
===============================================================================
1. Copy the ROF_TIC folder into your C-Net/5 mail directory.
Example:
Mail:ROF_TIC/roftic
2. Make sure TrapList exists.
Example:
Mail:bin/TrapList
3. Copy roftic-example.cfg to roftic.cfg.
4. If your system's paths differ from the defaults, set them in the
settings block at the top of roftic.cfg:
TICDIR Inbound:
NODELISTDIR Nodelist:
TEMPDIR Echomail:Inbound_Temp/RoFTIC
PROCESSED Echomail:Processed
LOGFILE SysData:log/RoF_TIC.log
TRAPLIST Mail:bin/traplist
MOVETIC 1
LOGMODE SHORT
Every line here is optional -- anything you leave out (or leave the
whole block out entirely) keeps this release's compiled-in default,
the values shown above. TICCFG itself (the location of roftic.cfg) is
the one thing that isn't settable this way, since it's what ROFTIC
needs to find before it can read anything else; that one still
requires the source and a cross-compiler (m68k-amigaos-gcc) to change.
5. Edit roftic.cfg and map each normal TIC AREA to a C-Net/5 file directory.
Example:
FTN_FILES UDBase0:FTN_FILES/
CNET_MODS UDBase0:CNET_MODS/
AMIGA_UTILS UDBase0:AMIGA_UTILS/
6. Run the program manually first.
From AmigaDOS Shell:
Mail:ROF_TIC/roftic
7. Review the log after testing.
BASIC PROCESSING FLOW
===============================================================================
A recommended C-Net/5 maintenance flow is:
1. Mailer receives packets, files, and TIC files.
2. C-Net/5 Toss processes mail, if used in your setup.
3. ROFTIC processes TIC files.
4. Normal TIC files are routed to UDBase0: file areas using roftic.cfg.
5. Nodelists are staged, extracted if needed, verified, and installed into
Nodelist:.
6. TrapList runs only when at least one nodelist was successfully updated.
NODELIST DETECTION
===============================================================================
ROFTIC uses conservative, generic nodelist detection so the program can be
used by SysOps on many different FTN networks.
Automatically treated as nodelist files:
* Plain numeric nodelists:
NETWORK.170
ARAKNET.170
CNET.170
* FTN day-of-year nodelist archives:
NETWORK.Z70
NETWORK.L70
NETWORK.A70
NETWORK.J70
NETWORK.R70
* Historical FTN nodelist archive styles:
NETWORK.NNA
NETWORK.AXA
NETWORK.NNJ
NETWORK.NNR
Normal archive extensions by themselves are not enough to identify a nodelist.
Files such as PACK.ZIP, INFO.LHA, UTILITY.ARC, or DOCS.RAR should normally be
routed by AREA through roftic.cfg.
This avoids the common problem where infopacks mention "current nodelist" in
the TIC description and accidentally get processed as nodelist updates.
ARCHIVED NODELIST HANDLING
===============================================================================
When a day-of-year archived nodelist is received, ROFTIC:
1. Reads the TIC FILE and AREA fields.
2. Detects the FTN archive extension, such as .Z70 or .L70.
3. Selects the proper archiver.
4. Extracts into the configured temporary directory.
5. Searches the extracted files for a usable nodelist.
6. Copies the nodelist into Nodelist:.
7. Verifies the copy.
8. Removes older matching nodelists only after the new one is verified.
9. Deletes or moves the processed TIC based on MOVETIC.
10. Runs TrapList only if a nodelist was successfully installed.
If anything fails, the inbound archive and TIC are kept.
SAMPLE roftic.cfg
===============================================================================
Each normal file echo AREA must be mapped to a destination directory.
Example:
FTN_FILES UDBase0:FTN_FILES/
CNET_MODS UDBase0:CNET_MODS/
AMIGA_UTILS UDBase0:AMIGA_UTILS/
COMMODORE UDBase0:COMMODORE/
BBS_ADS UDBase0:BBS_ADS/
The AREA name must match the AREA line inside the incoming TIC file.
If an AREA is not configured and the file is not detected as a nodelist,
ROFTIC leaves the file and TIC inbound for SysOp review.
RUNNING
===============================================================================
From AmigaDOS Shell:
Mail:ROF_TIC/roftic
From C-Net/5, call the program from your event, maintenance command, or menu
setup using the path appropriate for your system.
Recommended while testing:
MOVETIC = 1 (the default in this build)
This moves processed TIC files to the processed directory instead of deleting
them immediately.
===============================================================================
VERSION HISTORY
===============================================================================
v3.2C - Amiga C Port
---------------------
* Rewrote roftic.rexx as a native Amiga C program, same behavior, same
config values, same log format and file layout on disk.
* Replaced per-operation AmigaDOS Shell forks (MAKEDIR/DELETE/LIST/COPY/
verify) with direct library calls, removing the ~80% of runtime a
2026-07-17 profiling pass attributed to ARexx interpreter and shell-fork
overhead. Archive extraction and TrapList still shell out, unchanged --
profiling showed those were never the cost.
* No ARexx dependency; runs as a standalone compiled executable.
* Verified against synthetic test data covering area routing, ZIP-based
and plain numeric-extension nodelist handling, unmapped areas, malformed
TICs, and the old-nodelist replace-after-verify edge case, then deployed
to Reign of Fire BBS production and confirmed against a real TIC.
* Added an optional settings block to roftic.cfg (TICDIR, NODELISTDIR,
TEMPDIR, PROCESSED, LOGFILE, TRAPLIST, MOVETIC, LOGMODE), so SysOps with
different paths no longer need the source and a cross-compiler just to
change them. Any setting left out keeps its compiled-in default, so
existing area-mapping-only roftic.cfg files still work unchanged.
* Fixed the startup banner (version, telnet/dial-up/SSH contact info) being
silently dropped by the LOGMODE SHORT filter -- it now appears in the log
on every run, in both SHORT and FULL.
For the full roftic.rexx version history (v1.x through v3.2) that this port
carries forward, see the original ROFTIC.REXX package documentation.
SECURITY NOTES
===============================================================================
Only process TIC files from trusted FTN links.
A TIC processor moves files around your BBS file system. Incorrect TIC files,
bad area names, damaged archives, or malicious input can cause problems if your
system is not configured carefully.
Recommended precautions:
* Keep backups.
* Review logs regularly.
* Test one file echo and one nodelist format before live use.
* Do not allow unknown TIC areas to write into important system directories.
* Keep archivers in trusted locations.
DISCLAIMER
===============================================================================
ROFTIC is provided as-is.
Every C-Net/5 system is different. SysOps should test carefully before using
this program on a live BBS.
The author is not responsible for lost files, incorrect configuration, bad TIC
files, damaged archives, wrong area mappings, missing archivers, archiver syntax
differences, or damage caused by improper setup.
Always keep backups.
CREDITS
===============================================================================
ROFTIC was written and tested for:
Reign of Fire BBS
C-Net/5 Amiga Pro
call.rofbbs.com:6800
Created for the C-Net/5 SysOp community and other retro BBS operators who want
to automate TIC file handling, nodelist installation, and TrapList updates on
real or emulated Amiga systems.
Website:
https://www.rofbbs.com
SysOp / Author (REXX original and C port):
Gary "Spitfire" McCulloch
Networks:
ArakNet, CommodoreNet, DiscipleNet, PiNet, and RetroNet
===============================================================================
END OF README.TXT SpitfireTN Entertainment
===============================================================================
|