Plan 9 from Bell Labs’s /usr/web/sources/contrib/steve/rc/irclog

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


#!/bin/rc

rfork en

prog=cat
when=`{date -n}
irchost=mordor

while(! ~ $#* 0 && ~ $1 -* && ! ~ $1 --){
	switch($1){
	case -t 
		prog=(tail +0f)
		shift
	case -[0-9]*
		when=`{echo $when '+(' $1 '*60*60*24)' | hoc}
		shift
	case *
		echo 'usage:  irclog [-n d] [-t]'  >[1=2]
		echo ' -n     print logs for d days ago (default=0=today)' >[1=2]
		echo ' -t     "tail -f" the log file' >[1=2]
		exit 'usage'
	}
}

now = `{ date $when | sed '
	s/  ([0-9])/  0\1/
	s/Jan/01/
	s/Feb/02/
	s/Mar/03/
	s/Apr/04/
	s/May/05/
	s/Jun/06/
	s/Jul/07/
	s/Aug/08/
	s/Sep/09/
	s/Oct/10/
	s/Nov/11/
	s/Dec/12/'}



9fs $irchost

f=/n/$irchost/usr/web/irclog/$now(6)^/$now(2)^$now(3)^/plan9*.txt*

for (file in `{ls -t $f >[2] /dev/null}){
	$prog $file |
	tr '\001\015' '• ' |
	sed '
		/ :•VERSION• $/d
		s/ :•ACTION *(.*)• $/ :«\1»/
	' |
	awk '

		$1 == "PING" {
			tick++;
		}

		$2 == "JOIN" {
			who = user($1);
			printf("+%-8s\n", who);
			owho = "";
		}

		$2 == "QUIT" || $2 == "PART" {
			who = user($1);
			printf("-%-8s\n", who);
			owho = "";
		}

		$2 == "PRIVMSG" {
			who = user($1);
			if (who != owho){
				if (tick > 1){
					printf("\n--------- %d min\n", tick *3);
					tick = 0;
				}
				printf("%s\n", who);
			}

			msg = $4;
			gsub("^:", "", msg);
			for (i = 5; i <= NF; i++){
				if ((length(msg)+length($i)) > 70){
					printf("\t%s%s%s\n", pre, msg, post);
					msg = "";
				}
				msg = msg " " $i;
			}
			if (msg != "")
				printf("\t%s%s%s\n", pre, msg, post);

			owho = who;
			pre = post = "";
			tick = 0;

		}

		function user(s){
			gsub("^:", "", s);
			gsub("!.*$", "", s);
			return s;
		}
	'
}

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].