From f0257343c7bfbb6532178b8624dd402775373bd7 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Wed, 17 Jul 2013 18:34:44 -0300 Subject: [PATCH] Implement adding a friend to a group. --- src/group.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/group.c b/src/group.c index 3566557..41bfb07 100644 --- a/src/group.c +++ b/src/group.c @@ -19,6 +19,7 @@ #include #include #include +#include struct sgp_group { struct sgp_friend **friends; @@ -34,8 +35,24 @@ struct sgp_group * sgp_group_new() return group; } +/* + * TODO: start using references. The group can't take it if we want to + * add a friend to more groups. A single global reference for all + * friends may be good enough. + */ int sgp_group_add_friend(struct sgp_group *group, struct sgp_friend *friend) { + struct sgp_friend **old_friends; + old_friends = group->friends; + group->nr_friends++; + group->friends = realloc(old_friends, + group->nr_friends * sizeof(friend)); + if (!group->friends) { + group->friends = old_friends; + group->nr_friends--; + return -ENOMEM; + } + group->friends[group->nr_friends - 1] = friend; return 0; } -- 2.20.1