summary refs log tree commit diff
path: root/handle.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-09-30 17:52:39 -0400
committerJune McEnroe <june@causal.agency>2020-09-30 17:52:39 -0400
commit3e67bf6557861a58d75f62c562a3a2b43f226435 (patch)
treeaada4c6bc2a93a0479b02009ec5c8cf3163eb0a4 /handle.c
parentAllow 2-param form of /whois, count comma-separated nicks (diff)
downloadcatgirl-3e67bf6557861a58d75f62c562a3a2b43f226435.tar.gz
catgirl-3e67bf6557861a58d75f62c562a3a2b43f226435.zip
Add /ops command
It's pretty awkward with large channels since NAMES isn't sorted by
prefixes or anything... But having it accumulate names across many
replies would require more reworking.
Diffstat (limited to 'handle.c')
-rw-r--r--handle.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/handle.c b/handle.c
index cf3c977..e3efe47 100644
--- a/handle.c
+++ b/handle.c
@@ -499,20 +499,26 @@ static void handleReplyNames(struct Message *msg) {
 		char *user = strsep(&name, "@");
 		enum Color color = (user ? hash(user) : Default);
 		completeAdd(id, nick, color);
-		if (!replies.names) continue;
+		if (replies.ops && (prefixes == nick || prefixes[0] == '+')) continue;
+		if (!replies.ops && !replies.names) continue;
 		catf(&cat, "%s\3%02d%s\3", (buf[0] ? ", " : ""), color, prefixes);
 	}
-	if (!replies.names) return;
+	if (!cat.len) return;
 	uiFormat(
 		id, Cold, tagTime(msg),
-		"In \3%02d%s\3 are %s",
+		"%s \3%02d%s\3 are %s",
+		(replies.ops ? "The operators of" : "In"),
 		hash(msg->params[2]), msg->params[2], buf
 	);
 }
 
 static void handleReplyEndOfNames(struct Message *msg) {
 	(void)msg;
-	if (replies.names) replies.names--;
+	if (replies.ops) {
+		replies.ops--;
+	} else if (replies.names) {
+		replies.names--;
+	}
 }
 
 static void handleReplyNoTopic(struct Message *msg) {
class='logmsg'> Insert rant about how GNU make handles the .c rule with extra dependencies. Also I don't care that everything links curses now. 2017-09-27Remove leading blank linesJune McEnroe 2017-09-27Add merge.c to READMEJune McEnroe 2017-09-03Assert client coords are valid after movementJune McEnroe 2017-09-03Relicense AGPLJune McEnroe I know it's already published under a permissive license in what is probably its final form, but I want to license it AGPL anyway on principle following some conversations I had about open source, corporations and copyleft. 2017-09-01Revert "Add client readOnly mode"June McEnroe This reverts commit 34f25ae40a3db9369e9d98b3814f2b93bbc21451. 2017-09-01Remove clientRemove call from clientCastJune McEnroe If an error occurs on a client socket during a broadcast, that client will show up in the kqueue loop with EV_EOF and get removed that way. Tested by sending SIGKILL to a client and watching its cursor disappear. 2017-09-01Add client readOnly modeJune McEnroe 2017-08-31Clean up merge toolJune McEnroe Choose the version with the most recent access if the modify times are the same. 2017-08-31Choose B for tiles with equal modify timesJune McEnroe This way newer access counts and times will be preserved. 2017-08-31Add quick data file merge toolJune McEnroe Hopefully I won't have to use it ever again. 2017-08-30Use only foreground color for selecting spawnJune McEnroe 2017-08-29Add four additional spawnsJune McEnroe 2017-08-28Add respawningJune McEnroe 2017-08-26Move license above includesJune McEnroe Why was it down there? 2017-08-26Snapshot metadataJune McEnroe 2017-08-26Add meta.c to READMEJune McEnroe 2017-08-26Use MakefileJune McEnroe