1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-04 16:53:14 +02:00

Added server default notify level (task #5634), fixed crashs with /buffer and /charset commands when not connected to any server (bug #17525)

This commit is contained in:
Sebastien Helleu
2006-08-25 16:30:10 +00:00
parent 77e3fb3c83
commit 00fbd7ad56
38 changed files with 4164 additions and 4128 deletions
+12 -15
View File
@@ -488,7 +488,7 @@ int
channel_get_notify_level (t_irc_server *server, t_irc_channel *channel)
{
char *name, *pos, *pos2;
int notify;
int server_default_notify, notify;
if ((!server) || (!channel))
return NOTIFY_LEVEL_DEFAULT;
@@ -496,26 +496,28 @@ channel_get_notify_level (t_irc_server *server, t_irc_channel *channel)
if ((!server->notify_levels) || (!server->notify_levels[0]))
return NOTIFY_LEVEL_DEFAULT;
server_default_notify = server_get_default_notify_level (server);
name = (char *) malloc (strlen (channel->name) + 2);
strcpy (name, channel->name);
strcat (name, ":");
pos = strstr (server->notify_levels, name);
free (name);
if (!pos)
return NOTIFY_LEVEL_DEFAULT;
return server_default_notify;
pos2 = pos + strlen (channel->name);
if (pos2[0] != ':')
return NOTIFY_LEVEL_DEFAULT;
return server_default_notify;
pos2++;
if (!pos2[0])
return NOTIFY_LEVEL_DEFAULT;
return server_default_notify;
notify = (int)(pos2[0] - '0');
if ((notify < NOTIFY_LEVEL_MIN) || (notify > NOTIFY_LEVEL_MAX))
return NOTIFY_LEVEL_DEFAULT;
else
if ((notify >= NOTIFY_LEVEL_MIN) && (notify <= NOTIFY_LEVEL_MAX))
return notify;
return server_default_notify;
}
/*
@@ -530,14 +532,9 @@ channel_set_notify_level (t_irc_server *server, t_irc_channel *channel, int noti
if ((!server) || (!channel))
return;
if (notify == NOTIFY_LEVEL_DEFAULT)
config_option_list_remove (&(server->notify_levels), channel->name);
else
{
level_string[0] = notify + '0';
level_string[1] = '\0';
config_option_list_set (&(server->notify_levels), channel->name, level_string);
}
level_string[0] = notify + '0';
level_string[1] = '\0';
config_option_list_set (&(server->notify_levels), channel->name, level_string);
}
/*
+47
View File
@@ -1935,6 +1935,53 @@ server_set_away (t_irc_server *server, char *nick, int is_away)
}
}
/*
* server_get_default_notify_level: get default notify level for server
*/
int
server_get_default_notify_level (t_irc_server *server)
{
int notify, value;
char *pos;
notify = NOTIFY_LEVEL_DEFAULT;
if (!server)
return notify;
pos = strstr (server->notify_levels, "*:");
if (pos)
{
pos += 2;
if (pos[0])
{
value = (int)(pos[0] - '0');
if ((value >= NOTIFY_LEVEL_MIN) && (value <= NOTIFY_LEVEL_MAX))
notify = value;
}
}
return notify;
}
/*
* server_set_default_notify_level: set default notify level for server
*/
void
server_set_default_notify_level (t_irc_server *server, int notify)
{
char level_string[2];
if (server)
{
level_string[0] = notify + '0';
level_string[1] = '\0';
config_option_list_set (&(server->notify_levels), "*", level_string);
}
}
/*
* server_print_log: print server infos in log (usually for crash dump)
*/
+2
View File
@@ -355,6 +355,8 @@ extern int server_name_already_exists (char *);
extern void server_remove_away ();
extern void server_check_away ();
extern void server_set_away (t_irc_server *, char *, int);
extern int server_get_default_notify_level (t_irc_server *);
extern void server_set_default_notify_level (t_irc_server *, int);
extern void server_print_log (t_irc_server *);
/* proxy functions (irc-server.c) */