shithub: ircd

ref: eaf9a2c0694335ea7d5139f83b3824f6127fb310
dir: /users.c/

View raw version
#include <u.h>
#include <libc.h>
#include "dat.h"
#include "fns.h"
#include "ll.h"

static Linked *users;

User*
adduser(char *name)
{
	User *n;
	n = mallocz(sizeof(User), 1);
	n->name = strdup(name);
	ladd(&users, n);
	return n;
}

static void
freeuser(void *u)
{
	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)
{
	return lfind(&users, finduserfunc, name);
}