shithub: riscv

Download patch

ref: 7ec0ad09900f6c4d7a6e739aa7a9f33304f7ccf3
parent: 6c91d99ce29f8cb6c47c0c535c9162f248f1fdb1
author: stanley lieber <[email protected]>
date: Mon Sep 19 18:53:01 EDT 2011

add ircrc

--- a/adm/timezone/local
+++ b/adm/timezone/local
@@ -1,4 +1,4 @@
-EST -18000 EDT -14400
+CST -21600 CDT -18000
    9943200   25664400   41392800   57718800   73447200   89168400
  104896800  120618000  126669600  152067600  162352800  183517200
  199245600  215571600  230695200  247021200  262749600  278470800
--- /dev/null
+++ b/rc/bin/ircrc
@@ -1,0 +1,236 @@
+#!/bin/rc
+
+rfork ne
+
+server=irc.freenode.net
+port=6667
+realname='<nil>'
+target=''
+clonefile=/net/tcp/clone
+netdir=()
+nick=$user
+pass=()
+
+fn sighup {
+	exit 'hang up'
+}
+
+fn sigint sigterm {
+	if (! ~ $#netdir 0)
+		echo  QUIT : Leaving... > $netdir/data
+}
+
+fn mshift {
+	shift
+	echo $*
+}
+
+fn etime {
+	date | awk '{print $4}' | awk -F ':' '{print "[" $1 ":" $2 "]"}'
+}
+
+fn work {
+	echo USER $user foo bar :$realname > $netdir/data
+	echo NICK $nick > $netdir/data
+	if (~ $#pass 1)
+		echo PRIVMSG 'nickserv :'identify $"pass > $netdir/data
+	while (cmd=`{read}) {
+	msg=()
+	out=()
+		switch ($cmd(1)) {
+		case /!
+			eval `{mshift $cmd} | while(rc=`{read})echo 'PRIVMSG '^$target^' :' $rc | tee $netdir/data
+		case /M
+			msg = (MODE `{mshift $cmd})
+		case /N
+			cmd = `{mshift $cmd}
+			if (! ~ $#cmd 0)
+				msg = (NOTICE $cmd(1) : `{mshift $cmd})
+		case /T
+			msg = (TOPIC `{mshift $cmd})
+		case /W
+			msg = (WHOIS `{mshift $cmd})
+		case /a
+			msg =  (AWAY : `{mshift $cmd})
+		case /j
+			if (~ $#cmd 2) {
+				target=$cmd(2)
+				title
+				msg = (JOIN `{mshift $cmd})
+			}
+		case /l
+			msg = (LIST `{mshift $cmd})
+		case /m
+			cmd = `{mshift $cmd}
+			if (! ~ $#cmd 0) {
+				to = $cmd(1)
+				cmd = `{mshift $cmd}
+				out =  '('^$to^')	⇐	'^$"cmd
+				msg = 'PRIVMSG '^$to^' :'^$"cmd
+			}
+		case /n
+			nick = `{mshift $cmd}
+			msg =  (NICK $nick)
+		case /p
+			cmd = `{mshift $cmd}
+			if (! ~ $#cmd 0)
+				msg = (PART $cmd(1) : `{mshift $cmd})
+		case /q
+			msg =  `{mshift $cmd}
+		case /t
+			target = `{mshift $cmd}
+			title
+		case /u
+			msg = (USERS `{mshift $cmd})
+		case /w
+			msg = (WHO `{mshift $cmd})
+		case /x
+			echo  QUIT : Leaving... > $netdir/data
+			exit
+		case *
+			msg = 'PRIVMSG '^$target^' :'^$"cmd
+			out = '('^$target^')	⇐	'^$"cmd
+		}
+		if (! ~ $#msg 0)
+			echo $msg > $netdir/data
+		if (! ~ $#out 0)
+			echo `{etime}^' '^$out
+	}
+}
+
+fn misc {
+	sed '
+		s/^://
+		s/!~?[a-zA-Z0-9_@\-|.{=\/:]+ /:/' |
+	awk -F ':' '
+	{
+		s =  $2 " «" $1 "»\t" $3;
+		for(i = 4; i < NF+1; i++)
+			s = s ":" $i;
+		printf("%s\n", s);
+	}' 
+}
+
+fn notice {
+	sed '
+		s/^NOTICE /:'^$server^':/
+		s/^://
+		s/!~?[a-zA-Z0-9_@\-|.{=\/]+ /:/' |
+	awk -F ':' '
+	{
+		s = "-" $1 "-	⇒\t" $3;
+		for(i = 4; i < NF+1; i++)
+			s = s ":" $i;
+		printf("%s\n", s);
+	}' 
+}
+
+fn numeric {
+	sed 's/^:[a-zA-Z0-9_@\-|.!=#]+ //
+		s/ '^$nick^' //
+		s/^353= /***	Users on /
+		s/^[0-9][0-9][0-9] ?:?/***	/'
+}
+
+fn privmsg {
+	sed ' 
+		s/^:/«/
+		s/!~?[a-zA-Z0-9_@\-|.{=\/:]+ PRIVMSG /»	⇒	:/
+		s/#[a-zA-Z0-9_@\-|.#]+/(&)/' | 
+	awk -F ':' '
+	{
+		s = $2 $1  $3;
+		for(i = 4; i < NF+1; i++)
+			s = s ":" $i;
+		printf("%s\n", s);
+	}'
+
+}
+
+fn pretty {
+	while (~ `{cat $netdir/status} Established*) {
+		line=`{read}
+		switch ($line) {
+		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 = ()
+		case *
+			line = `{echo -n $line | numeric}
+		}
+		if (! ~ $#line 0)
+			echo `{etime} $line
+	}
+	exit
+}
+
+fn getip {
+	echo $1 ip | ndb/dnsquery | sed 1q | awk '{print $NF}'
+}
+
+fn title {
+	if (! ~ $#winid 0) {
+		if (test -f /mnt/acme/$winid/ctl)
+			echo name /$server/$target/-ircrc > /mnt/acme/$winid/ctl
+	}
+	if not
+		label ircrc $server - $target
+}
+
+while (~ $1 -*) {
+	switch ($1) {
+	case -n
+		nick=$2
+		shift
+	case -p
+		port=$2
+		shift
+	case -r
+		realname=$2
+		shift
+	case -t
+		target=$2
+		shift
+	case -*
+		echo 'usage: ircrc  [-p port] [-r realname] [-t target] [-n nick]  [server]' >[1=2]
+		exit 'usage'	
+	}
+	shift
+}
+
+if (~ $#* 1) {
+	switch ($1) {
+	case bitlbee
+		server=im.bitlbee.org
+	case oftc
+		server=irc.oftc.net
+	case *
+		server=$1
+	}
+}
+
+ip=`{getip $server}
+if (~ $#ip 0) {
+	echo cant translate $server
+	exit 'unknown host'
+}
+
+title
+userpass=`{auth/userpasswd 'server='^$server^' service=irc user='^$nick >[2]/dev/null}
+if(~ $#userpass 2 && ~ $nick $user) {
+	nick=$userpass(1)
+	pass=$userpass(2)
+}
+
+<[4] $clonefile {
+	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 & 
+	work
+}
--- a/sys/games/lib/fortunes
+++ b/sys/games/lib/fortunes
@@ -4601,3 +4601,4 @@
 I was using "startx" in the figurative sense.
 Google Search provides at least 22 special features beyond the original word-search capability.
 Are you sure you're on the right website?
+(#go-nuts) <areece> The mailing list feels more hostile than the IRC :-/