summaryrefslogtreecommitdiff
path: root/src/resv.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/resv.c')
-rw-r--r--src/resv.c39
1 files changed, 19 insertions, 20 deletions
diff --git a/src/resv.c b/src/resv.c
index 6409fe4..7600ccd 100644
--- a/src/resv.c
+++ b/src/resv.c
@@ -53,6 +53,7 @@ dlink_list resv_channel_list = { NULL, NULL, 0 };
struct MaskItem *
create_resv(const char *name, const char *reason, const dlink_list *list)
{
+ dlink_node *ptr = NULL;
struct MaskItem *conf = NULL;
enum maskitem_type type;
@@ -73,27 +74,25 @@ create_resv(const char *name, const char *reason, const dlink_list *list)
if (list)
{
- if (strlen(name) == 2 && IsAlpha(*(name + 1) && IsAlpha(*(name + 2))))
+ DLINK_FOREACH(ptr, list->head)
{
- struct exempt *exptr = MyMalloc(sizeof(*exptr));
-
- exptr->name = xstrdup(name);
- exptr->coid = GeoIP_id_by_code(name);
- dlinkAdd(exptr, &exptr->node, &conf->exempt_list);
- }
- else
- {
- dlink_node *ptr = NULL;
-
- DLINK_FOREACH(ptr, list->head)
+ char nick[NICKLEN + 1];
+ char user[USERLEN + 1];
+ char host[HOSTLEN + 1];
+ struct split_nuh_item nuh;
+ struct exempt *exptr = NULL;
+ char *s = ptr->data;
+
+ if (strlen(s) == 2 && IsAlpha(*(s + 1) && IsAlpha(*(s + 2))))
{
- char nick[NICKLEN + 1];
- char user[USERLEN + 1];
- char host[HOSTLEN + 1];
- struct split_nuh_item nuh;
- struct exempt *exptr = NULL;
-
- nuh.nuhmask = name;
+ exptr = MyMalloc(sizeof(*exptr));
+ exptr->name = xstrdup(s);
+ exptr->coid = GeoIP_id_by_code(s);
+ dlinkAdd(exptr, &exptr->node, &conf->exempt_list);
+ }
+ else
+ {
+ nuh.nuhmask = s;
nuh.nickptr = nick;
nuh.userptr = user;
nuh.hostptr = host;
@@ -105,7 +104,7 @@ create_resv(const char *name, const char *reason, const dlink_list *list)
split_nuh(&nuh);
exptr = MyMalloc(sizeof(*exptr));
- exptr->name = xstrdup(name);
+ exptr->name = xstrdup(nick);
exptr->user = xstrdup(user);
exptr->host = xstrdup(host);
exptr->type = parse_netmask(host, &exptr->addr, &exptr->bits);