''' ''' shirc Version @version@ ''' .de Sh .br .ne 5 .PP \fB\\$1\fR .PP .. .TH shirc 1 "29 Jul 2005" .SH NAME shirc - A multi-user chat program. .SH SYNOPSIS .B shirc [raw] .SH DESCRIPTION .B shirc is a simple, unsecure, extensible irc-like system. It is implemented as a core shell script and a set of extension modules (See .B MODULES below). .PP If .B splitvt(1) is installed, shirc will automaticaly use of it to make its interface more friendly (splits input/output). To prevent this use the .B raw option. .PP This manual describes version @version@. .SH SYSTEM WIDE CONFIGURATION The file .I @prefix@/etc/shirc.conf is sourced at start up. It is a shell script, so you can break the functionality of shirc (be careful). It's intended use is setting the channel directory (SHIRC_CHDIR) and the module search path (SHIRC_MODPATH). You can override the settings contained in the configuration file manually setting the equivalent environmental variables. .SH USER LOCAL CONFIGURATION If your home directory contains a file named .I .shircrc then shirc will source this file after the system wide configuration one. You can override here system configuration (still shell code). .SH MODULES The shirc modules can be loaded using the core command /load. Loaded modules are kept in mind by shirc so that the /help command can retrive help strings from them. To make your own module just define some CMD_foo shell functions in a file and eventually include a ``#HELP# /foo - do this and that'' line in there. Loading that file you will be able to run /foo from within shirc (See section .B INTERNALS below). .SH INTERNALS All channel files are kept in SHIRC_CHDIR. While talking, users add lines to the file ``.log''. The names of all users joined to a channel are encoded as files in a ``.users'' directory. The topic of a channel is written in ``.topic''. The currently joined channel can be found in the JOINNAME variable. It's log is JOINFILE. .PP When joined to a channel, user start a ``tail -f'' command in the background. The pid of this process can be found in the JOINPID variable. .PP Actually, the output of the ``tail'' command is feed through the filter specified in the OFILTER variable. And also what users say is filtered through IFILTER before writing it to the logfile. Check module ``rot13'' for examples of how to use this feature. .SH AUTHOR Written by strk@keybit.net .SH FILES .I @prefix@/bin/shirc The core (executable) script .PP .I @prefix@/etc/shirc.conf System-wide configuration file. .PP .I @prefix@/etc/shirc.motd Message Of The Day .PP .I $HOME/.shircrc User's local configuration file. .PP .I @prefix@/lib/shirc/* shirc standard modules. .br Read them to check what they do. .PP .I $HOME/.shirc/onjoin .br .I $HOME/.shirc/onstart User's event hooks .SH "SEE ALSO" .BR shirc-link(1) .BR splitvt (1) .SH BUGS shirc is a whole bug itself ;) Please do not report any, unless you make a fix and want to share it. A bug I'd like to solve is the pipeline kill operation needed to kill a channel listener when an OFILTER is engaged. On some systems it's not enaugh to kill the last process in the pipeline for all the other to shutdown. Try sending in the background a "tail -f | grep something" and then killing pid $! (last pid in pipeline). The "tail -f" will stay alive !!! (any help with this is appreciated).