%								-*- latex -*-
%
%
%
%    IRCprimer.tex : Source code of ``A short IRC primer''.
%
%
%    Copyright (C) 1993 Nicolas PIOCH
%                       118, rue de Turenne
%                       F-75003 PARIS
%                       FRANCE
%
%    E-mail: Nicolas.Pioch@grasp.insa-lyon.fr
%
%    NOTE: If you like the work,
%          I'd prefer getting a *POSTCARD* than junk mail ;)
%
%    This program is free software; you can redistribute it and/or modify
%    it under the terms of the GNU General Public License as published by
%    the Free Software Foundation; either version 2, or (at your option)
%    any later version.
%
%    This program is distributed in the hope that it will be useful,
%    but WITHOUT ANY WARRANTY; without even the implied warranty of
%    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
%    GNU General Public License for more details.
%
%    You should have received a copy of the GNU General Public License
%    along with this program; if not, write to the Free Software
%    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
%
%
%
%
%
%

\typeout{----------------------------------------------------------------------}
\typeout{}
\typeout{ Copyright (C) 1993 Nicolas PIOCH}
\typeout{ E-mail: Nicolas.Pioch@grasp.insa-lyon.fr}
\typeout{}
\typeout{ This program is free software; you can redistribute it and/or modify}
\typeout{ it under the terms of the GNU General Public License as published by}
\typeout{ the Free Software Foundation; either version 2, or (at your option)}
\typeout{ any later version.}
\typeout{}
\typeout{ This program is distributed in the hope that it will be useful,}
\typeout{ but WITHOUT ANY WARRANTY; without even the implied warranty of}
\typeout{ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the}
\typeout{ GNU General Public License for more details.}
\typeout{}
\typeout{ You should have received a copy of the GNU General Public License}
\typeout{ along with this program; if not, write to the Free Software}
\typeout{ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.}
\typeout{}
\typeout{----------------------------------------------------------------------}


