summary refs log tree commit diff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--catgirl.14
-rw-r--r--chat.c8
-rw-r--r--chat.h9
3 files changed, 17 insertions, 4 deletions
diff --git a/catgirl.1 b/catgirl.1
index 2ba5377..fd9e696 100644
--- a/catgirl.1
+++ b/catgirl.1
@@ -1,4 +1,4 @@
-.Dd March 17, 2021
+.Dd May 27, 2021
 .Dt CATGIRL 1
 .Os
 .
@@ -148,6 +148,8 @@ Disable the
 .Ic /query ,
 .Ic /quote
 commands.
+Replace the username
+with a hash of its original value.
 .
 .It Fl N Ar util , Cm notify = Ar util
 Send notifications using a utility.
diff --git a/chat.c b/chat.c
index 7335520..23ad335 100644
--- a/chat.c
+++ b/chat.c
@@ -28,6 +28,7 @@
 #include <err.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <inttypes.h>
 #include <limits.h>
 #include <locale.h>
 #include <poll.h>
@@ -268,6 +269,13 @@ int main(int argc, char *argv[]) {
 	if (!user) user = nick;
 	if (!real) real = nick;
 
+	if (self.kiosk) {
+		char *hash;
+		int n = asprintf(&hash, "%8" PRIx32, _hash(user));
+		if (n < 0) err(EX_OSERR, "asprintf");
+		user = hash;
+	}
+
 	// Modes defined in RFC 1459:
 	set(&network.chanTypes, "#&");
 	set(&network.prefixes, "@+");
diff --git a/chat.h b/chat.h
index fadbc30..44ec9b8 100644
--- a/chat.h
+++ b/chat.h
@@ -138,8 +138,7 @@ static inline uint idFor(const char *name) {
 
 extern uint32_t hashInit;
 extern uint32_t hashBound;
-static inline enum Color hash(const char *str) {
-	if (hashBound < Blue) return Default;
+static inline uint32_t _hash(const char *str) {
 	if (*str == '~') str++;
 	uint32_t hash = hashInit;
 	for (; *str; ++str) {
@@ -147,7 +146,11 @@ static inline enum Color hash(const char *str) {
 		hash ^= *str;
 		hash *= 0x27220A95;
 	}
-	return Blue + hash % (hashBound + 1 - Blue);
+	return hash;
+}
+static inline enum Color hash(const char *str) {
+	if (hashBound < Blue) return Default;
+	return Blue + _hash(str) % (hashBound + 1 - Blue);
 }
 
 extern struct Network {
ght'> 2020-08-15Use only LOG_NOTICE and LOG_WARNINGJune McEnroe These are the two priorities that go to a normal place (/var/log/messages) by default. 2020-08-15Make log messages consistentJune McEnroe 2020-08-15Remove closelog callJune McEnroe It's unclear whether closelog is really safe to call in pre-exec context, so just trust that the log is opened with CLOEXEC. 2020-08-15Implement service statusJune McEnroe 2020-08-15Parse control commandsJune McEnroe 2020-08-15Read service pipesJune McEnroe Changed line reading functions to return const char * because modifying the strings by adding '\0' into them screws up the following call. 2020-08-15Implement non-blocking line-buffered readingJune McEnroe 2020-08-15Generate tags fileJune McEnroe 2020-08-15Just use CLOCK_MONOTONIC and clean up includesJune McEnroe CLOCK_MONOTONIC exists everywhere. 2020-08-15Reap childrenJune McEnroe 2020-08-14Implement serviceSignal, serviceStop, serviceRestartJune McEnroe 2020-08-14Reset restartInterval and restartDeadline on startJune McEnroe 2020-08-14Switch to timespec for timeoutsJune McEnroe Can be passed to ppoll(2) directly. 2020-08-14Implement serviceStartJune McEnroe 2020-08-14Flesh out Service structJune McEnroe 2020-08-14Build environment for servicesJune McEnroe 2020-08-14Implement spawntab parsingJune McEnroe 2020-08-14Open syslog, daemonize, write PIDJune McEnroe 2020-08-14Implement user and group lookupJune McEnroe 2020-08-14Add install targetJune McEnroe 2020-08-14Add spawnd skeletonJune McEnroe