terom@72: #include "irc_user.h" terom@74: #include "log.h" terom@72: terom@72: #include terom@72: #include terom@74: #include terom@74: terom@74: // XXX: prototype of function from irc_net terom@74: void irc_net_remove_user (struct irc_net *net, struct irc_user *user); terom@72: terom@72: err_t irc_user_create (struct irc_user **user_ptr, struct irc_net *net, const char *nickname) terom@72: { terom@72: struct irc_user *user; terom@74: terom@74: (void) net; terom@72: terom@72: // allocate terom@72: if ((user = calloc(1, sizeof(*user))) == NULL) terom@72: return ERR_CALLOC; terom@72: terom@74: // init terom@72: if ((user->nickname = strdup(nickname)) == NULL) terom@72: return ERR_STRDUP; terom@74: terom@74: user->refcount = 0; terom@72: terom@72: // ok terom@72: *user_ptr = user; terom@72: terom@72: return SUCCESS; terom@72: } terom@72: terom@78: err_t irc_user_rename (struct irc_user *user, const char *new_nickname) terom@78: { terom@78: // release old name terom@78: free(user->nickname); terom@78: terom@78: // copy new one terom@78: if ((user->nickname = strdup(new_nickname)) == NULL) terom@78: return ERR_STRDUP; terom@78: terom@78: // ok terom@78: return SUCCESS; terom@78: } terom@78: terom@72: void irc_user_destroy (struct irc_user *user) terom@72: { terom@74: if (user->refcount > 0) terom@74: log_warn("refcount=%zu", user->refcount); terom@74: terom@72: free(user->nickname); terom@72: free(user); terom@72: } terom@72: