diff options
| -rw-r--r-- | catgirl.1 | 4 | ||||
| -rw-r--r-- | chat.c | 8 | ||||
| -rw-r--r-- | chat.h | 9 | 
3 files changed, 17 insertions, 4 deletions
| @@ -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. @@ -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, "@+"); @@ -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 { | 
