shithub: irc.myr

Download patch

ref: ac1bba5919826c706033a0b2d7ea22828668c6ba
parent: 88e7b527621a7a337b796eb0455b1e810d6a4e60
author: Ori Bernstein <ori@eigenstate.org>
date: Sun Aug 5 11:53:08 EDT 2018

Report bad messages.

--- a/irc.myr
+++ b/irc.myr
@@ -68,6 +68,7 @@
 		| "QUIT":	deluser(irc, srv, src)
 		| "PART":	delchanuser(irc, srv, src, args)
 		| "366":	shownames(irc, srv, args, 1)
+		| "401":	badmsg(irc, srv, args, ln)
 		| "PRIVMSG":	receivemsg(irc, srv, src, args)
 		| "PING":	send(irc, srv, "PONG :{}\r\n", a0)
 		| "JOIN":	joined(irc, srv, src, args)
@@ -100,6 +101,16 @@
 	;;
 }
 
+const badmsg = {irc, srv, args, ln
+	var c
+
+	if args.len < 3
+		status(irc, irc.self, "unknown server command {}", ln)
+	;;
+	c = name2chan(irc, srv, args[1])
+	status(irc, c, "{}", args[2])
+}
+
 const joined = {irc, srv, src, args
 	var c, name
 
@@ -305,7 +316,7 @@
 		-> void
 	;;
 	match sp[0]
-	| "/onconn":	std.slpush(&irc.onconn, std.sldup(std.strstrip(text[sp[0].len:])))
+	| "/redo":	std.slpush(&irc.onconn, std.sldup(std.strstrip(text[sp[0].len:])))
 	| "/connect":	connect(irc, sp[1:])
 	| "/join":	join(irc, sp[1:])
 	| "/leave":	leave(irc, sp[1:])
@@ -320,7 +331,7 @@
 	| "/msg":	privmsg(irc, sp[1:])
 	| "/me":	action(irc, sp[1:])
 	| "/":		message(irc, std.strfstrip(text[1:]))
-	| c:		status(irc, irc.self, "unknown command: /{}", text)
+	| c:		status(irc, irc.self, "unknown command: {}", text)
 	;;
 	std.slfree(sp)
 }
--- a/main.myr
+++ b/main.myr
@@ -68,8 +68,8 @@
 				continue
 			;;
 			s.death = 0
-			for j : irc.onconn
-				do(irc, j)
+			for c : irc.onconn
+				do(irc, c)
 				redraw(irc)
 			;;
 			for c : s.chan
@@ -138,11 +138,16 @@
 	irc.self = mkchan(irc, "status", "status", "status")
 
 	match bio.open(rcfile, bio.Rd)
+	| `std.Err e:	/* nothing */
 	| `std.Ok cfg:
 		for ln : bio.byline(cfg)
 			do(irc, ln)
 		;;
-	| `std.Err e:
+		status(irc, irc.self, "doing {}", irc.onconn)
+		for c : irc.onconn
+			do(irc, c)
+			redraw(irc)
+		;;
 	;;
 
 	-> irc
--