ref: 2f4b821ef292c55b9296e65308e9e95cdf610a06
parent: 777033348977a2350f2a9d051f33711acabfc79e
author: Ori Bernstein <ori@eigenstate.org>
date: Thu Oct 17 15:44:46 EDT 2019
Fix leave.
--- a/irc.myr
+++ b/irc.myr
@@ -40,6 +40,7 @@
| `std.None: -> void
;;
+ status(irc, irc.self, "server said: {}\n", ln)(src, cmd, args) = parse(ln)
a0 = args.len > 0 ? args[0] : ""
uppercase(cmd)
@@ -195,20 +196,22 @@
}
const delchanuser = {irc, srv, user, args- var c
-
if args.len == 0
-> void
;;
- c = name2chan(irc, srv, args[0])
- user = displayname(user)
- match std.lsearch(c.users, user, std.strcmp)
- | `std.None: /* ignore */
- | `std.Some i:
- std.slfree(c.users[i])
- std.sldel(&c.users, i)
- puthist(irc, c, (std.now(), `Part std.sldup(user)))
+ for c : srv.chan
+ if std.strcasecmp(c.name, args[0]) == `std.Equal
+ user = displayname(user)
+ match std.lsearch(c.users, user, std.strcmp)
+ | `std.None: /* ignore */
+ | `std.Some i:
+ std.slfree(c.users[i])
+ std.sldel(&c.users, i)
+ puthist(irc, c, (std.now(), `Part std.sldup(user)))
+ ;;
+ ;;
;;
+
}
const fd2srv = {irc, fd@@ -516,7 +519,7 @@
srv = irc.srv[irc.focus]
for var i = 0; i < srv.chan.len; i++
c = srv.chan[i]
- if std.strcasecmp(name, c.name) != `std.Equal
+ if std.strcasecmp(name, c.name) == `std.Equal
send(irc, srv, "PART {}\r\n", name)std.sldel(&srv.chan, i)
if i == srv.focus
--
⑨