about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--catgirl.18
-rw-r--r--chat.h1
-rw-r--r--command.c1
-rw-r--r--handle.c1
4 files changed, 8 insertions, 3 deletions
diff --git a/catgirl.1 b/catgirl.1
index 7e39408..ccb3745 100644
--- a/catgirl.1
+++ b/catgirl.1
@@ -1,4 +1,4 @@
-.Dd June 18, 2021
+.Dd July  2, 2021
 .Dt CATGIRL 1
 .Os
 .
@@ -421,8 +421,10 @@ Set or clear your away status.
 Send a command to ChanServ.
 .It Ic /invite Ar nick
 Invite a user to the channel.
-.It Ic /join Ar channel Op Ar key
-Join a channel.
+.It Ic /join Op Ar channel Op Ar key
+Join the named channel,
+the current channel,
+or the channel you've been invited to.
 .It Ic /list Op Ar channel
 List channels.
 .It Ic /me Op Ar action
diff --git a/chat.h b/chat.h
index a4c7670..9ad298f 100644
--- a/chat.h
+++ b/chat.h
@@ -198,6 +198,7 @@ extern struct Self {
 	char *user;
 	char *host;
 	enum Color color;
+	char *invited;
 	char *quit;
 } self;
 
diff --git a/command.c b/command.c
index 1193615..3392fa9 100644
--- a/command.c
+++ b/command.c
@@ -149,6 +149,7 @@ static void commandMsg(uint id, char *params) {
 }
 
 static void commandJoin(uint id, char *params) {
+	if (!params && id == Network) params = self.invited;
 	if (!params) params = idNames[id];
 	uint count = 1;
 	for (char *ch = params; *ch && *ch != ' '; ++ch) {
diff --git a/handle.c b/handle.c
index bfe6e8c..a8f054c 100644
--- a/handle.c
+++ b/handle.c
@@ -479,6 +479,7 @@ static void handleQuit(struct Message *msg) {
 static void handleInvite(struct Message *msg) {
 	require(msg, true, 2);
 	if (!strcmp(msg->params[0], self.nick)) {
+		set(&self.invited, msg->params[1]);
 		uiFormat(
 			Network, filterCheck(Hot, Network, msg), tagTime(msg),
 			"\3%02d%s\3\tinvites you to \3%02d%s\3",