static void os_cmd_mode(sourceinfo_t *si, int parc, char *parv[]) { char *channel = parv[0]; char *mode = parv[1]; channel_t *c; int modeparc; char *modeparv[256]; if (!channel || !mode) { command_fail(si, fault_needmoreparams, STR_INSUFFICIENT_PARAMS, "MODE"); command_fail(si, fault_needmoreparams, _("Syntax: MODE <channel> <parameters>")); return; } c = channel_find(channel); if (!c) { command_fail(si, fault_nosuch_target, _("Channel \2%s\2 does not exist."), channel); return; } wallops("\2%s\2 is using MODE on \2%s\2 (set: \2%s\2)", get_oper_name(si), channel, mode); logcommand(si, CMDLOG_ADMIN, "MODE: \2%s\2 on \2%s\2", mode, channel); modeparc = sjtoken(mode, ' ', modeparv); channel_mode(si->service->me, c, modeparc, modeparv); command_success_nodata(si, _("Set modes \2%s\2 on \2%s\2."), mode, channel); }
static char *script_channel_mode(char *chan, char *nick) { char *buf; buf = malloc(64); channel_mode(chan, nick, buf); return(buf); }
static void m_mode(sourceinfo_t *si, int parc, char *parv[]) { user_t *u; char *p; if (*parv[0] == '#') channel_mode(NULL, channel_find(parv[0]), parc - 1, &parv[1]); else { /* Yes this is a nick and not a UID -- jilles */ u = user_find_named(parv[0]); if (u == NULL) { slog(LG_DEBUG, "m_mode(): user mode for unknown user %s", parv[0]); return; } user_mode(u, parv[1]); if (strchr(parv[1], 'x')) { u->flags |= UF_HIDEHOSTREQ; check_hidehost(u); } if (strchr(parv[1], 'h')) { if (parc > 2) { /* assume +h */ p = strchr(parv[2], '@'); if (p == NULL) strlcpy(u->vhost, parv[2], sizeof u->vhost); else { strlcpy(u->vhost, p + 1, sizeof u->vhost); strlcpy(u->user, parv[2], sizeof u->user); p = strchr(u->user, '@'); if (p != NULL) *p = '\0'; } slog(LG_DEBUG, "m_mode(): user %s setting vhost %s@%s", u->nick, u->user, u->vhost); } else { /* must be -h */ /* XXX we don't know the original ident */ slog(LG_DEBUG, "m_mode(): user %s turning off vhost", u->nick); strlcpy(u->vhost, u->host, sizeof u->vhost); /* revert to +x vhost if applicable */ check_hidehost(u); } } } }
static void m_mode(sourceinfo_t *si, int parc, char *parv[]) { user_t *u; if (*parv[0] == '#') channel_mode(NULL, channel_find(parv[0]), parc - 1, &parv[1]); else { /* Yes this is a nick and not a UID -- jilles */ u = user_find_named(parv[0]); if (u == NULL) { slog(LG_DEBUG, "m_mode(): user mode for unknown user %s", parv[0]); return; } user_mode(u, parv[1]); if (strchr(parv[1], 'x')) { u->flags |= UF_HIDEHOSTREQ; check_hidehost(u); } } }