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);
}
--
⑨