Updated server removal

Removing network will also remove attached channels
This commit is contained in:
isundil 2015-10-01 22:36:02 +02:00
commit 6ca7dc6847
5 changed files with 40 additions and 28 deletions

View file

@ -86,6 +86,21 @@ static void channel_setup_destroy(CHANNEL_SETUP_REC *channel)
g_free(channel);
}
void channel_setup_remove_chatnet(const char *chatnet)
{
GSList *tmp, *next;
g_return_if_fail(chatnet != NULL);
for (tmp = setupchannels; tmp != NULL; tmp = next) {
CHANNEL_SETUP_REC *rec = tmp->data;
next = tmp->next;
if (g_ascii_strcasecmp(rec->chatnet, chatnet) == 0)
channel_setup_remove(rec);
}
}
void channel_setup_remove(CHANNEL_SETUP_REC *channel)
{
channel_config_remove(channel);

View file

@ -21,6 +21,9 @@ void channels_setup_deinit(void);
void channel_setup_create(CHANNEL_SETUP_REC *channel);
void channel_setup_remove(CHANNEL_SETUP_REC *channel);
/* Remove channels attached to chatnet */
void channel_setup_remove_chatnet(const char *chatnet);
CHANNEL_SETUP_REC *channel_setup_find(const char *channel,
const char *chatnet);

View file

@ -333,24 +333,6 @@ server_create_conn(int chat_type, const char *dest, int port,
chatnet, password, nick);
}
GSList *server_setup_find_chatnet(const char *chatnet)
{
GSList *servers;
GSList *tmp;
g_return_val_if_fail(chatnet != NULL, NULL);
servers = NULL;
for (tmp = setupservers; tmp != NULL; tmp = tmp->next) {
SERVER_SETUP_REC *rec = tmp->data;
if (g_ascii_strcasecmp(rec->chatnet, chatnet) == 0)
servers = g_slist_append(servers, rec);
}
return servers;
}
/* Find matching server from setup. Try to find record with a same port,
but fallback to any server with the same address. */
SERVER_SETUP_REC *server_setup_find(const char *address, int port,
@ -523,6 +505,21 @@ void server_setup_add(SERVER_SETUP_REC *rec)
signal_emit("server setup updated", 1, rec);
}
void server_setup_remove_chatnet(const char *chatnet)
{
GSList *tmp, *next;
g_return_val_if_fail(chatnet != NULL, NULL);
for (tmp = setupservers; tmp != NULL; tmp = next) {
SERVER_SETUP_REC *rec = tmp->data;
next = tmp->next;
if (g_ascii_strcasecmp(rec->chatnet, chatnet) == 0)
server_setup_remove(rec);
}
}
void server_setup_remove(SERVER_SETUP_REC *rec)
{
server_setup_remove_config(rec);

View file

@ -36,13 +36,12 @@ server_create_conn(int chat_type, const char *dest, int port,
SERVER_SETUP_REC *server_setup_find(const char *address, int port,
const char *chatnet);
/* Find all servers matching chatnet.
Return a list of SERVER_SETUP_REC */
GSList *server_setup_find_chatnet(const char *chatnet);
void server_setup_add(SERVER_SETUP_REC *rec);
void server_setup_remove(SERVER_SETUP_REC *rec);
/* Remove servers attached to chatne */
void server_setup_remove_chatnet(const char *chatnet);
void servers_setup_init(void);
void servers_setup_deinit(void);