shithub: ircd

Download patch

ref: d22d253f7d37601c8cfd4f4603dfa3489e9d0593
parent: a80ed8b66a6fe7445c83907cbfdc82a397d29c52
author: sirjofri <sirjofri@sirjofri.de>
date: Tue Jul 22 16:15:52 EDT 2025

implements ll in users

--- a/users.c
+++ b/users.c
@@ -2,8 +2,9 @@
 #include <libc.h>
 #include "dat.h"
 #include "fns.h"
+#include "ll.h"
 
-static Userlist users;
+static Linked *users;
 
 User*
 adduser(char *name)
@@ -11,39 +12,34 @@
 	User *n;
 	n = mallocz(sizeof(User), 1);
 	n->name = strdup(name);
-	
-	if (!users.first) {
-		users.first = n;
-		return n;
-	}
-	n->next = users.first;
-	users.first->prev = n;
-	users.first = n;
+	ladd(&users, n);
 	return n;
 }
 
-void
-deluser(User *user)
+static void
+freeuser(void *u)
 {
-	if (!user->prev) {
-		users.first = user->next;
-		if (user->next)
-			user->next->prev = nil;
-	} else {
-		user->prev->next = user->next;
-		if (user->next)
-			user->next->prev = user->prev;
-	}
+	User *user = u;
 	free(user->name);
 	free(user);
 }
 
+void
+deluser(User *user)
+{
+	ldel(&users, user, freeuser);
+}
+
+static int
+finduserfunc(void *ptr, void *c)
+{
+	User *user = ptr;
+	char *name = c;
+	return strcmp(user->name, name) == 0;
+}
+
 User*
 finduser(char *name)
 {
-	for (User *u = users.first; u; u = u->next) {
-		if (strcmp(name, u->name) == 0)
-			return u;
-	}
-	return nil;
+	return lfind(&users, finduserfunc, name);
 }
--