Add a name to the group.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.info>
Wed, 17 Jul 2013 21:44:19 +0000 (18:44 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.info>
Wed, 17 Jul 2013 21:44:19 +0000 (18:44 -0300)
While at it, make it more robust to fail to create a new group, and
allow it to be destroyed.

include/sgp/group.h
src/group.c
src/main.c

index 26f940a..cc72252 100644 (file)
@@ -24,7 +24,9 @@
 
 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) \
index 41bfb07..d8046a1 100644 (file)
 #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;
 }
 
 /*
index 9ce1fb7..4bb2b50 100644 (file)
@@ -24,7 +24,7 @@ int main(int argc, char **argv)
        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);