merge
This commit is contained in:
commit
8e658df4fe
2 changed files with 53 additions and 30 deletions
32
rc/bin/ircrc
32
rc/bin/ircrc
|
@ -38,9 +38,18 @@ fn work {
|
|||
title
|
||||
echo JOIN $target > $netdir/data
|
||||
}
|
||||
while (cmd=`{read}) {
|
||||
msg=()
|
||||
out=()
|
||||
if(~ $target *,*)
|
||||
target = `{echo $target | awk -F',' '{print $NF}'}
|
||||
while () {
|
||||
cmd=`{read}
|
||||
if(! ~ `{cat $netdir/status} *Established*)
|
||||
exit
|
||||
if(~ $#cmd 0) {
|
||||
echo QUIT : Leaving... > $netdir/data
|
||||
exit
|
||||
}
|
||||
msg=()
|
||||
out=()
|
||||
switch ($cmd(1)) {
|
||||
case /!
|
||||
eval `{mshift $cmd} | while(rc=`{read})echo 'PRIVMSG '^$target^' :' $rc | tee $netdir/data
|
||||
|
@ -61,6 +70,8 @@ fn work {
|
|||
target=$cmd(2)
|
||||
title
|
||||
msg = (JOIN `{mshift $cmd})
|
||||
if(~ $target *,*)
|
||||
target = `{echo $target | awk -F',' '{print $NF}'}
|
||||
}
|
||||
case /l
|
||||
msg = (LIST `{mshift $cmd})
|
||||
|
@ -91,6 +102,8 @@ fn work {
|
|||
case /x
|
||||
echo QUIT : Leaving... > $netdir/data
|
||||
exit
|
||||
case /*
|
||||
echo unknown command
|
||||
case *
|
||||
msg = 'PRIVMSG '^$target^' :'^$"cmd
|
||||
out = '('^$target^') ⇐ '^$"cmd
|
||||
|
@ -148,19 +161,22 @@ fn privmsg {
|
|||
s = s ":" $i;
|
||||
printf("%s\n", s);
|
||||
}'
|
||||
|
||||
}
|
||||
|
||||
fn pretty {
|
||||
while (~ `{cat $netdir/status} *Established*) {
|
||||
line=`{read}
|
||||
if(! line=`{read}) {
|
||||
echo Connection lost
|
||||
date
|
||||
exit
|
||||
}
|
||||
switch ($line) {
|
||||
case *PRIVMSG*
|
||||
line = `{echo -n $line | privmsg}
|
||||
case *JOIN* *QUIT* *PART* *NICK*
|
||||
line = `{echo -n $line | misc}
|
||||
case *NOTICE*
|
||||
line = `{echo -n $line | notice}
|
||||
case *PRIVMSG*
|
||||
line = `{echo -n $line | privmsg}
|
||||
case *PING*
|
||||
echo -n $line | sed 's/PING/PONG/' > $netdir/data
|
||||
line = ()
|
||||
|
@ -235,6 +251,6 @@ if(~ $#userpass 2 && ~ $nick $user) {
|
|||
netdir=`{basename -d $clonefile} ^ / ^ `{cat /fd/4}
|
||||
echo connect $ip!$port >$netdir/ctl || exit 'cannot connect'
|
||||
echo connected to tcp!$ip!$port on $netdir
|
||||
cat $netdir/data | tr -d '
' | pretty &
|
||||
cat $netdir/data | tr -d '\x2\xd\x1f' | pretty &
|
||||
work
|
||||
}
|
||||
|
|
|
@ -25,15 +25,15 @@ ircrc \- internet relay chat client
|
|||
.SH DESCRIPTION
|
||||
.I Ircrc
|
||||
is an IRC client.
|
||||
Messages are sent from stdin and received from stdout.
|
||||
Messages are sent from standard input and
|
||||
received from standard output.
|
||||
The default server is
|
||||
.BR irc.freenode.net .
|
||||
.I Ircrc
|
||||
expands
|
||||
The arguments
|
||||
.B bitlbee
|
||||
and
|
||||
.B oftc
|
||||
to
|
||||
are expanded to
|
||||
.B im.bitlbee.org
|
||||
and
|
||||
.BR irc.oftc.net ,
|
||||
|
@ -49,15 +49,23 @@ Change the default name
|
|||
.RB ( <nil> ).
|
||||
.TP
|
||||
.BI -t " target
|
||||
Set and join the target channel
|
||||
(multiple channels may be separated by commas).
|
||||
Set and join the target channel.
|
||||
If multiple channels are specified,
|
||||
only the last one will be set as
|
||||
.IR target .
|
||||
Messages are sent to
|
||||
.I target
|
||||
unless they are commands.
|
||||
.TP
|
||||
.BI -n " nick
|
||||
Change the default nickname
|
||||
.RB ( $user ).
|
||||
.SS Commands
|
||||
.I Ircrc
|
||||
understands the following commands:
|
||||
commands begin with a slash.
|
||||
Unrecognized commands result in an error message
|
||||
and send nothing to the server.
|
||||
The commands are:
|
||||
.TP
|
||||
.BI /! " cmd
|
||||
Send the output of the shell command
|
||||
|
@ -110,11 +118,11 @@ Send the raw IRC command
|
|||
to the server.
|
||||
.TP
|
||||
.BI /t " target
|
||||
Set the current target.
|
||||
Messages are sent to
|
||||
Set
|
||||
.IR target .
|
||||
If
|
||||
.I target
|
||||
unless they are commands.
|
||||
If the current target is more than one channel,
|
||||
is more than one channel,
|
||||
any messages are sent to all of them.
|
||||
.TP
|
||||
.B /u
|
||||
|
@ -128,8 +136,8 @@ command.
|
|||
.B /x
|
||||
.B QUIT
|
||||
command.
|
||||
Control-D also sends this command.
|
||||
.PP
|
||||
Anything else is sent as a message to the current target.
|
||||
See RFC 1459 and RFC 2812 for detailed information about
|
||||
IRC commands.
|
||||
.SH EXAMPLES
|
||||
|
@ -147,9 +155,7 @@ as a different user:
|
|||
% ircrc -r glenda -n glenda irc.oftc.net
|
||||
.EE
|
||||
.PP
|
||||
Join two channels on login
|
||||
(remember to set the target to a single channel,
|
||||
otherwise messages are sent to both):
|
||||
Join two channels on login:
|
||||
.IP
|
||||
.EX
|
||||
% ircrc -t '#cat-v,#plan9'
|
||||
|
@ -162,12 +168,13 @@ otherwise messages are sent to both):
|
|||
.B http://tools.ietf.org/html/rfc2812
|
||||
.SH BUGS
|
||||
.PP
|
||||
.I Ircrc
|
||||
calls the inexistent
|
||||
.IR auth/userpasswd .
|
||||
.PP
|
||||
Some of
|
||||
.BR irc.freenode.net 's
|
||||
welcome messages contain control characters.
|
||||
.I Auth/userpasswd
|
||||
(which is called by
|
||||
.IR ircrc )
|
||||
isn't compiled by default.
|
||||
.PP
|
||||
Some fonts do not support the nickname delimiters.
|
||||
.PP
|
||||
If the connection is lost,
|
||||
.I ircrc
|
||||
waits for input before exiting.
|
||||
|
|
Loading…
Reference in a new issue