summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-11-14 19:25:25 -0500
committerJune McEnroe <june@causal.agency>2019-11-14 19:25:25 -0500
commit376cde311dc723e8496c8c8ab1048dbd2181170c (patch)
tree026899720670b193b56df3397f2fd219017ee450
parentSave and load full struct timeval (diff)
downloadpounce-376cde311dc723e8496c8c8ab1048dbd2181170c.tar.gz
pounce-376cde311dc723e8496c8c8ab1048dbd2181170c.zip
Add concept of passive clients
-rw-r--r--client.c12
-rw-r--r--pounce.14
2 files changed, 13 insertions, 3 deletions
diff --git a/client.c b/client.c
index 3dce5e9..2dcccaa 100644
--- a/client.c
+++ b/client.c
@@ -30,7 +30,7 @@
 
 #include "bounce.h"
 
-static size_t count;
+static size_t active;
 
 enum Need {
 	BIT(NeedNick),
@@ -43,6 +43,7 @@ struct Client {
 	struct tls *tls;
 	enum Need need;
 	size_t consumer;
+	bool passive;
 	enum Cap caps;
 	char buf[1024];
 	size_t len;
@@ -59,7 +60,9 @@ struct Client *clientAlloc(struct tls *tls) {
 
 void clientFree(struct Client *client) {
 	if (!client->need) {
-		if (!--count) serverFormat("AWAY :%s\r\n", clientAway);
+		if (!client->passive && !--active) {
+			serverFormat("AWAY :%s\r\n", clientAway);
+		}
 	}
 	tls_close(client->tls);
 	tls_free(client->tls);
@@ -109,7 +112,9 @@ static void maybeSync(struct Client *client) {
 	if (client->need == NeedPass) passRequired(client);
 	if (!client->need) {
 		stateSync(client);
-		if (!count++) serverFormat("AWAY\r\n");
+		if (!client->passive && !active++) {
+			serverFormat("AWAY\r\n");
+		}
 	}
 }
 
@@ -131,6 +136,7 @@ static void handleUser(struct Client *client, struct Message *msg) {
 	} else {
 		client->need &= ~NeedUser;
 		client->consumer = ringConsumer(msg->params[0]);
+		client->passive = (msg->params[0][0] == '-');
 		maybeSync(client);
 	}
 }
diff --git a/pounce.1 b/pounce.1
index 6b7c5d9..9a004c4 100644
--- a/pounce.1
+++ b/pounce.1
@@ -275,6 +275,10 @@ New clients with the same username
 are assumed to be reconnections
 and will cause previous connections
 to stop receiving messages.
+Clients with usernames beginning with hyphen
+.Ql -
+are considered passive
+and do not affect away status.
 The nickname and real name sent by clients
 are ignored.
 .
2021-02-09Disable mouse mode in xtermJune McEnroe I do not ever want to use this feature. 2021-02-09Add pbcopy, pbpaste, open dispatch scriptsJune McEnroe 2021-02-09Use flags for pbd client behaviourJune McEnroe 2021-02-08Add macOS-like copy and paste to xtermJune McEnroe 2021-02-08Only update clock script every minuteJune McEnroe 2021-02-08Use 4M- for window resizing in cwmJune McEnroe 2021-02-08Tweak trackpad scaling, mouse accelerationJune McEnroe This feels more comfortable. 2021-02-08Use xsel in up and add it do install.shJune McEnroe 2021-02-07Swap root window coloursJune McEnroe 2021-02-07Add -X flag to install X stuff on OpenBSDJune McEnroe 2021-02-07Adjust brightness by smaller incrementsJune McEnroe 2021-02-07Fix cwm window cycling, move big by defaultJune McEnroe 2021-02-07Use class names for Foreground, Background, BorderColorJune McEnroe I'm not really sure what difference this makes, but it seems like the right thing to do to be generic? 2021-02-07Add simple battery status and clock to xsessionJune McEnroe I love how simple this is. 2021-02-07Set cursor theme and sizeJune McEnroe 2021-02-07Use scrot for up -s if no screencaptureJune McEnroe Still missing putting the URL in an X selection. 2021-02-07Enable mouse acceleration in XJune McEnroe 2021-02-07Set colours for Xt and cwmJune McEnroe And increase XTerm internalBorder. 2021-02-07Set urgency on bell in xtermJune McEnroe 2021-02-07Add bindings for brightness controlJune McEnroe Weirdly the Fn key doesn't change how the F row registers... I wonder if I can do something about that. 2021-02-07Set X key repeat rateJune McEnroe 2021-02-07Bump font size to 12June McEnroe 11 is what I use on macOS, but I feel like my eyes are working harder here. 2021-02-07Fully configure and rebind cwmJune McEnroe This is sort of a mix of trying to emulate macOS somewhat for my muscle memory and just rebinding some of the cwm defaults to use 4- rather than M-. 2021-02-07Add BintiJune McEnroe 2021-02-07Finish configuring xtermJune McEnroe 2021-02-06Enable tapping, reverse scroll, set scaling in wsconsctlJune McEnroe 2021-02-06Set root window to black on purple snowJune McEnroe 2021-02-06Add xmodmap configurationJune McEnroe 2021-02-06Add initial OpenBSD X configurationJune McEnroe cwm still needs a lot more rebinding, and I need to actually look at its other options. xterm definitely still needs some configuration, but I at least managed to get it to use a decent looking font. Very happy that OpenBSD includes Luxi Mono, which is what my usual font, Go Mono, is based on anyway. Still missing is xmodmap and such. 2021-02-06Add xterm output to schemeJune McEnroe