\newcommand{\IRC}{{\bf IRC}}
\newcommand{\ircII}{{\tt ircII}}
\newcommand{\marge}[1]{\marginpar{$\triangleleft$ #1}}


\documentstyle[12pt,A4,makeidx]{article}
\makeindex
\oddsidemargin 0in
\evensidemargin 0in
\textwidth 6in
\parskip 12pt
\pagestyle{headings}

\title{A short \IRC{} primer}

\author{Nicolas {\sc Pioch}, (Nap on \IRC)\index{Nap}
\\\tt $<$Nicolas.Pioch@grasp.insa-lyon.fr$>$
\\
\\Text conversion by Owe {\sc Rasmussen} (Sorg)\index{Sorg}
\\\tt $<$d1rasmus@dtek.chalmers.se$>$}
\date{Edition 1.1b, \today.}

\begin{document}
% \pagenumbering{Roman}
\maketitle

% This is for me only, the original IRCprimer PS version has the logo
% of my school on the front page.
%
% Just comment those 4 lines out if you don't have the file logoX.eps
%                                                    -- Nicolas PIOCH
\begin{figure*}[h]
\input{psfig}
\centerline{\psfig{figure=logoX.eps}}
\end{figure*}

\begin{abstract}

Have you ever wanted to talk with other computer users in other parts
of the world~?  Well guess what\ldots{} You can~!
The program is called \IRC{} ({\sl Internet Relay Chat\/})\index{IRC@\IRC{}}
and it is networked much over North America, Asia, Europe, and Oceania.
This program is a substitution for {\tt talk}, and many
other multiple talk programs you might have read about.  When you are
talking on \IRC{}, everything you type will instantly be transmitted
around the world to other users that might be watching their terminals
at the time --- they can then type something and {\em respond\/} to your
messages --- and vice versa.  I should warn you that the program can be
very addictive once you begin to make friends and contacts on \IRC,
especially when you learn how to discuss in 14 languages\ldots

\smallskip
Topics of discussion on \IRC{} are varied, just like the topics of\/
{\tt Usenet newsgroups} are varied. Technical and political discussions are
popular, especially when world events are in progress. \IRC{} is also a
way to expand your horizons, as people from many countries and
cultures are on, 24 hours a day. Most conversations are in English,
but there are always channels in German, Japanese, French, Finnish, and
occasionally other languages.

\smallskip
\IRC{} gained international fame during the late Persian Gulf War,
when updates from around the world came across the wire, and most
people on \IRC{} gathered on a single channel to hear these reports. 

\end{abstract}


%\vfill\eject
\newpage

{
\parskip 5pt
\tableofcontents
\listoftables
}

%\vfill\eject
\newpage

\parskip 12pt
% \pagenumbering{arabic}
% \setcounter{page}{1}

\section{Getting Started}

\subsection{Clients and Servers}

\IRC\footnote{The original code was written by Jarkko Oikarinen.}
is a multi-user, multi-channel chatting network.  It allows
people all over the internet to talk to one another in real-time.
It is a functional replacement and improvement to
{\tt talk}\index{talk@{\tt talk}};
{\tt talk} is an old, primitive, atrocious, minimalist sort of
keyboard/screen
conversation tool, using a grotesque, machine-dependent protocol (blah!).
\IRC{} does everything {\tt talk} does, but with a better protocol, allowing
more than 2 users to talk at once, with access across the aggregate
Internet, and providing a whole raft of other useful features.

There are two ways to enter \IRC{} from a Unix system. If you are using the
{\tt emacs}\footnote{Editor from Richard Stallman and the Free
Software Foundation.}\index{emacs@{\tt emacs}}
lisp client, you just have to ``{\tt M-x irc}''\footnote{If this doesn't
work, you may need to load the client into your {\tt emacs} session before.}.
If you are using the C client (easier for beginners)
then you usually type ``{\tt irc}''. Non-Unix boxes have special clients,
each of which has to be configured using a special procedure.
Check the manual or help screen for more information.

If you wish to be known by a nickname\index{nickname} which
is not your login name, type ``{\tt irc nickname}'' instead.
Each \IRC{} user (``client'') chooses a nickname.  All communication with
another user is either by nickname or by the channel that they or
you are on (more about channels later on).

The most important thing to remember about \IRC{} is that you have to be
willing to explore and learn to use it\ldots{} Take your time, try to not get
flustered, enjoy yourself, and you will soon be making new
friends all over the world~!

\IRC{} is based on a client-server model.
Clients\index{client} are programs that 
connect to a server, a server\index{server} is a program that transports data
(messages) from a user client to another. There are clients
running on many different systems (Unix, {\tt emacs}, VMS, MSDOS, VM\ldots)
that allow you to connect to an \IRC{} server.
The client which will be mainly spoken of here is the most widespread:
\ircII\footnote{Originally designed by Michael Sandrof.}\index{ircII@\ircII{}}.
Other clients are similar, and often accept \ircII{} commands.

\subsection{How to Behave on \IRC}

The most widely understood and spoken language\index{language} on \IRC{} is
English\footnote{Don't you hate footnotes ?}. 
However, as \IRC{} is used in many different countries, English is by
no means the only language. If you want to speak some other language
than English (for example with your friends), go to a separate
channel\footnote{What's a ``channel'' will be explained on
page~\pageref{defchannel}}
and set the topic to indicate that.
On the other hand, you should check the topic
before you move to a channel to see if there are any restrictions about 
language. On a non-restricted channel, please speak a language
everybody can understand. If you want to do otherwise, change channels
and set the topic accordingly.

It's not necessary to greet\index{greetings} everybody on a channel personally.
Usually one ``Hello!'' or equivalent is enough. And don't expect everybody
to greet you back\ldots{} On a channel with 20 people that would mean one
screenful of hellos. It's sensible not to greet, in order not to be rude
to the rest of the channel. If you must say hello to somebody you
know, do it with a private message. The same applies to goodbyes.

Also note that using your client facilities\footnote{\ircII{}
``{\tt ON}'' command for instance\ldots}
to automatically say hello or goodbye to people is extremely
poor etiquette. Nobody wants to receive autogreets\index{autogreets}.
They are not only obviously automatic, but even if you think
you are being polite you are actually sounding insincere and also
interfering with the personal environment of the recipient when using
autogreets. If somebody wants to be autogreeted on joining a channel,
he will autogreet himself.

When you enter a new channel, you should listen
for a while to get an impression of what is been discussed. Feel free
to join in, but do not try to force your topic into the discussion
if that doesn't come naturally.

Remember, people on \IRC{} form their opinions about you only by 
your actions, writings and comments, so think before you type.
If you use offensive words, you'll be frowned upon.
Do not ``dump'' to a channel or user (send large amounts of unwanted
information). This is likely to get you kicked off the channel or
killed off from \IRC. Dumping causes network ``burbs'', connections going
down because servers cannot handle the large amount of traffic any more.
Other prohibited actions include:

\begin{itemize}
\item harassing another user. Harassment is defined as behavior
towards another user with the purpose of annoying them.
\item annoying a channel with constant beeping.
\item any behavior reducing the functionality of \IRC.
\end{itemize}

\subsection{Privacy on \IRC{}}

You should always keep in mind that messages you send to someone over \IRC{}
are passed along all the servers between you and the person you're
writing to. When you're sending a letter to someone, any postman on the
way could open it and read its contents\ldots{}

Well, it's the same on the network. Any \IRC{}-Admin could compile its
server in ``debug'' mode and log whatever messages are transmitted
through his node\footnote{It has already been done\ldots{}},
so a good rule of thumb is not to trust the
servers\index{privacy}\index{security}.

\begin{center}
\begin{tabular}{|c|}
\hline
{\bf \IRC{} is not a secure way of communication.}\\
\hline
\end{tabular}
\end{center}

How to establish direct communications between clients will be explained
later (see {\tt DCC CHAT} page~\pageref{`cmddccchat'}).
This should be used when you wouldn't want anybody else on \IRC{} to
intercept your private messages.

\subsection{First Steps}

Note: \ircII, the client most people are using, has most
of this information online. If you are stuck, type ``{\tt /HELP}'' and
hit {\tt <return>}.
To escape from {\tt HELP} mode, keep pressing {\tt return} until your edit
line (the line at the bottom of the screen) is empty.
Most of the information in this file can be found typing those commands:
``{\tt /HELP INTRO}'' or ``{\tt /HELP NEWUSER}''.

\begin{center}
\begin{tabular}{|c|}
\hline
{\sl All~ \ircII{} commands begin with a ``{\tt /}'' character.}\\
\hline
\end{tabular}
\end{center}

The {\em slash} is the default command character\index{command!character}.
Commands are not case sensitive, and can be abbreviated to their first
letters: ``{\tt /SI}'' and ``{\tt /sign <text>}'' stand for
{\tt /SIGNOFF} and will both end your \IRC{} session
(more page~\pageref{`cmdquit'})
\index{command!abbreviations}\index{abbreviations}.

Anything that does not begin with a ``{\tt /}'' is assumed to be a message
to someone and will be sent to your current channel, or to a person you
are {\tt QUERY}ing (the {\tt QUERY} command will be detailed later
on, maybe even page~\pageref{`cmdquery'}).

If you are not sure about the spelling\index{command!spelling}
of an \ircII{} command, type the prefix of that command,
and press the {\tt ESC}ape key twice;\index{ESC ESC@{\tt ESC ESC}}
\ircII{} will give you a listing of {\sl commands} and
{\sl aliases\/} that start with that prefix.
Don't forget the ``{\tt /}'' in front
of the command, though.

\begin{quote}\footnotesize\begin{verbatim}
/W <ESC><ESC>
*** Commands:
***     WAIT           WALL           WALLOPS        WHICH          
***     WHILE          WHO            WHOIS          WHOWAS         
***     WINDOW         
*** Aliases:
***     W              
\end{verbatim}\end{quote}

This is an example. Your screen may show more aliases,
and less commands than shown here, or less aliases and more
commands --- in other words ``your mileage may vary''\ldots

When you first get on \IRC{}, you are put into a dead place
where nobody is talking. You can either start a private
conversation with some people, basically using {\tt MSG},
or {\tt JOIN} a channel for public chat.

\subsection{Screen and Keyboard Activity}

\IRC{} is a full-screen utility.  It takes over the screen, with the
bulk of activity happening in the top (N$-$2) lines, a status line (vaguely
{\tt emacs}-like) on the next to last line, and your input being entered on
the last line.
When typing commands at \ircII, you have a minimalist line-editing
facility in an {\tt emacs} style.

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l||}
\hline
\hline
Key & Effects\\
\hline
{\tt \^{}P}  & recalls previous command line\\
{\tt \^{}N}  & recalls next command line\\
{\tt \^{}F}  & moves forward one character\\
{\tt \^{}B}  & moves backward one character\\
{\tt \^{}A}  & moves the cursor to the beginning of the line\\
{\tt \^{}E}  & goes to the end\\
{\tt \^{}D}  & deletes the character under the cursor\\
{\tt \^{}K}  & kills from the cursor to the end\\
{\tt \^{}Y}  & reinserts the last stretch of killed text\\
{\tt \^{}U}  & clears the whole line\\
{\tt \^{}L}  & redraws the screen\\
\hline
\hline
\end{tabular}
\caption{Editing keys\index{editing!keys}}
\end{center}
\end{table}

\bigskip
The {\tt !} command is used to recall previous commands in your command
history for re-execution.  The {\tt !} command is unique in that when it
is used, it leaves the matching history entry in the input line for
re-editting.  You can specify a history entry either by its number
in the history list, or by a match with a given wildcard expression.
For instance, ``{\tt /!10}'' will put entry 10 in the history list
into the input line. ``{\tt /!/MSG}'' will search the history list for
a line beginning with {\tt /MSG} (a ``{\tt *}'' is implied at the
end).

\noindent
{\tt /! [<history number>|<history match>]}\footnote{The syntax
of the commands uses the following conventions: parameters are between
{\tt <angle brackets>}, {\tt [square brackets]} surround optional parameters
and options are separated by {\tt |}.}
\label{`cmdexcl'}\marge{\tt !}\index{"!@{\tt "!}}
\\\indent Recalls previous commands for re-editing.


\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l|c||}
\hline
\hline
Keyword & Action & Page \\
\hline
\tt !       & recalls previous commands for re-editing & \pageref{`cmdexcl'}\\
\tt HISTORY & displays the command history         & \pageref{`cmdhistory'}\\
\tt LASTLOG & lists the most recent messages       & \pageref{`cmdlastlog'}\\
\tt CLEAR   & puts some white space on your screen & \pageref{`cmdclear'}\\
\hline
\hline
\end{tabular}
\caption{Editing commands\index{editing!commands}\index{command!editing}}
\end{center}
\end{table}

\bigskip
The command history can be dumped using:

\noindent
{\tt /HISTORY [<number>]}
\label{`cmdhistory'}\marge{\tt HISTORY}\index{HISTORY@{\tt HISTORY}}
\\\indent Displays the command history to the screen.
You can specify the number of history entries you wish to view as well.

\bigskip
Almost everything happens in the upper bulk of the screen.  This
includes both messages from other users, as well as the output of the
control commands.
Normal messages from other users appear with the originating nickname
in {\tt <angle brackets>}.  Private messages arrive with the originating
nickname in {\tt *asterisks*}.  Messages you send to everyone appear
with a preceding ``{\tt >~}'' whereas messages you send privately to
another user appear with ``{\tt -> *nickname*}''.
Other output (invitations from other users to
join channels, and so forth) appears interspersed with other activity
on the screen.

\begin{table}[htb]
\begin{center}
\begin{tabular}{||l|l|c|c||}
\hline
\hline
What is displayed & What you typed & Sender & Recipients\\
\hline
{\tt > Morning, people}    & {\tt Morning, people}
                           & You & Channel\\
{\tt <some1else> hello} &
                           & some1else & Channel\\
{\tt -> *some1else* hi!}   & {\tt /msg some1else hi!}
                           & You & some1else (only)\\
{\tt *some1else* wassup ?} &
                           & some1else & You (only)\\
\hline
\hline
\end{tabular}
\caption{Simple screen activity\index{screen activity}}
\end{center}
\end{table}

Last \ircII{} outputs can be recalled with:

\noindent
{\tt /LASTLOG [<number of entries>|<text> [<from entry>]]}
\label{`cmdlastlog'}\marge{\tt LASTLOG}\index{LASTLOG@{\tt LASTLOG}}
\\\indent Displays the contents of the lastlog.  This is a list of the
most recent messages that have appeared on the screen, useful
if you inadvertantly miss messages. If no arguments are given,
the entire lastlog is displayed.  If the first argument 
is a number, it determines how many log entries to show.
Otherwise it is searched for in every lastlog entry.  The
second argument determines how many lines back to start display from.

\begin{quote}\footnotesize
Example:
\begin{verbatim}
/LASTLOG
> Public message I send to all people in the channel
<some1else> Public message from some1else
*some1else* Private message sent to me by some1else
-> *some1else* Private message I send to some1else
\end{verbatim}
\end{quote}

Finally, if your screen gets garbage from a {\tt talk}, {\tt write},
{\tt wall} or any other form of primitive communication (smirk),
hit {\tt \^{}L} to redraw it, or {\tt CLEAR} it.

\noindent
{\tt /CLEAR}\label{`cmdclear'}\marge{\tt CLEAR}\index{CLEAR@{\tt CLEAR}}
\\\indent Clears the screen. Here are the effects of this command:

%\vfill\eject
\newpage

\section{Let's Go!}
\subsection{General Commands}

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l|c||}
\hline
\hline
Keyword & Action & Page \\
\hline
\tt NICK    & changes your nickname                & \pageref{`cmdnick'}\\
\tt QUIT
 & exits your \IRC{} session (same as {\tt BYE}, {\tt SIGNOFF} and {\tt EXIT})
                                                   & \pageref{`cmdquit'}\\
\tt HELP    & prints help on the given command     & \pageref{`cmdhelp'}\\
\tt WHOIS   & displays information about someone   & \pageref{`cmdwhois'}\\
\tt WHOWAS  & displays information about someone who just left
                                                   & \pageref{`cmdwhowas'}\\
\tt AWAY    & leaves a message saying you're not paying attention
                                                   & \pageref{`cmdaway'}\\
\hline
\hline
\end{tabular}
\caption{General commands\index{command!general}}
\end{center}
\end{table}

\noindent
{\tt /NICK [<nickname>]}
\label{`cmdnick'}\marge{\tt NICK}\index{NICK@{\tt NICK}}
\\\indent Changes your nickname to whatever you like.

Everyone who wants to talk to you sees this name --- also, at the
moment, nicknames are limited to 9 characters max. Your nickname will
be the same as your login by default. You can also
set an environment variable, {\tt IRCNICK}, the value of which
will be used instead. Nickname clashes are not
allowed; this is enforced by the servers.  If your intended nickname
clashes with someone else's as you enter \IRC, you will not be able to
enter until you change it to something else.

\begin{quote}\footnotesize\begin{verbatim}
/NICK Nappy
*** Nap is now known as Nappy
\end{verbatim}\end{quote}

\bigskip
\noindent
{\tt /QUIT [<reason>]}
\label{`cmdquit'}\marge{\tt QUIT}\index{QUIT@{\tt QUIT}}
\index{BYE@{\tt BYE}|see{{\tt QUIT}}}
\index{SIGNOFF@{\tt SIGNOFF}|see{{\tt QUIT}}}
\index{EXIT@{\tt EXIT}|see{{\tt QUIT}}}
\\\indent Exits your \IRC{} session.
You can also use {\tt BYE}, {\tt SIGNOFF} and {\tt EXIT}.
If a reason is supplied, it is displayed to other people on your channels.

\begin{quote}\footnotesize\begin{verbatim}
/QUIT Lunch time!
poly ~ >
\end{verbatim}\end{quote}

\bigskip
\noindent
{\tt /HELP [<command>]}
\label{`cmdhelp'}\marge{\tt HELP}\index{HELP@{\tt HELP}}
\\\indent Shows help on the given command.

\begin{quote}\footnotesize\begin{verbatim}
/HELP HELP
Usage: HELP [command]
  Shows help on the given command.  The help documentation is 
  set up in a hierarchical fashion.  That means that certain
  help topics have sub-topics under them.
[boring stuff deleted]
\end{verbatim}\end{quote}

\bigskip
\noindent
{\tt /WHOIS [[<server>] <nickname>]}
\label{`cmdwhois'}\marge{\tt WHOIS}\index{WHOIS@{\tt WHOIS}}
\\\indent Shows information about someone.

\begin{quote}\footnotesize\begin{verbatim}
/WHOIS Nap
*** Nap is pioch@poly.polytechnique.fr (Klein bottle for sale...
   inquire within.)
*** on channels: @#Twilight_Zone @#EU-Opers 
*** on irc via server poly.polytechnique.fr (Ecole Polytechnique, Paris,
   FRANCE !)
*** Nap has a connection to the twilight zone (is an IRC operator)
*** Nap has been idle 0 seconds

/WHOIS Nappy
*** Nappy: No such nickname
\end{verbatim}\end{quote}

\bigskip
Sometimes {\tt WHOIS} won't help you much, because the person you
want to know more about just left \IRC{} or changed nick. However, you
can use {\tt WHOWAS} to get this information for a while:

\noindent
{\tt /WHOWAS [[<server>] <nickname>]}
\label{`cmdwhowas'}\marge{\tt WHOWAS}\index{WHOWAS@{\tt WHOWAS}}
\\\indent Shows information about who used the given nickname last,
even if no one is currently using it.

\begin{quote}\footnotesize\begin{verbatim}
/WHOWAS Nappy
*** Nappy was pioch@poly.polytechnique.fr (Artistic ventures highlighted.
   Rob a museum.) on channel *private*
*** on irc via server poly.polytechnique.fr (Signoff: Mon Jun 22 20:15:23)
\end{verbatim}\end{quote}

Very often, an unsuccessful call to {\tt WHOIS} will lead you to try
{\tt WHOWAS}. That's why \ircII{} allows you to
``{\tt /SET AUTO\_WHOWAS ON}''\index{AUTO\_WHOWAS@{\tt AUTO\_WHOWAS}};
that way, a ``{\tt *** <nickname>: No such nickname}''
message will automagically
generate a ``{\tt /WHOWAS <nickname>}''. Try typing
``{\tt /HELP SET AUTO\_WHOWAS}'' for more information on this topic.

\bigskip
\noindent
{\tt /AWAY [<away message>]}
\label{`cmdaway'}\marge{\tt AWAY}\index{AWAY@{\tt AWAY}}
\\\indent Leave a message explaining that you are not currently paying
attention to \IRC{}. Whenever someone sends you a {\tt MSG} or 
does a {\tt WHOIS} on you, they automatically see whatever message you set.
Using {\tt AWAY} with no parameters marks you as no longer being away.

\begin{quote}\footnotesize\begin{verbatim}
/AWAY Gone to get a cup of coffee!
*** You have been marked as being away

/AWAY
*** You are no longer marked as being away
\end{verbatim}\end{quote}

\subsection{Communication and Private Conversation}

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l|c||}
\hline
\hline
Keyword & Action & Page \\
\hline
\tt MSG     & sends a private message              & \pageref{`cmdmsg'}\\
\tt QUERY   & starts a private conversation        & \pageref{`cmdquery'}\\
\tt NOTICE  & sends a private message              & \pageref{`cmdnotice'}\\
\tt NOTIFY  & warns you of people logging in or out \IRC{}
                                                   & \pageref{`cmdnotify'}\\
\tt IGNORE  & removes output from specific people off your screen
                                                   & \pageref{`cmdignore'}\\
\hline
\hline
\end{tabular}
\caption{Private conversation commands\index{command!private conversation}}
\end{center}
\end{table}

You can use the {\tt MSG} command (usually ``{\tt M}'' is an alias for
it) to send someone a message that only that person can read.

\noindent
{\tt /MSG <nickname>|<channel> <text>}
\label{`cmdmsg'}\marge{\tt MSG}\index{MSG@{\tt MSG}}
\\\indent Sends a private message to the specified nickname.

\begin{quote}\footnotesize\begin{verbatim}
/MSG Nap This message is for Nap only.
-> *Nap* This message is for Nap only.
\end{verbatim}

\bigskip
On my screen will appear:
\begin{verbatim}
*YourNick* This message is for Nap only.
\end{verbatim}\end{quote}

If you want to send a private message to more than one person,
you can specify a list of nicknames separated by commas (no spaces).

\begin{quote}\footnotesize\begin{verbatim}
/MSG Nap,Sorg This message for both Nap and Sorg.
-> *Nap* This message for both Nap and Sorg.
-> *Sorg* This message for both Nap and Sorg.
\end{verbatim}\end{quote}

Two special case nicknames are defined. If the
nickname is ``{\tt ,}'' (a {\em comma\/}), the message is sent to the last
person who sent you a {\tt MSG}.  If the nickname is ``{\tt .}'' 
(a {\em period\/}), the message is sent to the last person to whom you
sent a message.

\bigskip
You can have a private conversation by only using {\tt /MSG}.
However, typing
``{\tt /MSG <nick> <text>}'' or ``{\tt /MSG . <text>}'' gets cumbersome.
That's where the {\tt QUERY} command comes in handy.

\noindent
{\tt /QUERY [<nickname>|<channel>]}
\label{`cmdquery'}\marge{\tt QUERY}\index{QUERY@{\tt QUERY}}
\\\indent Starts a private conversation with {\tt <nickname>}.

All text you type that would normally be sent to your channel now goes to
the supplied nickname in the form of {\tt MSG}s.  To cancel a private
conversation, use {\tt QUERY} with no arguments.

\begin{quote}\footnotesize\begin{verbatim}
/QUERY Nap
*** Starting conversation with Nap

Blahcrap
-> *Nap* Blahcrap

/QUERY
*** Ending conversation with Nap
\end{verbatim}\end{quote}


\bigskip
There is also another command to send messages, called {\tt NOTICE}.
Unlike {\tt MSG}s, {\tt NOTICE}s are surrounded by {\tt -} when
printed, and no automated responses (such as generated by
{\tt IGNORE} or an automaton) will be sent in reply.
Services (robots) on \IRC{} often use this form of interaction.

\noindent
{\tt /NOTICE <nickname>|<channel> <text>}
\label{`cmdnotice'}\marge{\tt NOTICE}\index{NOTICE@{\tt NOTICE}}
\\\indent Sends a private message to the specified {\tt <nickname>}.

\begin{quote}\footnotesize\begin{verbatim}
/NOTICE Nap Better use /MSG instead of /NOTICE.
-> -Nap- Better use /MSG instead of /NOTICE.
\end{verbatim}

\bigskip
On my screen will appear:
\begin{verbatim}
-YourNick- Better use /MSG instead of /NOTICE.
\end{verbatim}\end{quote}

\bigskip
As you begin making new friends over \IRC{}, you'll want to mark
certain nicknames such that you will be warned when they signon or off.

\noindent
{\tt /NOTIFY [[-]<nickname>]}
\label{`cmdnotify'}\marge{\tt NOTIFY}\index{NOTIFY@{\tt NOTIFY}}
\\\indent Adds or removes {\tt <nickname>} to the list of people
you'll be warned when they enter or quit \IRC{}.\footnote{In \ircII{}
versions prior to 2.2, too many people in the {\tt NOTIFY} list
cause excessive slowness.}

\begin{quote}\footnotesize\begin{verbatim}
/NOTIFY Nap Nappy
*** Signon by Nap detected

/NOTIFY
*** Currently present: Nap
*** Currently absent: Nappy
\end{verbatim}\end{quote}

\bigskip
Eventually, you may wish some day not to see messages from a specific
user on your screen. This may happen when someone is dumping large
amounts of garbage, or if someone is harassing you. The proper
response to such a behavior is to {\tt IGNORE} that person.
{\tt IGNORE} is a very powerful command, and can be used in many
ways. However, the basic usage of this tool is the following:

\noindent
{\tt /IGNORE [<nickname>|<user@host> [[-]<message type>]]}
\label{`cmdignore'}\marge{\tt IGNORE}\index{IGNORE@{\tt IGNORE}}
\\\indent Suppresses output from the given people from your
screen. {\tt IGNORE} can be set by nickname or by specifying a
userid@hostname format.  Wildcards may be used in all formats.
Output that can been ignored includes {\tt MSG}s, {\tt NOTICE}s, 
{\tt PUBLIC} messages, {\tt INVITES}, {\tt ALL} or {\tt NONE}.
Preceeding a type with a ``{\tt -}'' indicates removal of ignoring of
that type of message.

\begin{quote}\footnotesize\begin{verbatim}
/IGNORE *@cheshire.oxy.edu ALL
*** Ignoring ALL messages from *@CHESHIRE.OXY.EDU

/IGNORE
*** Ignorance List:
***     *@CHESHIRE.OXY.EDU:      ALL

/IGNORE *@cheshire.oxy.edu NONE
*** *@cheshire.oxy.edu removed from ignorance list
\end{verbatim}\end{quote}


\subsection{Channels and Public Conversations}

On \IRC, there are a lot of places where you can ``hang out'';
those places are called {\bf ``channels''}\footnote{Most of the
informations in this section can also be obtained by issuing
``{\tt /HELP CHANNEL}''}\index{channel}\label{defchannel}.
You can compare conversations on a channel to a conversation
among a group of people: you see/hear everything that is said, and you can 
reply to anything that's said. What you type is received by everyone who's 
willing to listen --- and everyone who is late will not hear
what is said before unless repeated by one of the ones who were there.
(who said ``real life'' ?)

All channels on \IRC{} have names: a ``{\tt \#}'' sign followed by some
kind of text-string, like ``{\tt \#C++}'' or ``{\tt \#Asians}''
or ``{\tt \#EU-Opers}''\index{channel!names}. Usually,
the name of the channel will indicate the type of conversation that's going on
in there. Don't count on it, though.

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l|c||}
\hline
\hline
Keyword & Action & Page \\
\hline
\tt LIST    & lists channels, number of users, topic & \pageref{`cmdlist'}\\
\tt NAMES   & shows the nicknames of users on each channel
                                                   & \pageref{`cmdnames'}\\
\tt JOIN    & sets your current channel (same as {\tt CHANNEL})
                                                   & \pageref{`cmdjoin'}\\
\tt WHO     & gives a listing of users             & \pageref{`cmdwho'}\\
\tt INVITE  & sends an invitation to another user  & \pageref{`cmdinvite'}\\
\tt LEAVE   & leaves a channel (same as {\tt PART}) & \pageref{`cmdleave'}\\
\tt KICK    & gets rid of someone on a channel     & \pageref{`cmdkick'}\\
\tt TOPIC   & changes the topic of the channel     & \pageref{`cmdtopic'}\\
\tt ME      & sends anything about you to a channel or {\tt QUERY}
                                                   & \pageref{`cmdme'}\\
\tt DESCRIBE & sends anything about you to a person or channel
                                                   & \pageref{`cmddescribe'}\\
\hline
\hline
\end{tabular}
\caption{Channel commands\index{command!channel}\index{channel!commands}}
\end{center}
\end{table}



Every channel has certain characteristics, called channel modes. These will
also be explained below. Recall the {\tt NAMES} and {\tt LIST} commands; 
they will show you the names of existing channels.

\noindent
{\tt /LIST [[<flags>] <channel mask>]}
\label{`cmdlist'}\marge{\tt LIST}\index{LIST@{\tt LIST}}
\\\indent Lists all current ``channels'', number of users, and topic.
The displayed list may be quite long, so you can limit it using flags.
``{\tt /LIST -MIN n}'' for instance removes channels with less than
{\tt n} users of the output.

\begin{quote}\footnotesize
Example:
\begin{verbatim}
/LIST -MIN 5
*** #aussies   5
*** #amiga     5      Daily Amiga Silence...join&enjoy
*** #hottub    21     Imagine sky, high above, in Caribbean blue..
*** #tuebingen 11     Happy Birthday CHUCK!!!
*** #Christian 6      Jesus is King of Kings!!!
*** #Twilight_ 15     The Oper Bar & Grill
*** #initgame  5      guess we need some willing players..
*** #Taiwan    8      Welcome, good friends.
*** #espanol   6      EMERGENCIA SE Necesitan Mujeres!!!
*** #sherwood  7      The enchanted Sherwood forest welcomes all...:)
*** #francais  6      on apprend le japonais (japanese welcome)
\end{verbatim}
\end{quote}

\bigskip
\noindent
{\tt /NAMES [[<flags>] <channel mask>]}
\label{`cmdnames'}\marge{\tt NAMES}\index{NAMES@{\tt NAMES}}
\\\indent Shows the nicknames of all users on each ``channel''\footnote{
These lists may be very long! Remember to filter them with ``{\tt -MIN n}''.}.

\begin{quote}\footnotesize\begin{verbatim}
/NAMES -MIN 5
Pub: #twilight> Mycroft @sojge scorpio @Troy @Avalon @Nap
   phone Merlinus LumberJak @tzoper 
Pub: #espanol   Cacique Bonjovi leopardo Carina Miguel Cisco r2 
Pub: #amiga     @gio @Radix @xterm @Mama @AmiBot 
Pub: #aussies   @Bleve @GrayElf @Insomniak @Morkeleb @titus 
Pub: #hottub    baby @Aldur KnightOrc @Toasty Gwydion
   @Belkira @Aiken Edge @Spockobot @Nada @ZBot @Aurik @anna
   @Redbaron @Katzen @esashi IceWolf @Eniigma @Digger @TheHeck
\end{verbatim}\end{quote}

\bigskip
To join in the conversation on a certain channel
you may use the {\tt /JOIN} command.

\noindent
{\tt /JOIN [<channel>]}\label{`cmdjoin'}\marge{\tt JOIN}\index{JOIN@{\tt JOIN}}
\\\indent Sets your current channel to the supplied channel.

\begin{quote}\footnotesize\begin{verbatim}
/JOIN #Twilight_Zone
*** Nap has joined channel #Twilight_Zone
*** Topic: The Gernsback Continuum
*** Users on #Twilight_Zone: Nap msa tober phone @julia @SirLance
   igh @Daemon @Avalon @Waftam @Trillian @tzoper
\end{verbatim}\end{quote}

The {\tt CHANNEL}\index{CHANNEL@{\tt CHANNEL}|see{{\tt JOIN}}}
command has the same effects. Note that if no
parameters are given, your current channel is displayed.

Upon entering a channel, you are given useful details about it:
list of users talking in that channel, topic\ldots{}
Joining a channel does not cause you to leave your previous
channel unless {\tt NOVICE} is set to {\tt on}.
See ``{\tt /HELP SET NOVICE}''\index{NOVICE@{\tt NOVICE}}.

\bigskip
Once in a channel, you may wish to get a detailed list of the people
\IRC'ing inside. That's where the {\tt WHO} command comes in handy:

\noindent
{\tt /WHO [<channel>|<wildcard expression>]}
\label{`cmdwho'}\marge{\tt WHO}\index{WHO@{\tt WHO}}
\\\indent Gives a listing of users.
``{\tt /WHO *}'' for the list of users in your current channel.

\begin{quote}\footnotesize\begin{verbatim}
/WHO #Twilight_Zone
Channel    Nickname  S   User@Host (Name)
#Twilight_ Nap       H*  pioch@poly.polytechnique.fr (Quidquid latine
   dictum sit, altum viditur.)
#Twilight_ msa       H   msa@tel1.tel.vtt.fi (Markku Savela)
#Twilight_ tober     H   ircuser@kragar.eff.org (tober@wizvax.methuen.ma.us)
#Twilight_ phone     H   mrgreen@munagin.ee.mu.OZ.AU
   (third row seats to the cure? WHO ME? nah.. *grin*)
#Twilight_ julia     G*@ julie@turing.acs.Virginia.EDU ( Future graduate of
   ACME Looniversity )
#Twilight_ SirLance  G*@ lancelot@tdsb-s.mais.hydro.qc.ca (Sir Lancelot)
#Twilight_ igh       G   igh@micom1.servers.unsw.EDU.AU (igh)
#Twilight_ Daemon    G*@ frechett@spot.Colorado.EDU (-=Runaway Daemon=-)
#Twilight_ Avalon    H*@ avalon@coombs.anu.edu.au (Avalon ...)
#Twilight_ Waftam    G*@ danielce@munagin.ee.mu.OZ.AU (Daniel Carosone)
#Twilight_ Trillian  G*@ hrose@rocza.eff.org (I turn to stone when you
   are gone)
#Twilight_ tzoper    H*@ tzoper@azure.acsu.buffalo.edu (/msg tzoper help)
\end{verbatim}\end{quote}

The first field is the current channel, then nickname, status, real
name (in internet {\tt user@host} form) and a small witty comment you can set
yourself with the environment variable {\tt IRCNAME}
(this will be detailed page~\pageref{`envvar'}).
Status indicates if a person is ``{\tt H}''ere or ``{\tt G}''one (see {\tt
AWAY}), if {\bf IRCop} (``{\tt *}'') or {\bf chanop} (``{\tt @}'').

\bigskip
It is also possible, when you are already on a channel, to ask someone to
join your channel. The command is called {\tt INVITE}. 

\noindent
{\tt /INVITE <nickname> [<channel>]}
\label{`cmdinvite'}\marge{\tt INVITE}\index{INVITE@{\tt INVITE}}
\\\indent Invites another user to a channel. If no channel is specified,
your current channel is used.

\begin{quote}\footnotesize\begin{verbatim}
/INVITE Nap
*** Inviting Nap to channel #Twilight_Zone
\end{verbatim}\end{quote}

If you receive an {\tt INVITE} message, you can type ``{\tt /JOIN
-INVITE}'' to join the channel to which you were last invited, or
simply ``{\tt /JOIN <channel>}''.

\bigskip
To leave a channel, just issue a {\tt LEAVE} command
({\tt PART}\index{PART@{\tt PART}|see{{\tt LEAVE}}} has the same effects):

\noindent
{\tt /LEAVE <channel>}
\label{`cmdleave'}\marge{\tt LEAVE}\index{LEAVE@{\tt LEAVE}}
\\\indent Leave a channel.

\begin{quote}\footnotesize\begin{verbatim}
/LEAVE #Twilight_Zone
*** Nap has left channel #Twilight_Zone
\end{verbatim}\end{quote}

\bigskip
Well, you guessed it, if there's a way to invite someone on a channel,
there's also the possibility to {\tt KICK} someone out of it, for
example if this person is behaving like a jerk, annoying people or
flooding the channel with unwanted information:

\noindent
{\tt /KICK [<channel>] <nickname>}
\label{`cmdkick'}\marge{\tt KICK}\index{KICK@{\tt KICK}}
\\\indent Kicks named user off a given channel. Only {\bf channel
operators} are privileged to use this command.

\begin{quote}\footnotesize\begin{verbatim}
/KICK #Twilight_Zone Target
*** Target has been kicked off channel #Twilight_Zone by Nap
\end{verbatim}\end{quote}


\bigskip
Channels have topics, that indicate the current topic of conversation. You
can change the topic on a channel with the {\tt TOPIC} command.

\noindent
{\tt /TOPIC [[<channel>] <topic for channel>]}
\label{`cmdtopic'}\marge{\tt TOPIC}\index{TOPIC@{\tt TOPIC}}
\\\indent Changes the topic for the named channel.

\begin{quote}\footnotesize\begin{verbatim}
/TOPIC The Silent Channel.
*** Nap has changed the topic on channel #EU-Opers to The Silent Channel.
\end{verbatim}\end{quote}

\bigskip
At times, you may want to send a description of what you are doing or
how you are feeling or just anything concerning you, to the current
channel or query. The correct convention is to include a period at the
end of the sentence.

\noindent
{\tt /ME <action description>}
\label{`cmdme'}\marge{\tt ME}\index{ME@{\tt ME}}
\\\indent tells the current channel or query about
what you're doing.\footnote{Note that the look of the result
depends on each client version, and might not be exactly the
same as in the examples shown here.}

\begin{quote}\footnotesize\begin{verbatim}
/ME opens up the fridge.
* Nap opens up the fridge.
\end{verbatim}

\bigskip
You can also use your own nickname as command, i.e.
you can type the line with a leading slash:

\begin{verbatim}
/Nap reaches out for the orange juice.
* Nap reaches out for the orange juice.
\end{verbatim}\end{quote}

\bigskip
The same goal can be achieved towards a specific nickname using

\noindent
{\tt /DESCRIBE <nickname>|<channel>
<action description>}
\label{`cmddescribe'}\marge{\footnotesize\tt DESCRIBE}
\index{DESCRIBE@{\tt DESCRIBE}}
\\\indent Sends anything concerning you to the
{\tt <nickname>} or {\tt <channel>} you pass as first argument.

\bigskip
These commands make use of {\tt CTCP}, a client-to-client protocol
crafted to perform specific actions, but not understood by all clients
(more about {\tt CTCP} page~\pageref{`cmdctcp'}).
If you get an error message, your description may not have arrived properly.


\subsection{Channel and User Modes}

Channels can have additional constraints, which can be set by the {\tt MODE}
command\footnote{Most of the informations in this section
can also be obtained by issuing ``{\tt /HELP MODE}''.}.
To understand this, recall that the first person to {\tt JOIN}
a channel effectively creates it and is initially ``in charge''
of the channel (``Channel Operator'' or ``{\bf chanop}'')
\index{channel!operator}\index{chanop}\index{operator!channel}.
He can subsequently add those constraints, make other people chanops
at leisure.

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l|c||}
\hline
\hline
Keyword & Action & Page \\
\hline
\tt MODE    & changes channel or user mode         & \pageref{`cmdmode'}\\
\hline
\hline
\end{tabular}
\caption{Mode commands\index{command!mode}\index{mode!commands}}
\end{center}
\end{table}

{\em Public}\index{public channel}
is the default mode for a channel. When someone is on a public
channel, he can be seen by all other users (if his own user mode
permits this).  Anyone can notice users on a public channel and join
such a conversation.

{\em Private}\index{private channel}
means that, although anyone can see members of such a
channel, you can't tell what channel they are on
unless you are already on that channel with them. They just appear as
``{\tt Prv: *}'' in {\tt LIST} or {\tt NAMES}.
Since the number of potential channels is in the billions,
this is quite some security --- all you give away is the
acknowledgement that you're {\bf IRC}'ing.

If you are on a {\em secret}\index{secret channel}
channel, someone who is not on the same channel
can't even see that you are there. Your name does not show
up in a {\tt LIST} of active users.  The only indication of your presence
is that, when entering \IRC, all new users are told that there are ``NNNN
users on XXX servers''. If someone checks on all users and finds less than NNNN
of them, he knows that other people are hiding on secret channels.  But a
secret channel user still cannot be found except by brute-force
checking through all channels, a hopeless proposition in the face of
the huge number of possible channel names. Security through obscurity
finally means something.

\bigskip
\noindent
{\tt /MODE <channel>|<nickname> [[+|-]<modechars> [<parameters>]]}
\label{`cmdmode'}\marge{\tt MODE}\index{MODE@{\tt MODE}}
\\\indent allows channel operators to change channel mode,
or any user to change their personal mode\footnote{Don't use this
command too often, it floods the net with worthless information.}.

\begin{quote}\footnotesize\begin{verbatim}
/MODE #Twilight_Zone +m
*** Mode change "+m" on channel #Twilight_Zone by Nap

/MODE Nap -i
*** Mode change "-i" for user Nap by poly.polytechnique.fr
\end{verbatim}

\bigskip
And this is how to give {\bf chanop} status to someone on the channel:

\begin{verbatim}
/MODE #Twilight_Zone +o sojge
*** Mode change "+o sojge" on channel #Twilight_Zone by Nap
\end{verbatim}\end{quote}

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l||}
\hline
\hline
    ModeChar   & Effects on channels\\
\hline
\tt b <person> & {\em ban} somebody. {\tt <person>} 
                                  in ``{\tt nick!user@host}'' form\\
\tt i          & channel is {\em invite-only}\\
\tt l <number> & channel is {\em limited}, {\tt <number>} users allowed max.\\
\tt m          & channel is {\em moderated} (only {\bf chanops} talk)\\
\tt n          & external {\tt MSG}s to the channel are {\em not} allowed\\
\tt o <nick>   & makes {\tt <nick>} a channel {\em operator}\\
\tt p          & channel is {\em private}\\
\tt s          & channel is {\em secret}\\
\tt t          & {\em topic} limited, only {\bf chanops} may change it\\
\hline
\hline
\end{tabular}
\caption{Channel modes\index{channel!modes}\index{mode!channel}}
\end{center}
\end{table}

\bigskip
A {\tt +} or {\tt -} sign determines whether the mode should be
added or deleted. Try typing ``{\tt /HELP MODE}'' to get further
information. Channels can be moderated (only {\bf chanops} can talk),
secret, private, with a limited number of users, anonymous,
invite-only, topic-limited, with a list of banned users\ldots

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l||}
\hline
\hline
    ModeChar   & Effects on nicknames\\
\hline
\tt i          & makes yourself {\em invisible} to anybody that does\\
               & not know the exact spelling of your nickname\\
\tt o          & \IRC{}-{\em operator} status\\
               & Can only be set by \IRC{}-ops with {\tt OPER}\\
\tt s          & receive {\em server} notices\\
\tt w          & receive {\em wallops} (abused and deprecated)\\
\hline
\hline
\end{tabular}
\caption{User modes\index{user modes}\index{mode!users}}
\end{center}
\end{table}

\bigskip
The {\tt MODE} command also allows you to modify your personal parameters,
your ``user mode''. You can check your usermode with the
command ``{\tt /MODE <YourNick>}'' or sometimes {\tt UMODE}.
Note that user mode {\tt +i} may be the default on some servers, in
order to protect privacy of users. This should
not be seen as a problem, since any user can change his personal mode
whatever defaults a server may set.\index{invisibility}

\subsection{Client to Client Protocol}


\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l|c||}
\hline
\hline
Keyword & Action & Page \\
\hline
\tt CTCP   & performs certain client specific actions & \pageref{`cmdctcp'}\\
\tt DCC    & handles direct connections to remote clients
                                                     & \pageref{`cmddcc'}\\
\tt DCC SEND  & initiates a file transfer	& \pageref{`cmddccsend'}\\
\tt DCC GET   & accepts a file transfer		& \pageref{`cmddccget'}\\
\tt DCC CLOSE & ends a {\tt DCC} connection or offer
						& \pageref{`cmddccclose'}\\
\tt DCC LIST  & shows current {\tt DCC} connections
						& \pageref{`cmddcclist'}\\
\tt DCC CHAT  & initiates a secure chat between 2 clients
						& \pageref{`cmddccchat'}\\
\hline
\hline
\end{tabular}
\caption{Client to Client commands\index{command!client to client}}
\end{center}
\end{table}

\noindent
{\tt /CTCP <nickname> <command> [<arguments>]}
\label{`cmdctcp'}\marge{\tt CTCP}\index{CTCP@{\tt CTCP}}
\\\indent allows you to perform certain client specific actions on the network.

\begin{quote}\footnotesize\begin{verbatim}
/CTCP Nap VERSION
*** CTCP VERSION reply from Nap: ircII 2.2 *IX :ircII 2.2, SL0 The one
   you thought you'd never see.
\end{verbatim}

\bigskip
This can be used to get information about how long a person has been idle:

\begin{verbatim}
/CTCP Nap FINGER
*** CTCP FINGER reply from Nap: PIOCH Nicolas - Nap on IRC, X90,
   (pioch@poly.polytechnique.fr) Idle 0 seconds
\end{verbatim}\end{quote}

There are many others {\tt CTCP} commands, and new ones are introduced
all the time. There is a mechanism for you to find out what you can
use: {\tt CTCP CLIENTINFO}. To find out about your own client
services, execute a {\tt CLIENTINFO} on yourself.

\begin{quote}\footnotesize\begin{verbatim}
/CTCP Nap CLIENTINFO
*** CTCP CLIENTINFO reply from Nap: SED VERSION CLIENTINFO USERINFO ERRMSG
   FINGER TIME ACTION DCC UTC PING :Use CLIENTINFO <COMMAND> to get more
   specific information
\end{verbatim}\end{quote}

If you're interested in this powerful {\tt CTCP} mechanism, have a
look in the various \ircII{} help files. ``{\tt /HELP CTCP}'' might tell
you more\ldots{} However the client-to-client protocol has a very
powerful feature: allowing two people to exchange files.

To send small text files, electronic {\tt mail} is probably the best
solution\footnote{Don't rely on the {\tt user@host} given by the
{\tt WHOIS} command to send mail. For people registered on NickServ,
you can ``{\tt /msg NickServ@Service.de WHOIS nick}'' to get their
E-mail address.}.
However, \ircII{} provides you a way to establish Direct
Client Connections (``{\tt DCC}'')
to perform functions like sending or receiving
files.

If NickA wants to send a file to NickB, then NickA should type
\\{\tt /DCC SEND NickB filename}

On NickB's screen will appear
\\{\tt *** DCC SEND (filename) request received from NickA}
\\If he wants to get the file, he just needs to type
``{\tt /DCC GET NickA filename}''

A few seconds later,
\\{\tt *** DCC GET connection with NickA established}
\\{\tt *** DCC GET filename connection to NickA completed}
\\will inform both users that data transfer has been successfully completed.

Here's a quick overview of the subject:

\bigskip
\noindent
{\tt /DCC <function> [<arguments>]}
\label{`cmddcc'}\marge{\tt DCC}   %\index{DCC@{\tt DCC}}
\\\indent Handles direct connections to remote clients.
The behavior of {\tt DCC} is determined by the specified {\tt <function>}.

\bigskip
\noindent
{\tt /DCC SEND <nickname> <filename>}
\label{`cmddccsend'}\marge{\scriptsize\tt DCC SEND}
\index{DCC!SEND@{\tt SEND}}
\\\indent Initiates a file transfer by direct client connection.

\bigskip
\noindent
{\tt /DCC GET <nickname> <filename>}
\label{`cmddccget'}\marge{\scriptsize\tt DCC GET}\index{DCC!GET@{\tt GET}}
\\\indent Accepts a file transfer by direct client connection.
The sender must first have offered the file with {\tt DCC SEND}.

\bigskip
\noindent
{\tt /DCC CLOSE <type> <nickname> [<arguments>]}
\label{`cmddccclose'}\marge{\scriptsize\tt DCC CLOSE}
\index{DCC!CLOSE@{\tt CLOSE}}
\\\indent Ends an unwanted DCC connection or offer.
The {\tt <type>}, {\tt <nickname>} and {\tt <arguments>}
must be the same as those shown by ``{\tt /DCC LIST}''.
If the arguments are not supplied, the oldest connection of
the specified type is closed.

\bigskip
\noindent
{\tt /DCC LIST}
\label{`cmddcclist'}\marge{\scriptsize\tt DCC LIST}\index{DCC!LIST@{\tt LIST}}
\\\indent Shows current {\tt DCC} connections with their types,
status and nicknames involved.

\bigskip
More details can be found in \ircII{} online help: try
``{\tt /HELP DCC}''\ldots{} for more information.

However, if someone asks you to send him a file, {\em don't\/} do it
unless you {\em exactly\/} know what you are doing. For instance,
{\bf never} send the password file of your system to anybody.
This could grant crackers illegal access to your machines, and put
you and your system administrator in much trouble.

\bigskip
{\tt DCC} also allows two clients to establish a direct client
connection for chat. This is a secure form of communication,
since messages will not be sent through the \IRC{} network.

\bigskip
\noindent
{\tt /DCC CHAT}
\label{`cmddccchat'}\marge{\scriptsize\tt DCC CHAT}\index{DCC!CHAT@{\tt CHAT}}
\\\indent initiates a direct client connection chat to the given
nick, who must respond with {\tt DCC CHAT}.
Once established, messages are sent over it with ``{\tt /MSG =NickName ...}''.


\subsection{Network Related Commands}

If you encounter any problem, contact your local 
{\bf IRC-Administrator}\index{IRC!administrator}\index{administrator}
or an {\bf IRC-Operator}\index{IRC!operator}\index{operator}.
An \IRC{}-Admin is a person who has access to all files concerning
{\tt ircd} (the server program).
An \IRC{}-Operator or ``\IRC{}-op'' is a person
who has privileges given to him by an \IRC{}-Admin
and tries to maintain a fast reliable \IRC{} network.
Information on how you can find out who he/she is, can be found below.

Each time you are prompted for a server name, remember you can supply
the nickname of someone being connected on that server instead. This
may be useful at times\ldots

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l|c||}
\hline
\hline
Keyword & Action & Page \\
\hline
\tt ADMIN   & displays information about a server  & \pageref{`cmdadmin'}\\
\tt LINKS   & shows servers on the \IRC{} network  & \pageref{`cmdlinks'}\\
\tt SERVER  & switches your primary server         & \pageref{`cmdserver'}\\
\tt MOTD    & displays the server message-of-the-day
                                                   & \pageref{`cmdmotd'}\\
\tt USERS   & prints users logged on the server machine
                                                   & \pageref{`cmdusers'}\\
\tt DATE    & shows server current date and time   & \pageref{`cmddate'}\\
\tt TIME    & shows server current date and time   & \pageref{`cmdtime'}\\
\tt LUSERS  & gives a brief listing of users, servers and operators
                                                   & \pageref{`cmdlusers'}\\
\tt TRACE   & shows the server connections of the given server
						   & \pageref{`cmdtrace'}\\
\tt STATS   & shows some irc server usage statistics
						   & \pageref{`cmdstats'}\\
\tt INFO    & shows useless information about \IRC{} & \pageref{`cmdinfo'}\\
\tt VERSION & shows client and server version number & \pageref{`cmdversion'}\\
\hline
\hline
\end{tabular}
\caption{Network related commands
\index{network commands}\index{command!network related}}
\end{center}
\end{table}

\bigskip
\noindent
{\tt /ADMIN [<server>]}
\label{`cmdadmin'}\marge{\tt ADMIN}\index{ADMIN@{\tt ADMIN}}
\\\indent Displays the administrative details about the given server.
If no server is supplied, the server you are connected to is used.

\begin{quote}\footnotesize\begin{verbatim}
/ADMIN
### Administrative info about poly.polytechnique.fr
### Ecole Polytechnique, Palaiseau, FRANCE
### IRC-Administrator Nicolas PIOCH (Nap@IRC)
### <pioch@poly.polytechnique.fr>
\end{verbatim}\end{quote}


\bigskip
\noindent
{\tt /LINKS [[<server>] <wildcard expression>]}
\label{`cmdlinks'}\marge{\tt LINKS}\index{LINKS@{\tt LINKS}}
\\\indent Shows a list of servers currently connected to the \IRC{} network.
If {\tt <wildcard expression>} is given, {\tt /LINKS}
asks the given {\tt <server>} for a list of servers matching
the given expression\footnote{This list can get very long!}.

\begin{quote}\footnotesize\begin{verbatim}
/LINKS *po*
*** nova.unix.portal.com  7 Cupertino California, USA
*** poe.acc.Virginia.EDU  6 University of Virginia 2.7.1f
*** polaris.utu.fi        9 University of Turku, Finland
*** polaris.ctr.columbia.edu 6 Columbia University, New York City
*** csd.postech.ac.kr     4 POSTECH Computer Science Dept.
*** cdc835.cdc.polimi.it  2 Polytechnic of Milan, Italy
*** poly.polytechnique.fr 0 Ecole Polytechnique, Paris, FRANCE !
\end{verbatim}\end{quote}

\bigskip
\noindent
{\tt /SERVER [<server>|<server number> [<port number>]]}
\label{`cmdserver'}\marge{\tt SERVER}\index{SERVER@{\tt SERVER}}
\\\indent Switches your primary server to the supplied {\tt <server>}
at the specified {\tt <port number>}. If no port nunmber is given, the
default port number is used (normally {\tt 6667}).

\begin{quote}\footnotesize\begin{verbatim}
/SERVER poly.polytechnique.fr 6667
*** Connecting to port 6667 of server poly.polytechnique.fr
*** Welcome to the Internet Relay Network, Nap
*** Your host is poly.polytechnique.fr, running version 2.7.2g.Nap+6(privacy)
*** This server was created Sat Jan 16 1993 at 12:16:10 MET
\end{verbatim}\end{quote}

Occasionally, you can switch servers faster than the \IRC{} network
can send out the information that you have left your previous server.
So don't be surprised if you are told your nickname is already in 
use\ldots{} just wait a moment and set it with {\tt /NICK} again.

\bigskip
\noindent
{\tt /MOTD [<server>]}\label{`cmdmotd'}\marge{\tt MOTD}\index{MOTD@{\tt MOTD}}
\\\indent Gives the Message-Of-The-Day for the named server.
If no server is given, your server is used.

\begin{quote}\footnotesize\begin{verbatim}
/MOTD
MOTD - poly.polytechnique.fr Message of the Day - 
MOTD -   _____________________________________
MOTD -  /\                                    \
MOTD -  \_|      Bienvenue sur le serveur      |
MOTD -    |         Internet Relay Chat        |
MOTD -    |  de l'Ecole Polytechnique, FRANCE  |_
MOTD -    |   _________________________________|__
MOTD -     \_/___________________________________/
MOTD - 
MOTD -        |    |    |      En cas de probleme,
MOTD -       )_)  )_)  )_)            tapez /admin
MOTD -      )___))___))___)\
MOTD -     )____)____)_____)\\       Nicolas PIOCH
MOTD -   _____|____|____|____\\\__     Nap sur IRC
MOTD - --\  Welcome on IRC !  /---------
MOTD -   ^^^^^^^^^^^^^^^^^^^^^ ^^^ ^^^
* End of /MOTD command.
\end{verbatim}\end{quote}

\bigskip
\noindent
{\tt /USERS [<server>]}
\label{`cmdusers'}\marge{\tt USERS}\index{USERS@{\tt USERS}}
\\\indent Shows the users logged into the machine where the
server is running\footnote{It's up to the server administrator to
implement this feature or not. It may not work on some machines.}.

\begin{quote}\footnotesize\begin{verbatim}
/USERS
*** UserID   Terminal  Host
*** pioch    ttyp9     rotule.polytechn
*** pioch    ttypc     rotule.polytechn
*** pioch    ttyq0     rotule.polytechn
*** pioch    ttyq1     rotule.polytechn
\end{verbatim}\end{quote}

\bigskip
\noindent
{\tt /DATE [<server>]}\label{`cmddate'}\marge{\tt DATE}\index{DATE@{\tt DATE}}
\\{\tt /TIME [<server>]}
\label{`cmdtime'}\marge{\tt TIME}\index{TIME@{\tt TIME}}
\\\indent Shows the current time of day and date.
If a server is specified, the time of day and date are reported from
that server. {\tt DATE} and {\tt TIME} are identical.

\begin{quote}\footnotesize\begin{verbatim}
/DATE
*** poly.polytechnique.fr Saturday June 20 1992 -- 02: 35 +01:00
\end{verbatim}\end{quote}

\bigskip
\noindent
{\tt /LUSERS [<wildcard expression> [<server>]]}
\label{`cmdlusers'}\marge{\tt LUSERS}\index{LUSERS@{\tt LUSERS}}
\\\indent Gives a brief listing of the number of servers, operators
and users matching the given {\tt <wildcard expression>},
as seen from the specified {\tt <server>}.

\begin{quote}\footnotesize\begin{verbatim}
/LUSERS
*** There are 1008 users and 291 invisible on 135 servers
*** 72 users have connection to the twilight zone
*** There are 458 channels.
*** I have 16 clients and 4 servers
*** 22 maximum connections, 19 clients
\end{verbatim}\end{quote}

\bigskip
\noindent
{\tt /TRACE [<server>]}
\label{`cmdtrace'}\marge{\tt TRACE}\index{TRACE@{\tt TRACE}}
\\\indent Shows the server connections of the given server.

\begin{quote}\footnotesize\begin{verbatim}
/TRACE
*** Serv Class[9] ==> 134S 1331C eff.org[192.88.144.3]
*** Serv Class[8] ==> 1S 6C Julia.Enst.FR
*** Serv Class[8] ==> 1S 6C Eurecom8.Cica.FR[192.70.34.208]
*** Serv Class[1] ==> 2S 0C athina.cc.uch.gr[147.52.80.102]
*** Serv Class[8] ==> 1S 5C dafne.mines.u-nancy.fr[192.70.66.2]
*** Serv Class[8] ==> 1S 0C cnam.cnam.fr
*** Class 0 Entries linked: 16
*** Class 9 Entries linked: 1
*** Class 8 Entries linked: 4
*** Class 1 Entries linked: 1
\end{verbatim}\end{quote}

\bigskip
\noindent
{\tt /STATS c|i|k|l|m|u|y [<server>]}
\label{`cmdstats'}\marge{\tt STATS}\index{STATS@{\tt STATS}}
\\\indent Shows some irc server usage statistics.

\begin{quote}\footnotesize\begin{verbatim}
/STATS u
*** Server Up 12 days, 12:28:44
\end{verbatim}\end{quote}

\bigskip
\noindent
{\tt /INFO [<server>]}\label{`cmdinfo'}\marge{\tt INFO}\index{INFO@{\tt INFO}}
\\\indent Shows information about the \IRC{} creators, debuggers,
slaves and a lot of other people who no longer have much to do with \IRC.

\bigskip
\noindent
{\tt /VERSION [<server>]}
\label{`cmdversion'}\marge{\tt VERSION}\index{VERSION@{\tt VERSION}}
\\\indent Shows the \ircII{} version number and the version number of the
server.

\begin{quote}\footnotesize\begin{verbatim}
/VERSION
*** Client: ircII 2.2
*** Server PoLy.PoLyTeChNiQuE.Fr: ircd 2.7.2g.Nap+6(privacy).
\end{verbatim}\end{quote}

\subsection{Quick Reference Panel}

\index{reference panel}\index{command!reference panel}
\begin{center}
\begin{tabular}{||c|l|c||}
\hline
\hline
Keyword & Action & Page \\
\hline
\tt !       & recalls previous commands for re-editing & \pageref{`cmdexcl'}\\
\tt ADMIN   & displays information about a server & \pageref{`cmdadmin'}\\
\tt AWAY    & leaves a message saying you're not paying attention
                                                     & \pageref{`cmdaway'}\\
\tt CLEAR   & puts some white space on your screen & \pageref{`cmdclear'}\\
\tt CTCP    & performs certain client specific actions & \pageref{`cmdctcp'}\\
\tt DATE    & shows server current date and time & \pageref{`cmddate'}\\
\tt DCC     & handles direct connections to remote clients
                                                     & \pageref{`cmddcc'}\\
\tt DESCRIBE & sends anything about you to a person or channel
                                                    & \pageref{`cmddescribe'}\\
\tt HELP    & prints help on the given command & \pageref{`cmdhelp'}\\
\tt HISTORY & displays the command history         & \pageref{`cmdhistory'}\\
\tt IGNORE  & removes output from specific people off your screen
                                                     & \pageref{`cmdignore'}\\
\tt INFO    & shows useless information about \IRC{} & \pageref{`cmdinfo'}\\
\tt INVITE  & sends an invitation to another user & \pageref{`cmdinvite'}\\
\tt JOIN    & sets your current channel & \pageref{`cmdjoin'}\\
\tt KICK    & gets rid of someone on a channel & \pageref{`cmdkick'}\\
\tt LASTLOG & lists the most recent messages       & \pageref{`cmdlastlog'}\\
\tt LEAVE   & leaves a channel & \pageref{`cmdleave'}\\
\tt LINKS   & shows servers on the \IRC{} network & \pageref{`cmdlinks'}\\
\tt LIST    & lists channels, number of users, topic & \pageref{`cmdlist'}\\
\tt LUSERS  & gives a brief listing of users, servers and operators
                                              & \pageref{`cmdlusers'}\\
\tt ME      & sends anything about you to a channel or {\tt QUERY}
                                                    & \pageref{`cmdme'}\\
\tt MODE    & changes channel mode & \pageref{`cmdmode'}\\
\tt MOTD    & displays the server message-of-the-day & \pageref{`cmdmotd'}\\
\tt MSG     & sends a private message & \pageref{`cmdmsg'}\\
\tt NAMES   & shows the nicknames of users on each channel
                                                     & \pageref{`cmdnames'}\\
\tt NICK    & changes your nickname & \pageref{`cmdnick'}\\
\tt NOTICE  & sends a private message & \pageref{`cmdnotice'}\\
\tt NOTIFY  & warns you of people logging in or out \IRC
                                                     & \pageref{`cmdnotify'}\\
\tt QUERY   & starts a private conversation & \pageref{`cmdquery'}\\
\tt QUIT    & exits your \IRC{} session & \pageref{`cmdquit'}\\
\tt SERVER  & switches your primary server & \pageref{`cmdserver'}\\
\tt STATS   & shows some irc server usage statistics
						   & \pageref{`cmdstats'}\\
\tt TIME    & shows server current date and time & \pageref{`cmdtime'}\\
\tt TOPIC   & changes the topic of the channel & \pageref{`cmdtopic'}\\
\tt TRACE   & shows the server connections of the given server
						   & \pageref{`cmdtrace'}\\
\tt USERS  & prints users logged on the server machine & \pageref{`cmdusers'}\\
\tt VERSION & shows client and server version number & \pageref{`cmdversion'}\\
\tt WHO     & gives a listing of users             & \pageref{`cmdwho'}\\
\tt WHOIS   & displays information about someone & \pageref{`cmdwhois'}\\
\tt WHOWAS  & displays information about someone who just left
                                                     & \pageref{`cmdwhowas'}\\
\hline
\hline
\end{tabular}
\end{center}

\subsection{Further into \ircII{} Wizardry\ldots}

Note: this part should be reserved for experienced \IRC'ers.

Because \ircII{} is not a simple client program, but
an Operating System~(!), its programming language is just as simple as
you could expect
(it is horrendous\footnote{{\sl When someone says, ``I want a
programming language in which I need only say what I wish done,''
give him a lollipop.} --- Alan Perlis, Epigrams on Programming (1982),
quoted by Donald E. Knuth in the \TeX{}book.}),
but if you want to get into it,
here's a little note for you\ldots

\bigskip
There are a few Unix environment variables you can set in your shell
configuration file, but you need to find out your shell name before that.
``{\tt echo \$SHELL}'' should give you a hint\ldots{}\index{shells}

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|c|l||}
\hline
\hline
Shell type & Shell name & Command\\
\hline
Bourne shells	& \tt sh   &
		{\tt \$ VARNAME=\verb|"|{}value\verb|"|; export VARNAME} \\
\cline{2-3}
		& \tt ksh  & {\tt \$ export VARNAME=\verb|"|{}value\verb|"|} \\
\cline{2-3}
		& \tt bash & {\tt \$ export VARNAME=\verb|"|{}value\verb|"|} \\
\hline
C-Shells	& \tt csh  & {\tt \% setenv VARNAME \verb|"|value\verb|"|} \\
\cline{2-3}
		& \tt tcsh & {\tt  > setenv VARNAME \verb|"|value\verb|"|} \\
\hline
\hline
\end{tabular}
\caption{Setting environment variables}
\end{center}
\end{table}

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l||}
\hline
\hline
Name & Effects\\
\hline
\tt HOME      &  where your home directory is\\
\tt IRCNAME   & any lunacy you want instead of your real name\\
              & (text that appears between parentheses in a {\tt WHOIS})\\
\tt IRCNICK   &  your default \IRC{} nickname\\
\tt IRCPATH   &  a directory path to {\tt LOAD} scripts\\
\tt IRCRC     &  a file to use instead of your {\tt \$HOME/.ircrc}\\
\tt IRCSERVER &  a default server list for \ircII\\
\tt TERM      &  your terminal type\\
\hline
\hline
\end{tabular}
\caption{Environments variables
\label{`envvar'}\index{environment variables}
\index{HOME@{\tt HOME}}\index{IRCNAME@{\tt IRCNAME}}
\index{IRCNICK@{\tt IRCNICK}}\index{IRCPATH@{\tt IRCPATH}}
\index{IRCRC@{\tt IRCRC}}\index{IRCSERVER@{\tt IRCSERVER}}
\index{TERM@{\tt TERM}}
}
\end{center}
\end{table}

\bigskip
The command character (usually ``{\tt /}'') is only necessary when you
type commands interactively, when you program things it is no more
needed, it used to be though. If you want to type to the channel from
within an {\tt ALIAS} or on {\tt BIND}ing, you have to use
{\tt SAY} or {\tt SEND}.

\begin{table}
\begin{center}
\begin{tabular}{||c|l||}
\hline
\hline
Keyword & Action \\
\hline
\tt \#       & same as {\tt COMMENT} except for the length\\
\tt @        & performs variable expressions\\
\tt ALIAS    & creates command aliases\\
\tt ASSIGN   & creates user variables (expandable with {\tt \$})\\
\tt BIND     & binds a keystroke sequence to a function\\
\tt CD       & changes \ircII{} working directory\\
\tt COMMENT  & does nothing, but very useful. Strange, uh ?\\
\tt ECHO     & displays all of its arguments\\
\tt EXEC     & allows you to start subprocesses\\
\tt FLUSH    & flushes all pending output from the server\\
\tt IF       & standard boolean expression checker\\
\tt LOAD     & loads an \ircII{} command script file\\
\tt ON       & sets up actions to occur when certain events happen\\
\tt REDIRECT & forwards the output from a command\\
\tt SAVE     & saves all \ircII{} settings into a file\\
\tt SAY      & same as sending text to a channel\\
\tt SEND     & same as sending text to a channel\\
\tt SET      & sets a variable to a given value.\\
\tt SLEEP    & suspends \ircII{} for a few seconds\\
\tt TYPE     & simulates keystrokes\\
\tt WAIT     & waits for all server output to finish\\
\tt WHILE    & another control command to make loops\\
\tt WINDOW   & lets you manipulate multiple ``windows'' in \ircII\\
\tt XECHO    & like {\tt ECHO}, but takes flag arguments\\
\hline
\hline
\end{tabular}
\caption{Advanced commands\index{command!advanced}\index{programming}
\index{\#@{\tt \#}}\index{"@@{\tt "@}}
\index{ALIAS@{\tt ALIAS}}\index{ASSIGN@{\tt ASSIGN}}\index{BIND@{\tt BIND}}
\index{CD@{\tt CD}}\index{COMMENT@{\tt COMMENT}}\index{ECHO@{\tt ECHO}}
\index{EXEC@{\tt EXEC}}\index{FLUSH@{\tt FLUSH}}\index{IF@{\tt IF}}
\index{LOAD@{\tt LOAD}}\index{ON@{\tt ON}}\index{REDIRECT@{\tt REDIRECT}}
\index{SAVE@{\tt SAVE}}\index{SAY@{\tt SAY}}\index{SEND@{\tt SEND}}
\index{SET@{\tt SET}}\index{SLEEP@{\tt SLEEP}}\index{TYPE@{\tt TYPE}}
\index{WAIT@{\tt WAIT}}\index{WHILE@{\tt WHILE}}\index{WINDOW@{\tt WINDOW}}
\index{XECHO@{\tt XECHO}}
}
\end{center}
\end{table}

The ``{\tt ;}'' has a special meaning in {\tt ALIAS}es, {\tt BIND}ings
and {\tt ON}s: it is treated
as command seperator, that means you can execute multiple commands in
a row separated by semicolons. The semicolons are not considered separators
when you use them interactively (to be able to type ``{\tt ;-)}'') and
within an \ircII{} script file. You can escape the meaning of
``{\tt ;}'' in an {\tt ALIAS} with ``{\tt \verb|\|;}''.

\bigskip
When you use \ircII{} on a (semi)regular basis, you will discover that every
time you start the program you will issue the same initialization sequence. 
If that is the case, I have good news for you: you don't have to do that
anymore~! \ircII{} will, at startup, load a file called ``{\tt .ircrc}''
(full path: {\tt \$HOME/.ircrc}).
\index{.ircrc@{\tt .ircrc}}\index{ircrc@{\tt ircrc}|see{{\tt .ircrc}}}
It will treat each line in that file as if you typed it
manually.

\begin{quote}\footnotesize
For example, if the content or your {\tt .ircrc} file is :
\begin{verbatim}
JOIN #Twilight_Zone
\end{verbatim}
then each time you will start \IRC, you will join this channel.
\end{quote}


\bigskip
Advanced commands may come in handy if you need them. Feel free to browse
in \ircII{} online help to find out more about them.
A few of them are probably worth learning\ldots

%\vfill\eject
\newpage

\subsection{Sample {\tt .ircrc}}

As a sample, here's part of my {\tt .ircrc} file.
Since ircII2.2, this file can be found in the "script" directory,
and loaded with "/load ircprimer".

{
\footnotesize\begin{verbatim}
# Sample .ircrc script, from the IRCprimer v1.1
# -------------------------------------------------------------------
#    IRCII sample configuration file  (~/.ircrc)  (Nicolas Pioch)
# -------------------------------------------------------------------
# The aim of this file is to shorten all useful commands to 1 letter.

set NOVICE off
set INPUT_ALIASES off
set AUTO_WHOWAS on
set SHOW_CHANNEL_NAMES on
set SHOW_AWAY_ONCE on

# Speeds up ircII display 2 times
set SCROLL_LINES 2

# Put Hack notices down under
on ^SERVER_NOTICE "\*\*\* Notice -- Hack: *" set status_user Hack: $4-

# Modified killpath script from YeggMan
ALIAS kpath ECHO ### Last received KILL for $nkp.path
@ nkp.path = [<empty>]
ALIAS nkp.msg ECHO ### $Z -- KILL by $1 for $0 $2-
ALIAS nkp.idx @ FUNCTION_RETURN = RINDEX(! $0) + 1
ALIAS nkp.srv @ FUNCTION_RETURN = INDEX(. $MID($nkp.idx($0) 512 $0))
ON ^SERVER_NOTICE "\*\*\* Notice -- Received KILL*" {
#	if (index(. $mid(${rindex(! $11) +1} 512 $11))
        IF ( nkp.srv($11) > -1 )
            { nkp.msg $7 $9 }
            { nkp.msg $7 $9 $12- }
        @ nkp.path = [$7-]
}

# Function to strip the less significant part of an internet hostname
# $userdomain(username@host.subdomain.dom)  returns username@subdomain.dom
# This eliminates the hostname which may change frequently
alias userdomain {
  @ function_return = LEFT($INDEX(@ $0) $0)##[@]##MID(${1+INDEX(. $0)} 99 $0)
}

# Who is that ?
on ^msg * echo *$0!$userdomain($userhost())* $1-

# /w [<nickname>]                        get info on someone
# /q [<nickname>]                        query someone
# /m  <nickname> <text>                  send a message
# /n  <nickname> <text>                  send a notice
# /r <text>                              reply to last message I got
# /a <text>                              followup on my last message

alias w whois
alias q query
alias m msg
alias n notice
alias r msg $,
alias a msg $.

# /j <channel>                           join a channel
# /l <channel>                           list people in a channel
# /ll                                    list in the current channel
# /i <nickname> [<channel>]              invite someone
# /hop                                   leave the current channel

alias j join
alias l who
alias ll who *
alias i invite
alias hop part $C

# /o <nickname> [<nickname> <nickname>]  give channel op status
# /d <nickname> [<nickname> <nickname>]  remove channel op status
# /k <nickname>                          kick someone
# /mo [+|-]<modechars>                   change current channel mode

alias o mode $C +ooo
alias d mode $C -ooo
alias k kick $C
alias mo mode $C

# the "wrong person" alias! /oops <nickname> to resend message to
alias oops {
        @ _whoops = [$B]
        msg $. Whooops ! Please ignore, that wasn't meant for you.
        msg $0 $_whoops
}

alias unset set -$*
alias unalias alias -$*
alias NickServ msg NickServ@Service.de
alias NoteServ msg NoteServ@Service.de

# -------------------------------------------------------------------
\end{verbatim}
}


\subsection{Writing Automatons}

An automaton (also called {\sl robot} or {\sl service\/}) is a program
that is connected to the \IRC{} network to provide services.
\index{automaton}\index{robot}\index{service}
Many people try to set that up with a few \ircII{}
commands like:

\begin{quote}\footnotesize\begin{verbatim}
on -MSG "% help" notice $0 This is LameBot 1.0
\end{verbatim}\end{quote}

However, you should know that setting up an automaton using
\ircII{} {\tt ON} facilities is quick and dirty, and should be
reserved for robots that rely on \ircII{} specific features
such as {\tt DCC} (file servers for instance). Writing a program
in C, perl or any decent programming language should take longer
at the beginning, but your efforts will be rewarded. You can even
download skeletons of such programs on some ftp sites that keep
\IRC{}-related stuff\footnote{Check the list in the
Frequently Asked Questions part.}.

Although most robots-writers believe they have created a ``smart thing'',
99 \% of the robots online happen to be a nuisance to the \IRC{} community,
because a few simple rules were not respected by their owners.
The main idea is that {\bf robots should neither be seen nor heard}:

\begin{itemize}
\item automatons should be clearly identified as such, having ``{\tt bot}'',
``{\tt serv}'' or ``{\tt srv}'' in their nickname.
\item they should use {\tt NOTICES} to communicate with the rest
of the world, and not reply to {\tt NOTICES} they get.
\item they should be able to always be killed\footnote{Craziness is
a frequent disease among robots\ldots}.
\item they should be able to be killed remotely by their owner via \IRC{}.
\item they should not give access to their owner's real files\footnote{
Bandits have already been able to crack people's account through
their robots.}.
\item they should not send messages to channels (unless the channel
is dedicated to that robot).
\item they should not flood channels with {\tt MODE} changes. Basically,
if you have such a command as:
\end{itemize}

\begin{quote}\footnotesize\begin{verbatim}
on -JOIN "Lamer #BotTub" mode #BotTub +o Lamer
\end{verbatim}\end{quote}

then you are wrong. Because this is what you will get:
\begin{quote}\footnotesize\begin{verbatim}
*** Lamer (clueless@where.the.hell) has joined channel #bottub
*** Mode change "+o Lamer" on channel #bottub by LameBot
*** Mode change "+o Lamer" on channel #bottub by StupidSrv
*** Mode change "+ooo Lamer Lamer Lamer" on channel #bottub by FloodServ
*** Mode change "+o Lamer" on channel #bottub by Dumbbot
\end{verbatim}\end{quote}

And this will get boring very soon, so don't be surprised if such robots
get banned from most channels. A good kludge is to wait until someone
asks explicitly the robot to be opped on a channel. This could be:

\begin{quote}\footnotesize\begin{verbatim}
on -MSG "Lamer op me on #BotTub" mode #BotTub +o Lamer
\end{verbatim}\end{quote}

If you don't respect rules 2 and 6 above, this may happen too:
\begin{quote}\footnotesize\begin{verbatim}
*** TalkBot (clueless@where.the.hell) has joined channel #bottub
<LameBot> Hi TalkBot!
<TalkBot> Hello LameBot! How are you?
*** Mode change "+o TalkBot" on channel #bottub by LameBot
<LameBot> Fine thanx.
<TalkBot> Thank you for the op, LameBot.
<LameBot> No problem, TalkBot.
*** Signoff: Talkbot (ircserver.irc.edu where.the.hell)
*** TalkBot (clueless@where.the.hell) has joined channel #bottub
*** Mode change "+o TalkBot" on channel #bottub by where.the.hell
*** Mode change "+o LameBot" on channel #bottub by TalkBot
*** Mode change "+o TalkBot" on channel #bottub by LameBot
<TalkBot> Thank you for the op, LameBot.
<LameBot> No problem, TalkBot.
...
\end{verbatim}\end{quote}

See ? Remember the golden rule:

\begin{center}
\begin{tabular}{|c|}
\hline
A smart bot won't act {\sl unless explicitly asked by someone to.}\\
\hline
\end{tabular}
\end{center}

%\vfill\eject
\newpage
\section{Frequently Asked Questions}

\subsection{How do I set up an \IRC{} client ?}

\index{FAQ}\index{Frequently Asked Questions}
Here is a list of FTP sites from which
you can download a client for your specific Operating System.

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|c|l||}
\hline
\hline
            & \tt cs.bu.edu                       & \tt /irc/clients\\
            & \tt ftp.acsu.buffalo.edu            & \tt /pub/irc\\
{\bf UNIX}  & \tt slopoke.mlb.semi.harris.com     & \tt /pub/irc\\
\ircII{}    & \tt plod.cbme.unsw.oz.au            & \tt /pub\\
            & \tt coombs.anu.edu.au               & \tt /pub/irc\\
            & \tt nic.funet.fi                    & \tt /pub/unix/irc/ircII\\
            & \tt ftp.informatik.tu-muenchen.de   & \tt /pub/net/irc\\
\hline
            & \tt cs.bu.edu                       & \tt /irc/clients/elisp\\
{\bf EMACS} & \tt slopoke.mlb.semi.harris.com     & \tt /pub/irc/emacs\\
elisp       & \tt nic.funet.fi                    & \tt /pub/unix/irc/Emacs\\
            & \tt lehtori.cc.tut.fi               & \tt /pub/irchat\\
            & \tt ftp.informatik.tu-muenchen.de   & \tt /pub/net/irc\\
\hline
            & \tt cs.bu.edu                       & \tt /irc/clients/vms\\
{\bf VMS}   & \tt coombs.anu.edu.au               & \tt /pub/irc/vms\\
            & \tt nic.funet.fi                    & \tt /pub/unix/irc/vms\\
            & \tt ftp.informatik.tu-muenchen.de   & \tt /pub/net/irc\\
\hline
            & \tt ftp.informatik.uni-oldenburg.de & \tt /pub/irc/rxirc\\
REXX        & \tt ftp.informatik.tu-muenchen.de   & \tt /pub/net/irc/VM\\
for {\bf VM} & \tt cs.bu.edu                      & \tt /irc/clients/rxirc\\
            & \tt coombs.anu.edu.au               & \tt /pub/irc/rxirc\\
            & \tt nic.funet.fi                    & \tt /pub/unix/irc/rxirc\\
\hline
%           & \tt freebie.engin.umich.edu        & \tt /pub/irc/clients/msdos\\
{\bf MSDOS} & \tt cs.bu.edu                       & \tt /irc/clients/msdos\\
            & \tt nic.funet.fi                    & \tt /pub/unix/irc/msdos\\
\hline
            & \tt cs.bu.edu                       & \tt /irc/clients\\
{\bf Macintosh} & \tt nic.funet.fi                & \tt /pub/unix/irc/mac\\
            & \tt sumex.stanford.edu              & \tt /info-mac/comm\\
            & \tt ftp.ira.uka.de                  & \tt /pub/systems/mac\\
\hline
\hline
\end{tabular}
\caption{FTP sites with \IRC{} clients\label{`ftpclients'}
\index{ftp sites}\index{client!source}\index{source}}
\end{center}
\end{table}

\bigskip
For Unix machines, you either compile\index{client!compilation}
\index{compilation} the source yourself,
or have someone else on your machine compile the source for you.
The current ``official'' \ircII{} release is version {\bf 2.2.1}.
This means that this is said to be quite bugfree.
(Hehe, you never know\ldots)
In addition to this ``official'' distribution, you may find
preversions of clients floating around, for people who like
to track down bugs and taste things to come. However, you should be
aware that those clients are currently been worked on,
and may not have full features working properly. Pick your choice~!

Here are the commands to type to setup an \ircII{} client:

\begin{quote}\begin{verbatim}
~ > ftp
ftp> verbose off
Verbose mode off.
ftp> open cs.bu.edu
Name (cs.bu.edu:yourname): ftp
Password:yourname@yourhost
ftp> cd irc/clients
ftp> bin
ftp> get ircII2.2.1.2.tar.Z "|zcat|tar xf -"
ftp> get ircII2.2.1help.tar.Z "|zcat|tar xf -"
ftp> quit
~ >
\end{verbatim}\end{quote}

Now you have to go into {\tt ircII2.2c} and read the files explaining
how to achieve a successful installation. Have a look at {\tt README}
and {\tt INSTALL}, edit {\tt config.h} to define
{\tt DEFAULT\_SERVER}, edit {\tt Makefile} to define {\tt INSTALL\_EXECUTABLE},
{\tt IRCII\_LIBRARY} and the C compiler you will be using, then type
``{\tt make install}'' and wait\ldots

If you can't set up a client on any local machine,
you can still use any {\tt telnet} client:

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|c|c||}
\hline
\hline
Area    & Command				     & {\tt login} name\\
\hline
America & \tt telnet bradenville.andrew.cmu.edu      & \\
        & \tt telnet chatsubo.nersc.gov              & \tt bbs\\
\hline
Asia    & \tt telnet cc.nsysu.edu.tw                 & \tt irc\\
\hline
Europe  & \tt telnet ircclient.itc.univie.ac.at 6668 & \\
	& \tt telnet irc.ibmpcug.co.uk 9999          & \\
\hline
\hline
\end{tabular}
\caption{Open {\tt telnet} \IRC{} clients
\index{telnet clients}\index{client!telnet}}
\end{center}
\end{table}

Please only use {\tt telnet} when you
have no other way of reaching \IRC{}, as this resource is quite limited.

\subsection{Which server do I connect to ?}
It's usually best to try and connect to one geographically
close, even though that may not be the best. You can always ask when you
get on \IRC{}. Here's a list of servers available for connection:

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|c|c||}
\hline
\hline
America & Canada    & \tt ug.cs.dal.ca\\ \cline{2-3}
        & USA       & \tt csa.bu.edu\\
        &           & \tt ucsu.colorado.edu\\
        &           & \tt irc.caltech.edu\\
\hline
Europe  & Finland   & \tt nic.funet.fi\\          \cline{2-3}
        & France    & \tt poly.polytechnique.fr\\ \cline{2-3}
        & Germany   & \tt noc.belwue.de\\         \cline{2-3}
        & Sweden    & \tt irc.nada.kth.se\\       \cline{2-3}
% Switzerland & \tt vesuv.unisg.ch\\
\hline
Oceania & Australia & \tt munagin.ee.mu.oz.au\\
\hline
\hline
\end{tabular}
\caption{Open \IRC{} servers\index{server!list}}
\end{center}
\end{table}

This is, by no means, a comprehensive list, but merely a start.
Connect to the closest of these servers and join the channel {\tt
\#Twilight\_Zone}\index{\#Twilight\_Zone@{\tt \#Twilight\_Zone}}
or, if you are in Europe,
{\tt \#EU-Opers}\index{\#Eu\_Opers@{\tt \#Eu\_Opers}}.
When you get there, immediately ask what you want. Don't say ``I have a
question'' because then everyone will ignore you until you say it a
few times, and then they'll jump down your throat and rip your lungs
out. No-one knows if he can answer your question until you ask it.

\subsection{What are good channels to try while using \IRC{} ?}

{\tt \#Hottub} and {\tt \#initgame} are almost always teeming with
people.  {\tt \#Hottub} is meant to simulate a hot tub, and {\tt
\#initgame} is non-stop game of ``inits'' (initials). Just join the
fun and find out\footnote{German users may try the channels
named after German university towns...}!
 
Many \IRC{} Operators are in {\tt \#Twilight\_Zone}, while European
Operators concentrate in {\tt \#EU-Opers}\ldots{} so if you join an
Operator channel and don't hear much talking, don't worry, it's not
because you joined, Operators don't talk much on such channels
anyways~!

\subsection{How do I get nifty effects with \ircII{} ?}

You can highlight messages you send using control chars: parts of text
surrounded by control-b ({\tt \^{}B}) will appear in video reverse to most
\ircII{} users for instance. However the appearance of such effects relies
on the terminal abilities of the user you're writing to.

In some cases keys are already bound to something else. For instance,
{\tt \^{}B} is normally bound to {\tt BACKWARD\_CHARACTER}, so you will
need to define a ``quote-character'' key: just enter
``{\tt /BIND \^{}W QUOTE\_CHARACTER}'' then
``{\tt /BIND \^{}W\^{}B SELF\_INSERT}'' and it may work\ldots

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l||}
\hline
\hline
{\tt \^{}B}  & Video reverse\\
{\tt \^{}V}  & Underline\\
{\tt \^{}\_} & Bold\\
\hline
\hline
\end{tabular}
\caption{Highlighting \ircII{} output
\index{highlighting}\index{video reverse}\index{underline}\index{bold}}
\end{center}
\end{table}

\subsection{What if someone tells me to type something cryptic ?}

Never type anything anyone tells you to without knowing what it is.
\index{cryptography}
There is a problem with typing a certain command with the \ircII{}
client that gives anyone immediate control of your client (and thus
can alter your account environment also).  Look in \ircII{} online
help each time you can.

\subsection{I get strange characters on my screen, what are they ?}

\IRC{} has quite a lot of people from Scandinavian countries,
{\tt \{\}|[]\verb|\|} are letters in their alphabet\footnote{\IRC{}
is supposed to support the ISO Latin-1 8-bit character set, but
your client must be able to display them\ldots}. This has been
explained on \IRC{} about a thousand and one times, so read the
following, do not ask it on \IRC{}\ldots

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|c|c|c|c|c|c|c||}
   \cline{1-2} \cline{4-5} \cline{7-8} 
{\tt \{} & \"a & & {\tt [} & \"A & & {\tt |} & \"o \o
\\ \cline{1-2} \cline{4-5} \cline{7-8} 
{\tt \}} & \aa & & {\tt ]} & \AA & & {\tt \verb|\|} & \"O \O
\\ \cline{1-2} \cline{4-5} \cline{7-8} 
\end{tabular}
\caption{Nordic countries character translations
\index{character translations}\index{translations}}
\end{center}
\end{table}

In addition to that, Japanese \IRC'ers use special ANSI escape control
sequences to transmit characters of their Kanji alphabet. This may
also look funny if you get some of it\ldots{} Here's a sample:
``{\tt [\$B\$?\$K\$7[\$B\$;\$m\$K\#[\$B\$\_\$B}'' (nice, uh ?)


\subsection{What about NickServ ?}

To quote from NickServ's help text, NickServ's purpose is to
help avoiding nickname confusions on \IRC.\index{NickServ}\index{Service.de}
There is no such thing as ``nickname ownership''\index{nickname!ownership},
however NickServ sends a warning to anyone else
who signs on with your nickname. If you don't use \IRC{} for 10 weeks,
your nickname registration expires for reuse. 

Only a NickServ operator can change your NickServ password.
To find out which NickServ operators are online, send

\begin{center}
{\tt /MSG NickServ@service.de OPERWHO}
\end{center}

Nicknames with a ``{\tt *}'' next to them are online at the time.

\subsection{I'm been flooded or harassed by a jerk. Help~!}

If somebody is behaving like a jerk on \IRC, like dumping to a
channel Mb's of garbage, then he should be {\tt KICK}'ed and
eventually banned from the channel (see ``{\tt /HELP MODE}'' for details).
\index{jerk}\index{dumping}\index{harassment}

If it's a matter of personnal harassment, then you should set a proper
{\tt IGNORE} on that person (preferably on his {\tt userid@hostname}).
Remember you can use wildcards expressions for {\tt IGNORE}. More
about this page~\pageref{`cmdignore'}.

\subsection{How do I get rid of a ghosted \IRC{} session ?}

Sometimes you may have a ``ghosted'' \IRC{} session,\index{ghost}
a process still running on your machine you would like to get rid of, but
can't control anymore to issue a {\tt QUIT} command.
Going back to a unix shell, try listing your processes:\index{ps@{\tt ps}}
(``{\tt ps~-ux}'' or ``{\tt ps~-f}'' depending on your system)

\begin{verbatim}
poly ~ > ps -ux
USER       PID %CPU %MEM   SZ  RSS TT STAT   TIME COMMAND
pioch    10410  1.4  0.2  839  402 pf S      0:00 /usr/local/bin/emacs
pioch    25441  0.6  0.9 2888 1908 ?  S      0:32 xterm -ls
pioch    25444  0.4  0.2  550  341 pf S      0:17 -tcsh (tcsh)
pioch    10404  0.1  0.3  897  624 pf S      0:00 irisVx 5 4 10403
pioch    25634  0.0  0.3 1022  678 p6 S      0:22 irc
pioch    25451  0.0  0.2  953  326 ?  S      0:07 xmailbox
pioch    25452  0.0  0.1  386  147 ?  S      0:00 xdaliclock
pioch    25459  0.0  0.3 1109  617 ?  S      0:02 xman
pioch    10403  0.0  0.1  574  124 pf I      0:00 mapleV
pioch    10423  0.0  0.2  614  459 pf R      0:00 /bin/ps -ux
\end{verbatim}

Locate the line about your \IRC{} lost session ({\tt irc} should appear
in the {\tt COMMAND} field of the line), and its {\tt PID} (process
number, second field of the line here). In this example the {\tt PID}
is {\tt 25634}, as shown here:

\begin{verbatim}
USER       PID %CPU %MEM   SZ  RSS TT STAT   TIME COMMAND
pioch    25634  0.0  0.3 1022  678 p6 S      0:22 irc
\end{verbatim}

All you need to type then is ``{\tt kill -KILL}'' or
``{\tt kill -9}'' immediately followed
by the {\tt PID} found above: ``{\tt kill -KILL 25634}'' here.
\index{kill@{\tt kill}}

You can get more details about the commands involved here in the
standard unix manual (``{\tt man 1 ps}'' or ``{\tt man 1 kill}'').

If your machine crashed, and your nick is still in use on the \IRC{}
network, you'll have to wait 4 or 5 minutes for your server to
recognize the fact. Getting an Operator to kill the ghost is almost
never necessary, just sign on as another nickname and wait for the
``{\tt Ping timeout}'' or ``{\tt Bad link}'' message, then you can change
your nick back\ldots{}\index{Bad link}\index{Ping timeout}

\subsection{About {\tt KILL} usage}

{\tt KILL}\index{KILL@{\tt KILL}}
is a command restricted to \IRC{}-Operators to deal with
protocol errors heavily reducing the \IRC{} network functionality.
It's to be used with extreme caution, if at all.

\begin{center}
\begin{tabular}{|c|}
\hline
{\tt KILL} should never interfere with channel-operator status.\\
\hline
\end{tabular}
\end{center}

If you op someone on a channel, you take the consequences.
If someone joins \#whatever, you op them, then they kick
everyone and lock the channel with some
``{\tt Mode change +ib *!*@*}'',
then suffer it: it's your fault, don't go whining to an \IRC{}-Op to fix it.
If a channel is locked, you should start a new one.
\index{locked channel}\index{channel!locked}

Effective methods to deal with obnoxious people are {\tt IGNORE}, {\tt KICK}
and various {\tt MODE}'s on channels, such as {\tt +i} and {\tt +b}.

If you have been abusively killed by an \IRC{}-Operator,\index{abusive KILL}
abusing his power to gain illegal channel-operator status for instance,
{\bf yell}!
Mail a log to his server \IRC{}-Administrator (see {\tt ADMIN}),
join {\tt \#Twilight\_Zone}, or {\tt \#Eu-Opers} for European-related
problems, and explain what happened.

\subsection{Where can I find more ?}

Should your question not be listed above, you may want to check the
``Frequently Unasked Questions''\index{Frequently Unasked Questions}
(FUQ) list, which will be shipping
real soon now, featuring replies to:

\begin{quote}
{\tt <lamer1> Are there any good FTP sites~?\footnote{~127.0.0.1,
but you know that already\ldots}}\\
{\tt <lamer2> How do I join a channel ?}\\
{\tt <lamer3> How do I become an IRCop ?}
\end{quote}

\bigskip
If you have access to {\tt Usenet News}, (usually through a program
called {\tt rn}, {\tt nn}, {\tt trn} or {\tt xrn}), you may want to join
{\tt alt.irc} debates, flamings and whinings.\index{Usenet}\index{alt.irc}

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|l||}
\hline
\hline
E-mail for subscriptions          & What's been talked about\\
\hline
\tt operlist-request@eff.org      & Server code, routing and protocol\\
\tt ircd-three-request@eff.org    & {\tt ircd} 3.0 protocol\\
\tt listserv@grasp1.univ-lyon1.fr & European \IRC{}-Operators mailing list\\
\tt dl2p+@andrew.cmu.edu          & \ircII{} mailing list\\
\tt vmsirc-request@vax1.elon.edu  & VMS \IRC{} mailing list\\
\tt irchat-request@cc.tut.fi      & {\tt irchat} mailing list\\
\hline
\hline
\end{tabular}
\caption{\IRC{} related mailing lists
\index{mailing lists}\index{operlist}\index{ircd-three}\index{irc-eu}}
\end{center}
\end{table}

\bigskip
You can also join various \IRC{} related mailing lists.
``{\bf Operlist}'' discusses current (and past) server
code, routing, and protocol. Mail {\tt operlist-request@eff.org}
to join. Another mailing list, {\tt ircd-three@eff.org}
exists to discuss protocol revisions for the 3.0
release of {\tt ircd}, currently in planning. Mail
{\tt ircd-three-request@eff.org} to be added to that.
There are also low-traffic mailing-lists for \ircII{}, {\tt vmsirc} and
{\tt irchat} clients.


%\vfill\eject
\newpage

\section{Administrativia}

\subsection{Revision history}

This is version 1.1 of this paper. Version 1.0 of the
\IRC{}primer was released in postscript form in June 1992
because I was sick of people asking for an \IRC{} or \ircII{} manual
(and it was a good way to learn \LaTeX{}~!). During summer 1992
Owe Rasmussen did a very nice text conversion of the paper.
Due to the support I received along with many helpful remarks a new
postscript version is finally
completed\footnote{Special thanks to Olaf Titz~!}, along with
Owe's plain ascii conversion.

The \IRC{}primer is available in 3 formats:
\begin{itemize}
\item {\tt IRCprimer.ps.Z}: Postscript version
\item {\tt IRCprimer.txt}: Plain text version
\item {\tt IRCprimer.tex.Z}: \LaTeX{} source code.
\end{itemize}

\subsection{Release sites for the \IRC{}primer}

The latest version of the \IRC{}primer can be found on the following
ftp sites, thanks to their admins:

\begin{table}[htb]
\begin{center}
\begin{tabular}{||c|c|l||}
\hline
\hline
Zone & {\tt ftp} site & Location \\
\hline
America & \tt cs.bu.edu		& \tt /irc/support\\
Europe  & \tt nic.funet.fi	& \tt /pub/unix/irc\\
Oceania & \tt coombs.anu.edu.au & \tt /pub/irc/docs\\
\hline
\hline
\end{tabular}
\caption{\IRC{}primer release sites\index{IRCprimer!release sites}}
\end{center}
\end{table}

\bigskip
Here's how to get the latest \IRC{}primer postscript version for example:

\begin{quote}\begin{verbatim}
~ > ftp
ftp> verbose off
Verbose mode off.
ftp> open cs.bu.edu
Name (cs.bu.edu:yourname): ftp
Password:yourname@yourhost
ftp> cd irc/support
ftp> bin
ftp> get IRCprimer.ps.Z
ftp> quit
~ > uncompress IRCprimer.ps.Z
~ >
\end{verbatim}\end{quote}


\subsection{Copyright \copyright{} 1993 Nicolas PIOCH}

This manual is free; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.\index{copyright notice}\index{IRCprimer!copyright}

This manual is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this manual; if not, write to the
\index{GNU}\index{Free Software Foundation}\index{license}

\begin{center}
\begin{tabular}{c}
\large Free Software Foundation, Inc.,\\
\large 675 Mass Ave,\\
\large Cambridge, MA 02139, USA.\\
\end{tabular}
\end{center}

%\vfill\eject
\newpage
\subsection{Credits}

Interesting informations contained in this paper are due to the work
of various people interested in \IRC{} improvement; I'm only responsible
for omissions and mistakes~{\tt :-)} It's impossible to
give here a full list, however special thanx are due to (in
analphabetical order):\index{credits}
\index{ckd}\index{Zolf}\index{Avalon}\index{Wumpus}\index{Trillian}
\index{Daemon}\index{WiZ}\index{Ernie}\index{poptart}\index{thecure}
\index{phone}\index{Mauri}\index{BigCheese}\index{praetorius}\index{Gnarfer}
\index{rvl}\index{Troy}

\begin{tabular}{||l|c|l||}
\hline
\hline
Real life (uh ?) & \IRC & E-mail\\
\hline
Christopher Davis    & ckd        & $<${\tt ckd@eff.org}$>$\\
Christophe Wolfhugel & Zolf       & $<${\tt wolf@grasp.insa-lyon.fr}$>$\\
Darren Reed          & Avalon     & $<${\tt avalon@coombs.anu.edu.au}$>$\\
Greg Lindahl,        & Wumpus     & $<${\tt gl8f@virginia.edu}$>$\\
Helen Rose           & Trillian   & $<${\tt hrose@eff.org}$>$\\
Ian Frechette        & Daemon     & $<${\tt frechett@spot.colorado.edu}$>$\\
Jarkko Oikarinen     & WiZ        & $<${\tt jto@tolsun.oulu.fi}$>$\\
Jeff Trim            &            & $<${\tt jtrim@orion.cair.du.edu}$>$\\
Jonathon E. Tidswell & Ernie      & $<${\tt jont@cs.su.oz.au}$>$\\
Karl Kleinpaste      & poptart    & $<${\tt Karl\_Kleinpaste@cs.cmu.edu}$>$\\
Matthew Alderson     & thecure    & $<${\tt thecure@mullian.ee.mu.oz.au}$>$\\
Matthew Green        & phone      & $<${\tt phone@coombs.anu.edu.au}$>$\\
Mauri Haikola        & Mauri      & $<${\tt mjh@stekt.oulu.fi}$>$\\
Michael Sandrof      & BigCheese  & $<${\tt ms5n+@andrew.cmu.edu}$>$\\
Olaf Titz            & praetorius & $<${\tt s\_titz@ira.uka.de}$>$\\
Ove Ruben R. Olsen   & Gnarfer    & $<${\tt rubenro@viggo.blh.no}$>$\\
Ronald van Loon      & rvl        & $<${\tt rvloon@cv.ruu.nl}$>$\\
Troy Rollo           & Troy       & $<${\tt troy@cbme.unsw.edu.au}$>$\\
\hline
\hline
\end{tabular}

\bigskip
Feel free to bug me with your comments, I hope I'll have enough time
to reply.

\vskip 3cm
\begin{flushright}
Paris, \today,
\\Ecole Polytechnique,\index{Ecole Polytechnique}
\\~
\\~
\\Nicolas PIOCH.
\end{flushright}

\printindex

\typeout{------------------------------------------------------------------}
\typeout{ Remember to run 'makeindex IRCprimer.idx' to generate the index,}
\typeout{ then re-run 'latex IRCprimer.tex' until labels are correct...}
\typeout{---------------------------------------------------- Nicolas PIOCH}

\end{document}

