ref: da30c36250f4c39d63b5de5bfd05aab4ad3b4ee6
parent: 631b0296c9ba9a5dd32e62a7e7d0dc707752216b
author: Ori Bernstein <ori@eigenstate.org>
date: Sun Aug 5 10:55:25 EDT 2018
Add /onconn command. It should probably be per-sever, but all the commands I want to run are idempotent, and it's easier to implement this way.
--- a/irc.myr
+++ b/irc.myr
@@ -66,7 +66,7 @@
| "QUIT": deluser(irc, srv, src)
| "PART": delchanuser(irc, srv, src, args)
| "366": shownames(irc, srv, args, 1)
- | "PRIVMSG": recievemsg(irc, srv, src, args)
+ | "PRIVMSG": receivemsg(irc, srv, src, args)
| "PING": send(irc, srv, "PONG :{}\r\n", a0)| "JOIN": joined(irc, srv, src, args)
| "NICK": renamed(irc, srv, src, args)
@@ -131,7 +131,7 @@
;;
}
-const recievemsg = {irc, srv, src, args+const receivemsg = {irc, srv, src, argsvar c
if std.sleq(args[0], srv.nick)
@@ -309,6 +309,7 @@
-> void
;;
match sp[0]
+ | "/onconn": std.slpush(&irc.onconn, std.sldup(text[sp[0].len:]))
| "/connect": connect(irc, sp[1:])
| "/join": join(irc, sp[1:])
| "/leave": leave(irc, sp[1:])
@@ -327,7 +328,6 @@
;;
std.slfree(sp)
}
-
const changenick = {irc, argsif args.len != 1
--- a/main.myr
+++ b/main.myr
@@ -17,6 +17,7 @@
var fd
var cmd
+ std.nopipe()
home = fileutil.homedir()
rcfile = std.pathcat(home, ".ircrc")
logdir = std.pathcat(home, ".irclogs")
@@ -61,6 +62,9 @@
if !handshake(irc, s)
std.close(s.fd)
continue
+ ;;
+ for j : irc.onconn
+ do(irc, j)
;;
s.death = 0
for c : s.chan
--- a/types.myr
+++ b/types.myr
@@ -11,6 +11,9 @@
user : byte[:]
nick : byte[:]
+ /*should probably be per-server, but.. eh. */
+ onconn : byte[:][:]
+
/* input editing */
off : std.size
cmd : char[:]
--
⑨