X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fclass.c;h=9ffa8b147471b18b8ee2a97d4914c162e21e6f44;hp=800e99353647f8758488a30db2d8f41259dc1129;hb=c5da48368569383d064a2325ab3b99d10287a085;hpb=cde2e8a2775e8b01266627a60a08e2560eac42c8 diff --git a/src/ngircd/class.c b/src/ngircd/class.c index 800e9935..9ffa8b14 100644 --- a/src/ngircd/class.c +++ b/src/ngircd/class.c @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors. + * Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,19 +16,13 @@ * User class management. */ -#include "imp.h" #include +#include #include -#include "defines.h" -#include "array.h" #include "conn.h" -#include "client.h" #include "lists.h" -#include "match.h" -#include "stdio.h" -#include "exp.h" #include "class.h" struct list_head My_Classes[CLASS_COUNT]; @@ -50,11 +44,13 @@ Class_Exit(void) GLOBAL bool Class_GetMemberReason(const int Class, CLIENT *Client, char *reason, size_t len) { - char str[COMMAND_LEN] = "listed"; + char str[COMMAND_LEN]; assert(Class < CLASS_COUNT); assert(Client != NULL); + strlcpy(str, "listed", sizeof(str)); + if (!Lists_CheckReason(&My_Classes[Class], Client, str, sizeof(str))) return false; @@ -98,24 +94,30 @@ Class_HandleServerBans(CLIENT *Client) GLOBAL bool -Class_AddMask(const int Class, const char *Mask, time_t ValidUntil, +Class_AddMask(const int Class, const char *Pattern, time_t ValidUntil, const char *Reason) { + char mask[MASK_LEN]; + assert(Class < CLASS_COUNT); - assert(Mask != NULL); + assert(Pattern != NULL); assert(Reason != NULL); - return Lists_Add(&My_Classes[Class], Lists_MakeMask(Mask), + Lists_MakeMask(Pattern, mask, sizeof(mask)); + return Lists_Add(&My_Classes[Class], mask, ValidUntil, Reason); } GLOBAL void -Class_DeleteMask(const int Class, const char *Mask) +Class_DeleteMask(const int Class, const char *Pattern) { + char mask[MASK_LEN]; + assert(Class < CLASS_COUNT); - assert(Mask != NULL); + assert(Pattern != NULL); - Lists_Del(&My_Classes[Class], Lists_MakeMask(Mask)); + Lists_MakeMask(Pattern, mask, sizeof(mask)); + Lists_Del(&My_Classes[Class], mask); } GLOBAL struct list_head *