shithub: ircd

ref: 3e1c35f04bc91f20cf8026b7eb03addd3744b19e
dir: /users.c/

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

static Userlist users;

User*
adduser(char *name)
{
	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;
	return n;
}

void
deluser(User *user)
{
	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;
	}
	free(user->name);
	free(user);
}

User*
finduser(char *name)
{
	for (User *u = users.first; u; u = u->next) {
		if (strcmp(name, u->name) == 0)
			return u;
	}
	return nil;
}