Rework update_user_mode()
This commit is contained in:
@@ -29,6 +29,6 @@
|
|||||||
void funny_list (char *, char **);
|
void funny_list (char *, char **);
|
||||||
void funny_mode (char *, char **);
|
void funny_mode (char *, char **);
|
||||||
void funny_namreply (char *, char **);
|
void funny_namreply (char *, char **);
|
||||||
void update_user_mode (char *);
|
void update_user_mode (int, const char *);
|
||||||
|
|
||||||
#endif /* FUNNY_H_ */
|
#endif /* FUNNY_H_ */
|
||||||
|
|||||||
@@ -408,40 +408,34 @@ void funny_mode(char *from, char **ArgList)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void update_user_mode(char *modes)
|
void update_user_mode(int server, const char *modes)
|
||||||
{
|
{
|
||||||
int onoff = 1;
|
int onoff = 1;
|
||||||
char *p_umodes = get_possible_umodes(from_server);
|
const char *p_umodes = get_possible_umodes(server);
|
||||||
|
const char *p;
|
||||||
|
|
||||||
for (; *modes; modes++)
|
for (; *modes; modes++)
|
||||||
{
|
{
|
||||||
if (*modes == '-')
|
char c = *modes;
|
||||||
onoff = 0;
|
|
||||||
else if (*modes == '+')
|
|
||||||
onoff = 1;
|
|
||||||
|
|
||||||
else if ((*modes >= 'a' && *modes <= 'z')
|
switch (c)
|
||||||
|| (*modes >= 'A' && *modes <= 'Z'))
|
|
||||||
{
|
{
|
||||||
size_t idx;
|
case '-':
|
||||||
int c = *modes;
|
onoff = 0;
|
||||||
|
break;
|
||||||
idx = ccspan(p_umodes, c);
|
case '+':
|
||||||
if (p_umodes[idx] == 0)
|
onoff = 1;
|
||||||
ircpanic("Invalid user mode referenced");
|
break;
|
||||||
set_server_flag(from_server, idx, onoff);
|
case 'o':
|
||||||
|
case 'O':
|
||||||
if (c == 'o' || c == 'O')
|
set_server_operator(server, onoff);
|
||||||
set_server_operator(from_server, onoff);
|
/* fallthrough */
|
||||||
#if 0
|
default:
|
||||||
char c = tolower(*modes);
|
p = strchr(p_umodes, c);
|
||||||
size_t idx = (size_t) (strchr(umodes, c) - umodes);
|
if (p)
|
||||||
|
set_server_flag(server, p - p_umodes, onoff);
|
||||||
set_server_flag(from_server, USER_MODE << idx, onoff);
|
else
|
||||||
|
yell("Ignoring invalid user mode '%c' from server", c);
|
||||||
if (c == 'o' || c == 'O')
|
|
||||||
set_server_operator(from_server, onoff);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1536,7 +1536,7 @@ static void p_mode(char *from, char **ArgList)
|
|||||||
put_it("%s", convert_output_format(fget_string_var(fset), "%s %s %s %s %s", update_clock(GET_TIME), from, display_uh, target, line));
|
put_it("%s", convert_output_format(fget_string_var(fset), "%s %s %s %s %s", update_clock(GET_TIME), from, display_uh, target, line));
|
||||||
}
|
}
|
||||||
if (!my_stricmp(target, get_server_nickname(from_server)))
|
if (!my_stricmp(target, get_server_nickname(from_server)))
|
||||||
update_user_mode(line);
|
update_user_mode(from_server, line);
|
||||||
logmsg(LOG_MODE_USER, from, 0, "%s %s", target, line);
|
logmsg(LOG_MODE_USER, from, 0, "%s %s", target, line);
|
||||||
}
|
}
|
||||||
update_all_status(current_window, NULL, 0);
|
update_all_status(current_window, NULL, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user