summary refs log tree commit diff
path: root/chat.h
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2021-05-27 11:45:47 -0400
committerJune McEnroe <june@causal.agency>2021-05-27 11:45:47 -0400
commit6d5bcf72c10f7b648c7c605c3cd7ff6dcf9b7b17 (patch)
treecced605fee89298f0f148f64d924c029295fc5e7 /chat.h
parentLog nick and ssh connection in chroot-prompt (diff)
downloadcatgirl-6d5bcf72c10f7b648c7c605c3cd7ff6dcf9b7b17.tar.gz
catgirl-6d5bcf72c10f7b648c7c605c3cd7ff6dcf9b7b17.zip
Hash the username in kiosk mode
So that the first part of $SSH_CLIENT can be passed as username.
Diffstat (limited to 'chat.h')
-rw-r--r--chat.h9
1 files changed, 6 insertions, 3 deletions
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 {