Internet Citizens' Band Messenger -- A threaded Perl client for the ICB service
ICBM is a threaded ICB client written in Perl5 which supports a
superset of the functionality of CICB (the ICB C Client, the de facto standard ICB
client). This allows ICBM to be readily extended to support many features that
CICB does not, and to gracefully do a number of things that CICB does poorly if at all.
(CICB has its own advantages, including a much smaller memory footprint, though.) The
primary purpose of ICBM, however, is as a portable ICB client which can be scripted in
Perl instead of in TCL. While it has become traditional for ICB/ForumNet clients to
embed TCL, scripting in TCL via an embedded interpreter imposes many pitfalls and yields many
unexpected side effects, TCL being a much more opaque and user-hostile language than Perl.
It is ICBM's intention to far exceed the scripting capabilities of other ICB clients.
Timestamps can now be enabled and the timestamp format set in the early-initialization
Several minor formatting changes made to encryption-related status messages, and fixed a
bug which was causing echoback of outgoing encrypted private messages to be suppressed.
The long-standing cross-window corruption problem appears to finally be fixed, following
a switch from using Thread::Semaphore to simply calling lock($semaphore). In a
magnificent piece of irony, I have concluded that Thread::Semaphore itself is not thread
safe, or at least not on multi-core processors. The lock() call, however, is.
ICBM now accepts either chr(4) or chr(126) as DEL, and either chr(8) or chr(127)
as BKSP. This solves a problem in which BKSP did not consistently work on all
Unix/Linux variants due to variations in which keycode the BKSP and DEL keys return to
an application. (tilde_as_bksp mode can be turned off using the deltilde command.)
ICBM Selected Features
Client-to-client Blowfish encryption of private messages (other
ciphers may be added later)
Threaded client with multiple-window split-screen display
Command history and message log with replay
Scriptable in Perl, including aliases and event hooks
Customizable colorization with nick highlighting
Supports multiple alternate nicks and automatically retries connection if primary nick is in use
Compatible with CICB icbserverdb files
Status line with mod status and clock
Full embedded documentation (icbm -man)
Runs on any platform with Perl 5.6/5.8, Perl ithreads, and required modules
Perl-5.6.0 or later compiled with ithreads support