aboutsummaryrefslogtreecommitdiffstats
path: root/irc.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2006-07-03 23:22:45 +0200
committerWilmer van der Gaast <wilmer@gaast.net>2006-07-03 23:22:45 +0200
commit5b52a4895e5a59ff6509f7771f4d8665737688c3 (patch)
tree32c13033b127804864507d8ff90c0c274f8b07e5 /irc.c
parent911f2eb7060f6af6fe8e4e02144cfb7c4bb4cc8b (diff)
Implemented per-account nick lists instead of per-protocol nick lists.
nick_t is dead, instead nicks are just saves in a per-account_t GLib hash table. While doing this, the import_buddies command finally died and text_save() disappeared, because the old file format can't handle most of the new features in this branch anyway. Still have to implement support for the new nick lists in text_load()!
Diffstat (limited to 'irc.c')
-rw-r--r--irc.c43
1 files changed, 6 insertions, 37 deletions
diff --git a/irc.c b/irc.c
index bac91198..fe55a02c 100644
--- a/irc.c
+++ b/irc.c
@@ -203,11 +203,9 @@ static gboolean irc_free_hashkey( gpointer key, gpointer value, gpointer data )
/* Because we have no garbage collection, this is quite annoying */
void irc_free(irc_t * irc)
{
- account_t *account, *accounttmp;
+ account_t *account;
user_t *user, *usertmp;
- nick_t *nick, *nicktmp;
help_t *helpnode, *helpnodetmp;
- set_t *setnode, *setnodetmp;
log_message( LOGLVL_INFO, "Destroying connection with fd %d", irc->fd );
@@ -251,17 +249,11 @@ void irc_free(irc_t * irc)
while (irc->queries != NULL)
query_del(irc, irc->queries);
- if (irc->accounts != NULL) {
- account = irc->accounts;
- while (account != NULL) {
- g_free(account->user);
- g_free(account->pass);
- g_free(account->server);
- accounttmp = account;
- account = account->next;
- g_free(accounttmp);
- }
- }
+ while (irc->accounts)
+ account_del(irc, irc->accounts);
+
+ while (irc->set)
+ set_del(&irc->set, irc->set->key);
if (irc->users != NULL) {
user = irc->users;
@@ -286,17 +278,6 @@ void irc_free(irc_t * irc)
g_hash_table_foreach_remove(irc->watches, irc_free_hashkey, NULL);
g_hash_table_destroy(irc->watches);
- if (irc->nicks != NULL) {
- nick = irc->nicks;
- while (nick != NULL) {
- g_free(nick->nick);
- g_free(nick->handle);
-
- nicktmp = nick;
- nick = nick->next;
- g_free(nicktmp);
- }
- }
if (irc->help != NULL) {
helpnode = irc->help;
while (helpnode != NULL) {
@@ -307,18 +288,6 @@ void irc_free(irc_t * irc)
g_free(helpnodetmp);
}
}
- if (irc->set != NULL) {
- setnode = irc->set;
- while (setnode != NULL) {
- g_free(setnode->key);
- g_free(setnode->def);
- g_free(setnode->value);
-
- setnodetmp = setnode;
- setnode = setnode->next;
- g_free(setnodetmp);
- }
- }
g_free(irc);
if( global.conf->runmode == RUNMODE_INETD || global.conf->runmode == RUNMODE_FORKDAEMON )