Short: C-Net TIC and nodelist processor Author: Gary "Spitfire" McCulloch Uploader: spitfiretn gmail com Type: comm/fido Version: 3.2C Requires: C-Net/5 Amiga Pro, FTN TIC files, TrapList Architecture: m68k-amigaos Distribution: Aminet Kurz: C-Net TIC- und Nodelist-Prozessor 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 ===============================================================================