* and 99% are on 10 or less.
*/
else {
- m = cptr->user->channel;
+ m = (cli_user(cptr))->channel;
while (m) {
assert(m->user == cptr);
if (m->channel == chptr)
return ipbuf;
}
-#if 0
-static int DoesOp(const char* modebuf)
-{
- assert(0 != modebuf);
- while (*modebuf) {
- if (*modebuf == 'o' || *modebuf == 'v')
- return 1;
- ++modebuf;
- }
- return 0;
-}
-
-/*
- * This function should be removed when all servers are 2.10
- */
-static void sendmodeto_one(struct Client* cptr, const char* from,
- const char* name, const char* mode,
- const char* param, time_t creationtime)
-{
- if (IsServer(cptr) && DoesOp(mode) && creationtime)
- sendto_one(cptr, ":%s MODE %s %s %s " TIME_T_FMT, /* XXX DEAD */
- from, name, mode, param, creationtime);
- else
- sendto_one(cptr, ":%s MODE %s %s %s", from, name, mode, param); /* XXX DEAD */
-}
-#endif /* 0 */
-
/*
* Subtract one user from channel i (and free channel
* block, if channel became empty).
for (i = 0; i <= HighestFd; i++)
{
struct Client *acptr = 0;
- if ((acptr = LocalClientArray[i]) && acptr->listing &&
- acptr->listing->chptr == chptr)
+ if ((acptr = LocalClientArray[i]) && cli_listing(acptr) &&
+ (cli_listing(acptr))->chptr == chptr)
{
list_next_channels(acptr, 1);
break; /* Only one client can list a channel */
assert(0 != ban->value.ban.banstr);
strcpy(ban->value.ban.banstr, banid);
- ban->value.ban.who = (char*) MyMalloc(strlen(cptr->name) + 1);
+ ban->value.ban.who = (char*) MyMalloc(strlen(cli_name(cptr)) + 1);
assert(0 != ban->value.ban.who);
- strcpy(ban->value.ban.who, cptr->name);
+ strcpy(ban->value.ban.who, cli_name(cptr));
ban->value.ban.when = TStime();
ban->flags = CHFL_BAN; /* This bit is never used I think... */
if (member && IsBanValid(member))
return IsBanned(member);
- s = make_nick_user_host(cptr->name, cptr->user->username, cptr->user->host);
+ s = make_nick_user_host(cli_name(cptr), (cli_user(cptr))->username,
+ (cli_user(cptr))->host);
for (tmp = chptr->banlist; tmp; tmp = tmp->next) {
if ((tmp->flags & CHFL_BAN_IPMASK)) {
if (!ip_s)
- ip_s = make_nick_user_ip(cptr->name, cptr->user->username, cptr->ip);
+ ip_s = make_nick_user_ip(cli_name(cptr), (cli_user(cptr))->username,
+ cli_ip(cptr));
if (match(tmp->value.ban.banstr, ip_s) == 0)
break;
}
assert(0 != chptr);
assert(0 != who);
- if (who->user) {
+ if (cli_user(who)) {
struct Membership* member = membershipFreeList;
if (member)
member->prev_member = 0;
chptr->members = member;
- member->next_channel = who->user->channel;
+ member->next_channel = (cli_user(who))->channel;
if (member->next_channel)
member->next_channel->prev_channel = member;
member->prev_channel = 0;
- who->user->channel = member;
+ (cli_user(who))->channel = member;
++chptr->users;
- ++who->user->joined;
+ ++((cli_user(who))->joined);
}
}
if (member->prev_channel)
member->prev_channel->next_channel = member->next_channel;
else
- member->user->user->channel = member->next_channel;
+ (cli_user(member->user))->channel = member->next_channel;
- --member->user->user->joined;
+ --(cli_user(member->user))->joined;
member->next_member = membershipFreeList;
membershipFreeList = member;
{
struct Membership* chan;
assert(0 != cptr);
- assert(0 != cptr->user);
+ assert(0 != cli_user(cptr));
- while ((chan = cptr->user->channel))
+ while ((chan = (cli_user(cptr))->channel))
remove_user_from_channel(cptr, chan->channel);
}
{
if (MyUser(cptr)) {
struct Membership* member;
- for (member = cptr->user->channel; member; member = member->next_channel) {
+ for (member = (cli_user(cptr))->channel; member;
+ member = member->next_channel) {
if (!IsVoicedOrOpped(member) && is_banned(cptr, member->channel, member))
return member->channel->chname;
}
*mbuf = '\0';
}
-#if 0
-static int send_mode_list(struct Client *cptr, char *chname,
- time_t creationtime, struct SLink *top,
- int mask, char flag)
-{
- struct SLink* lp;
- char* cp;
- char* name;
- int count = 0;
- int send = 0;
- int sent = 0;
-
- cp = modebuf + strlen(modebuf);
- if (*parabuf) /* mode +l or +k xx */
- count = 1;
- for (lp = top; lp; lp = lp->next)
- {
- if (!(lp->flags & mask))
- continue;
- if (mask == CHFL_BAN)
- name = lp->value.ban.banstr;
- else
- name = lp->value.cptr->name;
- if (strlen(parabuf) + strlen(name) + 11 < MODEBUFLEN)
- {
- strcat(parabuf, " ");
- strcat(parabuf, name);
- count++;
- *cp++ = flag;
- *cp = '\0';
- }
- else if (*parabuf)
- send = 1;
- if (count == 6)
- send = 1;
- if (send)
- {
- /* cptr is always a server! So we send creationtimes */
- sendmodeto_one(cptr, me.name, chname, modebuf, parabuf, creationtime);
- sent = 1;
- send = 0;
- *parabuf = '\0';
- cp = modebuf;
- *cp++ = '+';
- if (count != 6)
- {
- strcpy(parabuf, name);
- *cp++ = flag;
- }
- count = 0;
- *cp = '\0';
- }
- }
- return sent;
-}
-
-#endif /* 0 */
-
/*
* send "cptr" a full list of the modes for channel chptr.
*/
* Now a user CAN escape anything if invited -- Isomer
*/
- for (lp = sptr->user->invited; lp; lp = lp->next)
+ for (lp = (cli_user(sptr))->invited; lp; lp = lp->next)
if (lp->value.chptr == chptr)
return 0;
/*
* Delete last link in chain if the list is max length
*/
- assert(list_length(cptr->user->invited) == cptr->user->invites);
- if (cptr->user->invites>=MAXCHANNELSPERUSER)
- del_invite(cptr, cptr->user->invited->value.chptr);
+ assert(list_length((cli_user(cptr))->invited) == (cli_user(cptr))->invites);
+ if ((cli_user(cptr))->invites>=MAXCHANNELSPERUSER)
+ del_invite(cptr, (cli_user(cptr))->invited->value.chptr);
/*
* Add client to channel invite list
*/
/*
* Add channel to the end of the client invite list
*/
- for (tmp = &(cptr->user->invited); *tmp; tmp = &((*tmp)->next));
+ for (tmp = &((cli_user(cptr))->invited); *tmp; tmp = &((*tmp)->next));
inv = make_link();
inv->value.chptr = chptr;
inv->next = NULL;
(*tmp) = inv;
- cptr->user->invites++;
+ (cli_user(cptr))->invites++;
}
/*
*inv = tmp->next;
free_link(tmp);
tmp = 0;
- cptr->user->invites--;
+ (cli_user(cptr))->invites--;
break;
}
- for (inv = &(cptr->user->invited); (tmp = *inv); inv = &tmp->next)
+ for (inv = &((cli_user(cptr))->invited); (tmp = *inv); inv = &tmp->next)
if (tmp->value.chptr == chptr)
{
*inv = tmp->next;
/* List and skip all channels that are listen */
void list_next_channels(struct Client *cptr, int nr)
{
- struct ListingArgs *args = cptr->listing;
+ struct ListingArgs *args = cli_listing(cptr);
struct Channel *chptr = args->chptr;
chptr->mode.mode &= ~MODE_LISTED;
while (is_listed(chptr) || --nr >= 0)
{
for (; chptr; chptr = chptr->next)
{
- if (!cptr->user || (SecretChannel(chptr) && !find_channel_member(cptr, chptr)))
+ if (!cli_user(cptr) || (SecretChannel(chptr) && !find_channel_member(cptr, chptr)))
continue;
if (chptr->users > args->min_users && chptr->users < args->max_users &&
chptr->creationtime > args->min_time &&
}
if (!chptr)
{
- MyFree(cptr->listing);
- cptr->listing = NULL;
+ MyFree(cli_listing(cptr));
+ cli_listing(cptr) = NULL;
send_reply(cptr, RPL_LISTEND);
break;
}
}
if (chptr)
{
- cptr->listing->chptr = chptr;
+ (cli_listing(cptr))->chptr = chptr;
chptr->mode.mode |= MODE_LISTED;
}
}
remove_user_from_channel(who, chptr);
return;
}
- if (who->from == cptr) /* True on servers 1, 5 and 6 */
+ if (cli_from(who) == cptr) /* True on servers 1, 5 and 6 */
{
- struct Client *acptr = IsServer(sptr) ? sptr : sptr->user->server;
- for (; acptr != &me; acptr = acptr->serv->up)
- if (acptr == who->user->server) /* Case d) (server 5) */
+ struct Client *acptr = IsServer(sptr) ? sptr : (cli_user(sptr))->server;
+ for (; acptr != &me; acptr = (cli_serv(acptr))->up)
+ if (acptr == (cli_user(who))->server) /* Case d) (server 5) */
{
remove_user_from_channel(who, chptr);
return;
/* Ok, if we were given the OPMODE flag, hide the source if its a user */
if (mbuf->mb_dest & MODEBUF_DEST_OPMODE && !IsServer(mbuf->mb_source))
- app_source = mbuf->mb_source->user->server;
+ app_source = (cli_user(mbuf->mb_source))->server;
else
app_source = mbuf->mb_source;
}
if (MB_TYPE(mbuf, i) & (MODE_CHANOP | MODE_VOICE)) {
- tmp = strlen(MB_CLIENT(mbuf, i)->name);
+ tmp = strlen(cli_name(MB_CLIENT(mbuf, i)));
if ((totalbuflen - IRCD_MAX(5, tmp)) <= 0) /* don't overflow buffer */
MB_TYPE(mbuf, i) |= MODE_SAVE; /* save for later */
/* deal with clients... */
if (MB_TYPE(mbuf, i) & (MODE_CHANOP | MODE_VOICE))
- build_string(strptr, strptr_i, MB_CLIENT(mbuf, i)->name, 0, ' ');
+ build_string(strptr, strptr_i, cli_name(MB_CLIENT(mbuf, i)), 0, ' ');
/* deal with strings... */
else if (MB_TYPE(mbuf, i) & (MODE_KEY | MODE_BAN))
/* send the messages off to their destination */
if (mbuf->mb_dest & MODEBUF_DEST_HACK2) {
sendto_opmask_butone(0, SNO_HACK2, "HACK(2): %s MODE %s %s%s%s%s%s%s "
- "[%Tu]", app_source->name, mbuf->mb_channel->chname,
+ "[%Tu]", cli_name(app_source),
+ mbuf->mb_channel->chname,
rembuf_i ? "-" : "", rembuf, addbuf_i ? "+" : "",
addbuf, remstr, addstr,
mbuf->mb_channel->creationtime);
sendcmdto_serv_butone(&me, CMD_DESYNCH, mbuf->mb_connect,
":HACK: %s MODE %s %s%s%s%s%s%s [%Tu]",
- app_source->name, mbuf->mb_channel->chname,
+ cli_name(app_source), mbuf->mb_channel->chname,
rembuf_i ? "-" : "", rembuf,
addbuf_i ? "+" : "", addbuf, remstr, addstr,
mbuf->mb_channel->creationtime);
if (mbuf->mb_dest & MODEBUF_DEST_HACK3)
sendto_opmask_butone(0, SNO_HACK3, "BOUNCE or HACK(3): %s MODE %s "
- "%s%s%s%s%s%s [%Tu]", app_source->name,
+ "%s%s%s%s%s%s [%Tu]", cli_name(app_source),
mbuf->mb_channel->chname, rembuf_i ? "-" : "",
rembuf, addbuf_i ? "+" : "", addbuf, remstr, addstr,
mbuf->mb_channel->creationtime);
if (mbuf->mb_dest & MODEBUF_DEST_HACK4)
sendto_opmask_butone(0, SNO_HACK4, "HACK(4): %s MODE %s %s%s%s%s%s%s "
- "[%Tu]", app_source->name, mbuf->mb_channel->chname,
+ "[%Tu]", cli_name(app_source),
+ mbuf->mb_channel->chname,
rembuf_i ? "-" : "", rembuf, addbuf_i ? "+" : "",
addbuf, remstr, addstr,
mbuf->mb_channel->creationtime);
mode &= (MODE_ADD | MODE_DEL | MODE_PRIVATE | MODE_SECRET | MODE_MODERATED |
MODE_TOPICLIMIT | MODE_INVITEONLY | MODE_NOPRIVMSGS);
+ if (!(mode & ~(MODE_ADD | MODE_DEL))) /* don't add empty modes... */
+ return;
+
if (mode & MODE_ADD) {
mbuf->mb_rem &= ~mode;
mbuf->mb_add |= mode;
newban->next = 0;
DupString(newban->value.ban.banstr, t_str);
- newban->value.ban.who = state->sptr->name;
+ newban->value.ban.who = cli_name(state->sptr);
newban->value.ban.when = TStime();
newban->flags = CHFL_BAN | MODE_ADD;
(MyUser(state->sptr) && IsZombie(member))) {
if (MyUser(state->sptr))
send_reply(state->sptr, ERR_USERNOTINCHANNEL,
- state->cli_change[i].client->name, state->chptr->chname);
+ cli_name(state->cli_change[i].client),
+ state->chptr->chname);
continue;
}
if (state->flags & MODE_PARSE_FORCE) /* it was forced */
sendto_opmask_butone(0, SNO_HACK4, "Deop of +k user on %H by %s",
state->chptr,
- (IsServer(state->sptr) ? state->sptr->name :
- state->sptr->user->server->name));
+ (IsServer(state->sptr) ? cli_name(state->sptr) :
+ cli_name((cli_user(state->sptr))->server)));
else if (MyUser(state->sptr) && state->flags & MODE_PARSE_SET) {
send_reply(state->sptr, ERR_ISCHANSERVICE,
- state->cli_change[i].client->name, state->chptr->chname);
+ cli_name(state->cli_change[i].client),
+ state->chptr->chname);
continue;
}
}
IsOperOnLocalChannel(state->cli_change[i].client,
state->chptr->chname)) {
send_reply(state->sptr, ERR_ISOPERLCHAN,
- state->cli_change[i].client->name, state->chptr->chname);
+ cli_name(state->cli_change[i].client),
+ state->chptr->chname);
continue;
}
#endif