While at it, make it more robust to fail to create a new group, and
allow it to be destroyed.
struct sgp_group;
-struct sgp_group * sgp_group_new();
+struct sgp_group * sgp_group_new(char *);
+void sgp_group_destroy(struct sgp_group *);
+char * sgp_group_get_name(struct sgp_group *);
int sgp_group_add_friend(struct sgp_group *, struct sgp_friend *);
#define sgp_foreach_friend(group, friend, pfriend) \
#include <errno.h>
struct sgp_group {
+ char *name;
struct sgp_friend **friends;
int nr_friends;
};
-struct sgp_group * sgp_group_new()
+struct sgp_group * sgp_group_new(char *name)
{
struct sgp_group *group;
group = malloc(sizeof(*group));
+ if (!group)
+ return NULL;
+ group->name = strdup(name);
+ if (!group->name)
+ goto out;
group->nr_friends = 0;
group->friends = NULL;
return group;
+out:
+ free(group);
+ return NULL;
+}
+
+void sgp_group_destroy(struct sgp_group *group)
+{
+ if (group->friends)
+ free(group->friends);
+ free(group->name);
+ free(group);
+}
+
+char * sgp_group_get_name(struct sgp_group *group)
+{
+ return group->name;
}
/*
struct sgp_msg *msg;
struct sgp_friend *friend;
/* TODO: access a database here? */
- group = sgp_group_new();
+ group = sgp_group_new("Myself");
friend = sgp_friend_new("Thadeu Cascardo");
msg = sgp_msg_new("New message for you");
sgp_group_add_friend(group, friend);