git: 9front

Download patch

ref: 1a95889de0589ab9ceba83a2b5ac76a12d6b2f81
parent: 3145dbcd0444dbc654cd85602c490a31a12f5147
parent: 629e6ab133bb24d29546944b60af1f643a503f8c
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Wed Jan 30 01:30:07 EST 2013

merge

--- a/rc/bin/ircrc
+++ b/rc/bin/ircrc
@@ -38,9 +38,18 @@
 		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 @@
 				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 @@
 		case /x
 			echo  QUIT : Leaving... > $netdir/data
 			exit
+		case /*
+			echo unknown command
 		case *
 			msg = 'PRIVMSG '^$target^' :'^$"cmd
 			out = '('^$target^')	⇐	'^$"cmd
@@ -148,19 +161,22 @@
 			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 @@
 	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
 }
--- a/sys/man/1/ircrc
+++ b/sys/man/1/ircrc
@@ -25,15 +25,15 @@
 .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,8 +49,13 @@
 .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
@@ -57,7 +62,10 @@
 .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 @@
 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 @@
 .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 @@
 % 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 @@
 .B http://tools.ietf.org/html/rfc2812
 .SH BUGS
 .PP
-.I Ircrc
-calls the inexistent
-.IR auth/userpasswd .
+.I Auth/userpasswd
+(which is called by
+.IR ircrc )
+isn't compiled by default.
 .PP
-Some of
-.BR irc.freenode.net 's
-welcome messages contain control characters.
-.PP
 Some fonts do not support the nickname delimiters.
+.PP
+If the connection is lost,
+.I ircrc
+waits for input before exiting.
--