From: Michael Poole Date: Mon, 12 Jul 2004 19:06:38 +0000 (+0000) Subject: add FAQ to distribition; make compatible with gcc-2.95 X-Git-Tag: v1.4.0-rc1~204 X-Git-Url: http://git.pk910.de/?p=srvx.git;a=commitdiff_plain;h=ffd40e41f02f61c9dbd5ed61c7494a28dc0353f8 add FAQ to distribition; make compatible with gcc-2.95 * Add FAQ to EXTRA_DIST in root. * Name the anonymous union inside struct mod_chanmode. * Typecast printf() field width arguments to int. git-archimport-id: srvx@srvx.net--2004-srvx/srvx--devo--1.3--patch-72 --- diff --git a/ChangeLog b/ChangeLog index bcdcc45..802b87e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,26 @@ # arch-tag: automatic-ChangeLog--srvx@srvx.net--2004-srvx/srvx--devo--1.3 # +2004-07-12 19:06:38 GMT Michael Poole patch-72 + + Summary: + add FAQ to distribition; make compatible with gcc-2.95 + Revision: + srvx--devo--1.3--patch-72 + + * Add FAQ to EXTRA_DIST in root. + + * Name the anonymous union inside struct mod_chanmode. + + * Typecast printf() field width arguments to int. + + modified files: + ChangeLog Makefile.am src/chanserv.c src/hash.c + src/mod-helpserv.c src/mod-snoop.c src/opserv.c + src/proto-bahamut.c src/proto-common.c src/proto-p10.c + src/proto.h + + 2004-07-10 04:42:12 GMT Zoot patch-71 Summary: diff --git a/Makefile.am b/Makefile.am index dfad571..3c58dd1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -EXTRA_DIST = srvx.conf.example sockcheck.conf.example +EXTRA_DIST = FAQ srvx.conf.example sockcheck.conf.example SUBDIRS = @MY_SUBDIRS@ DIST_SUBDIRS = src rx diff --git a/src/chanserv.c b/src/chanserv.c index f93a75f..8299d0f 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -1195,7 +1195,7 @@ add_channel_ban(struct chanData *channel, const char *mask, char *owner, time_t if(irccasecmp(mask + l1 - l2, old_name)) continue; new_mask = alloca(MAXLEN); - sprintf(new_mask, "%.*s%s", l1-l2, mask, hidden_host_suffix); + sprintf(new_mask, "%.*s%s", (int)(l1-l2), mask, hidden_host_suffix); mask = new_mask; } safestrncpy(bd->mask, mask, sizeof(bd->mask)); @@ -1257,7 +1257,7 @@ expire_ban(void *data) { change.argc = 1; change.args[0].mode = MODE_REMOVE|MODE_BAN; - change.args[0].hostmask = bd->mask; + change.args[0].u.hostmask = bd->mask; mod_chanmode_announce(chanserv, bd->channel->channel, &change); break; } @@ -1289,7 +1289,8 @@ unregister_channel(struct chanData *channel, const char *reason) timeq_del(0, NULL, channel, TIMEQ_IGNORE_FUNC | TIMEQ_IGNORE_WHEN); - if (chanserv_conf.use_registered_mode) { + if(chanserv_conf.use_registered_mode) + { mod_chanmode_init(&change); change.modes_clear |= MODE_REGISTERED; mod_chanmode_announce(chanserv, channel->channel, &change); @@ -1749,11 +1750,11 @@ static CHANSERV_FUNC(cmd_register) cData = register_channel(channel, user->handle_info->handle); scan_user_presence(add_channel_user(cData, handle, UL_OWNER, 0, NULL), NULL); cData->modes = chanserv_conf.default_modes; - if (chanserv_conf.use_registered_mode) + if(chanserv_conf.use_registered_mode) cData->modes.modes_set |= MODE_REGISTERED; change = mod_chanmode_dup(&cData->modes, 1); change->args[change->argc].mode = MODE_CHANOP; - change->args[change->argc].member = AddChannelUser(chanserv, channel); + change->args[change->argc].u.member = AddChannelUser(chanserv, channel); change->argc++; mod_chanmode_announce(chanserv, channel, change); mod_chanmode_free(change); @@ -1905,7 +1906,7 @@ static CHANSERV_FUNC(cmd_move) mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_CHANOP; - change.args[0].member = AddChannelUser(chanserv, target); + change.args[0].u.member = AddChannelUser(chanserv, target); mod_chanmode_announce(chanserv, target, &change); } @@ -2167,7 +2168,7 @@ static CHANSERV_FUNC(cmd_opchan) mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_CHANOP; - change.args[0].member = GetUserMode(channel, chanserv); + change.args[0].u.member = GetUserMode(channel, chanserv); mod_chanmode_announce(chanserv, channel, &change); reply("CSMSG_OPCHAN_DONE", channel->name); return 1; @@ -2504,8 +2505,8 @@ static CHANSERV_FUNC(cmd_up) mod_chanmode_init(&change); change.argc = 1; - change.args[0].member = GetUserMode(channel, user); - if(!change.args[0].member) + change.args[0].u.member = GetUserMode(channel, user); + if(!change.args[0].u.member) { if(argc) reply("MSG_CHANNEL_ABSENT", channel->name); @@ -2535,7 +2536,7 @@ static CHANSERV_FUNC(cmd_up) reply("CSMSG_NO_ACCESS"); return 0; } - change.args[0].mode &= ~change.args[0].member->modes; + change.args[0].mode &= ~change.args[0].u.member->modes; if(!change.args[0].mode) { if(argc) @@ -2552,22 +2553,22 @@ static CHANSERV_FUNC(cmd_down) mod_chanmode_init(&change); change.argc = 1; - change.args[0].member = GetUserMode(channel, user); - if(!change.args[0].member) + change.args[0].u.member = GetUserMode(channel, user); + if(!change.args[0].u.member) { if(argc) reply("MSG_CHANNEL_ABSENT", channel->name); return 0; } - if(!change.args[0].member->modes) + if(!change.args[0].u.member->modes) { if(argc) reply("CSMSG_ALREADY_DOWN", channel->name); return 0; } - change.args[0].mode = MODE_REMOVE | change.args[0].member->modes; + change.args[0].mode = MODE_REMOVE | change.args[0].u.member->modes; modcmd_chanmode_announce(&change); return 1; } @@ -2616,8 +2617,8 @@ modify_users(struct userNode *user, struct chanNode *channel, unsigned int argc, if(!(victim = GetUserH(argv[ii]))) continue; change->args[valid].mode = mode; - change->args[valid].member = GetUserMode(channel, victim); - if(!change->args[valid].member) + change->args[valid].u.member = GetUserMode(channel, victim); + if(!change->args[valid].u.member) continue; if(validate && !validate(user, channel, victim)) continue; @@ -2895,7 +2896,7 @@ eject_user(struct userNode *user, struct chanNode *channel, unsigned int argc, c if(irccasecmp(ban + l1 - l2, old_name)) continue; new_mask = malloc(MAXLEN); - sprintf(new_mask, "%.*s%s", l1-l2, ban, hidden_host_suffix); + sprintf(new_mask, "%.*s%s", (int)(l1-l2), ban, hidden_host_suffix); free(ban); name = ban = new_mask; } @@ -2920,12 +2921,12 @@ eject_user(struct userNode *user, struct chanNode *channel, unsigned int argc, c for(n = 0; n < victimCount; ++n) { change->args[n].mode = MODE_REMOVE|MODE_CHANOP|MODE_VOICE; - change->args[n].member = victims[n]; + change->args[n].u.member = victims[n]; } if(!exists) { change->args[n].mode = MODE_BAN; - change->args[n++].hostmask = ban; + change->args[n++].u.hostmask = ban; } change->argc = n; if(cmd) @@ -3033,7 +3034,7 @@ find_matching_bans(struct banList *bans, struct userNode *actee, const char *mas if(!match[ii]) continue; change->args[count].mode = MODE_REMOVE | MODE_BAN; - change->args[count++].hostmask = bans->list[ii]->ban; + change->args[count++].u.hostmask = bans->list[ii]->ban; } return change; } @@ -3144,7 +3145,7 @@ static CHANSERV_FUNC(cmd_unbanall) for(ii=0; iibanlist.used; ii++) { change->args[ii].mode = MODE_REMOVE | MODE_BAN; - change->args[ii].hostmask = channel->banlist.list[ii]->ban; + change->args[ii].u.hostmask = channel->banlist.list[ii]->ban; } modcmd_chanmode_announce(change); mod_chanmode_free(change); @@ -4096,7 +4097,7 @@ static CHANSERV_FUNC(cmd_resync) if(!(mn->modes & MODE_CHANOP)) { changes->args[used].mode = MODE_CHANOP; - changes->args[used++].member = mn; + changes->args[used++].u.member = mn; } } else if(!cData->lvlOpts[lvlGiveVoice] @@ -4105,12 +4106,12 @@ static CHANSERV_FUNC(cmd_resync) if(mn->modes & MODE_CHANOP) { changes->args[used].mode = MODE_REMOVE | (mn->modes & ~MODE_VOICE); - changes->args[used++].member = mn; + changes->args[used++].u.member = mn; } if(!(mn->modes & MODE_VOICE)) { changes->args[used].mode = MODE_VOICE; - changes->args[used++].member = mn; + changes->args[used++].u.member = mn; } } else @@ -4118,7 +4119,7 @@ static CHANSERV_FUNC(cmd_resync) if(mn->modes) { changes->args[used].mode = MODE_REMOVE | mn->modes; - changes->args[used++].member = mn; + changes->args[used++].u.member = mn; } } } @@ -4437,7 +4438,7 @@ chanserv_expire_suspension(void *data) mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_CHANOP; - change.args[0].member = AddChannelUser(chanserv, channel); + change.args[0].u.member = AddChannelUser(chanserv, channel); mod_chanmode_announce(chanserv, channel, &change); } @@ -4964,7 +4965,7 @@ static MODCMD_FUNC(chan_opt_offchannel) mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_CHANOP; - change.args[0].member = AddChannelUser(chanserv, channel); + change.args[0].u.member = AddChannelUser(chanserv, channel); mod_chanmode_announce(chanserv, channel, &change); } cData->flags &= ~CHANNEL_OFFCHANNEL; @@ -5858,7 +5859,7 @@ handle_join(struct modeNode *mNode) } change.args[0].mode = MODE_BAN; - change.args[0].hostmask = bData->mask; + change.args[0].u.hostmask = bData->mask; mod_chanmode_announce(chanserv, channel, &change); KickChannelUser(user, channel, chanserv, kick_reason); return 1; @@ -5940,7 +5941,7 @@ handle_join(struct modeNode *mNode) if(modes & MODE_CHANOP) modes &= ~MODE_VOICE; change.args[0].mode = modes; - change.args[0].member = mNode; + change.args[0].u.member = mNode; mod_chanmode_announce(chanserv, channel, &change); } if(greeting && !user->uplink->burst) @@ -5995,7 +5996,7 @@ handle_auth(struct userNode *user, UNUSED_ARG(struct handle_info *old_handle)) change.args[0].mode = MODE_VOICE; else change.args[0].mode = 0; - change.args[0].member = mn; + change.args[0].u.member = mn; if(change.args[0].mode) mod_chanmode_announce(chanserv, cn, &change); } @@ -6023,7 +6024,7 @@ handle_auth(struct userNode *user, UNUSED_ARG(struct handle_info *old_handle)) if(!user_matches_glob(user, ban->mask, 1)) continue; change.args[0].mode = MODE_BAN; - change.args[0].hostmask = ban->mask; + change.args[0].u.hostmask = ban->mask; mod_chanmode_announce(chanserv, channel, &change); sprintf(kick_reason, "(%s) %s", ban->owner, ban->reason); KickChannelUser(user, channel, chanserv, kick_reason); @@ -6157,7 +6158,7 @@ handle_mode(struct chanNode *channel, struct userNode *user, const struct mod_ch { if((change->args[ii].mode & (MODE_REMOVE|MODE_CHANOP)) == (MODE_REMOVE|MODE_CHANOP)) { - const struct userNode *victim = change->args[ii].member->user; + const struct userNode *victim = change->args[ii].u.member->user; if(!protect_user(victim, user, channel->channel_info)) continue; if(!bounce) @@ -6165,36 +6166,36 @@ handle_mode(struct chanNode *channel, struct userNode *user, const struct mod_ch if(!deopped) { bounce->args[bnc].mode = MODE_REMOVE | MODE_CHANOP; - bounce->args[bnc].member = GetUserMode(channel, user); - if(bounce->args[bnc].member) + bounce->args[bnc].u.member = GetUserMode(channel, user); + if(bounce->args[bnc].u.member) bnc++; deopped = 1; } bounce->args[bnc].mode = MODE_CHANOP; - bounce->args[bnc].member = change->args[ii].member; + bounce->args[bnc].u.member = change->args[ii].u.member; bnc++; send_message(user, chanserv, "CSMSG_USER_PROTECTED", victim->nick); } else if(change->args[ii].mode & MODE_CHANOP) { - const struct userNode *victim = change->args[ii].member->user; + const struct userNode *victim = change->args[ii].u.member->user; if(IsService(victim) || validate_op(user, channel, (struct userNode*)victim)) continue; if(!bounce) bounce = mod_chanmode_alloc(change->argc + 1 - ii); bounce->args[bnc].mode = MODE_REMOVE | MODE_CHANOP; - bounce->args[bnc].member = change->args[ii].member; + bounce->args[bnc].u.member = change->args[ii].u.member; bnc++; } else if((change->args[ii].mode & (MODE_REMOVE | MODE_BAN)) == MODE_BAN) { - const char *ban = change->args[ii].hostmask; + const char *ban = change->args[ii].u.hostmask; if(!bad_channel_ban(channel, user, ban, NULL, NULL)) continue; if(!bounce) bounce = mod_chanmode_alloc(change->argc + 1 - ii); bounce->args[bnc].mode = MODE_REMOVE | MODE_BAN; - bounce->args[bnc].hostmask = ban; + bounce->args[bnc].u.hostmask = ban; bnc++; send_message(user, chanserv, "CSMSG_MASK_PROTECTED", ban); } @@ -6240,7 +6241,7 @@ handle_nick_change(struct userNode *user, UNUSED_ARG(const char *old_nick)) { if(!user_matches_glob(user, bData->mask, 1)) continue; - change.args[0].hostmask = bData->mask; + change.args[0].u.hostmask = bData->mask; mod_chanmode_announce(chanserv, channel, &change); sprintf(kick_reason, "(%s) %s", bData->owner, bData->reason); KickChannelUser(user, channel, chanserv, kick_reason); @@ -6724,7 +6725,7 @@ chanserv_channel_read(const char *key, struct record_data *hir) mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_CHANOP; - change.args[0].member = AddChannelUser(chanserv, cNode); + change.args[0].u.member = AddChannelUser(chanserv, cNode); mod_chanmode_announce(chanserv, cNode, &change); } @@ -6748,7 +6749,7 @@ chanserv_channel_read(const char *key, struct record_data *hir) && (argc = split_line(str, 0, ArrayLength(argv), argv)) && (modes = mod_chanmode_parse(cNode, argv, argc, MCP_KEY_FREE))) { cData->modes = *modes; - if (chanserv_conf.use_registered_mode) + if(chanserv_conf.use_registered_mode) cData->modes.modes_set |= MODE_REGISTERED; if(cData->modes.argc > 1) cData->modes.argc = 1; diff --git a/src/hash.c b/src/hash.c index 439b68d..fabda04 100644 --- a/src/hash.c +++ b/src/hash.c @@ -148,7 +148,7 @@ ReintroduceUser(struct userNode *user) irc_join(user, mn->channel); if (mn->modes) { change.args[0].mode = mn->modes; - change.args[0].member = mn; + change.args[0].u.member = mn; mod_chanmode_announce(user, mn->channel, &change); } } @@ -327,13 +327,13 @@ wipeout_channel(struct chanNode *cNode, time_t new_time, char **modes, unsigned struct modeNode *mn = cNode->members.list[nn]; if ((mn->modes & MODE_CHANOP) && IsService(mn->user) && IsLocal(mn->user)) { change->args[argc].mode = MODE_CHANOP; - change->args[argc].member = mn; + change->args[argc].u.member = mn; argc++; } } assert(argc == change->argc); - change->args[0].member->modes &= ~MODE_CHANOP; - mod_chanmode_announce(change->args[0].member->user, cNode, change); + change->args[0].u.member->modes &= ~MODE_CHANOP; + mod_chanmode_announce(change->args[0].u.member->user, cNode, change); mod_chanmode_free(change); } } diff --git a/src/mod-helpserv.c b/src/mod-helpserv.c index 5b75c1e..1412021 100644 --- a/src/mod-helpserv.c +++ b/src/mod-helpserv.c @@ -1676,7 +1676,7 @@ static HELPSERV_FUNC(cmd_close) { mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_REMOVE | MODE_VOICE; - change.args[0].member = mn; + change.args[0].u.member = mn; mod_chanmode_announce(hs->helpserv, hs->helpchan, &change); } } @@ -1880,7 +1880,7 @@ static int helpserv_assign(int from_opserv, struct helpserv_bot *hs, struct user mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_VOICE; - if ((change.args[0].member = GetUserMode(hs->helpchan, req->user))) + if ((change.args[0].u.member = GetUserMode(hs->helpchan, req->user))) mod_chanmode_announce(hs->helpserv, hs->helpchan, &change); } @@ -2257,7 +2257,7 @@ static HELPSERV_FUNC(cmd_move) { mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_CHANOP; - change.args[0].member = AddChannelUser(hs->helpserv, hs->helpchan); + change.args[0].u.member = AddChannelUser(hs->helpserv, hs->helpchan); mod_chanmode_announce(hs->helpserv, hs->helpchan, &change); } @@ -2336,7 +2336,7 @@ static void helpserv_page_helper_gone(struct helpserv_bot *hs, struct helpserv_r mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_REMOVE | MODE_VOICE; - change.args[0].member = mn; + change.args[0].u.member = mn; mod_chanmode_announce(hs->helpserv, hs->helpchan, &change); } if(req->handle) @@ -2618,7 +2618,7 @@ static struct helpserv_bot *register_helpserv(const char *nick, const char *help mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_CHANOP; - change.args[0].member = AddChannelUser(hs->helpserv, hs->helpchan); + change.args[0].u.member = AddChannelUser(hs->helpserv, hs->helpchan); mod_chanmode_announce(hs->helpserv, hs->helpchan, &change); } @@ -2875,7 +2875,7 @@ static void set_page_target(struct helpserv_bot *hs, enum page_source idx, const mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_CHANOP; - change.args[0].member = AddChannelUser(hs->helpserv, new_target); + change.args[0].u.member = AddChannelUser(hs->helpserv, new_target); mod_chanmode_announce(hs->helpserv, new_target, &change); } hs->page_targets[idx] = new_target; @@ -3906,7 +3906,7 @@ static void associate_requests_bybot(struct helpserv_bot *hs, struct userNode *u mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_VOICE; - if ((change.args[0].member = GetUserMode(hs->helpchan, user))) + if ((change.args[0].u.member = GetUserMode(hs->helpchan, user))) mod_chanmode_announce(hs->helpserv, hs->helpchan, &change); } } diff --git a/src/mod-snoop.c b/src/mod-snoop.c index 3d463a3..d0589d2 100644 --- a/src/mod-snoop.c +++ b/src/mod-snoop.c @@ -189,7 +189,7 @@ snoop_finalize(void) { mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_CHANOP; - change.args[0].member = AddChannelUser(snoop_cfg.bot, snoop_cfg.channel); + change.args[0].u.member = AddChannelUser(snoop_cfg.bot, snoop_cfg.channel); mod_chanmode_announce(snoop_cfg.bot, snoop_cfg.channel, &change); return 1; } diff --git a/src/opserv.c b/src/opserv.c index ed6bd5f..11cd7cf 100644 --- a/src/opserv.c +++ b/src/opserv.c @@ -402,16 +402,16 @@ static MODCMD_FUNC(cmd_ban) change.argc = 1; change.args[0].mode = MODE_BAN; if (is_ircmask(argv[1])) - change.args[0].hostmask = strdup(argv[1]); + change.args[0].u.hostmask = strdup(argv[1]); else if ((victim = GetUserH(argv[1]))) - change.args[0].hostmask = generate_hostmask(victim, 0); + change.args[0].u.hostmask = generate_hostmask(victim, 0); else { reply("OSMSG_INVALID_IRCMASK", argv[1]); return 0; } modcmd_chanmode_announce(&change); - reply("OSMSG_ADDED_BAN", change.args[0].hostmask, channel->name); - free((char*)change.args[0].hostmask); + reply("OSMSG_ADDED_BAN", change.args[0].u.hostmask, channel->name); + free((char*)change.args[0].u.hostmask); return 1; } @@ -522,7 +522,7 @@ static MODCMD_FUNC(cmd_clearbans) change = mod_chanmode_alloc(channel->banlist.used); for (ii=0; iibanlist.used; ii++) { change->args[ii].mode = MODE_REMOVE | MODE_BAN; - change->args[ii].hostmask = channel->banlist.list[ii]->ban; + change->args[ii].u.hostmask = channel->banlist.list[ii]->ban; } modcmd_chanmode_announce(change); mod_chanmode_free(change); @@ -559,7 +559,7 @@ static MODCMD_FUNC(cmd_deop) || !(mn->modes & MODE_CHANOP)) continue; change->args[count].mode = MODE_REMOVE | MODE_CHANOP; - change->args[count++].member = mn; + change->args[count++].u.member = mn; } if (count) { change->argc = count; @@ -581,7 +581,7 @@ static MODCMD_FUNC(cmd_deopall) if (IsService(mn->user) || !(mn->modes & MODE_CHANOP)) continue; change->args[count].mode = MODE_REMOVE | MODE_CHANOP; - change->args[count++].member = mn; + change->args[count++].u.member = mn; } if (count) { change->argc = count; @@ -923,7 +923,7 @@ static MODCMD_FUNC(cmd_join) mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_CHANOP; - change.args[0].member = AddChannelUser(bot, channel); + change.args[0].u.member = AddChannelUser(bot, channel); modcmd_chanmode_announce(&change); } irc_fetchtopic(bot, channel->name); @@ -968,7 +968,7 @@ static MODCMD_FUNC(cmd_kickall) struct mod_chanmode change; mod_chanmode_init(&change); change.args[0].mode = MODE_CHANOP; - change.args[0].member = AddChannelUser(bot, channel); + change.args[0].u.member = AddChannelUser(bot, channel); modcmd_chanmode_announce(&change); } if (argc < 2) { @@ -1018,7 +1018,7 @@ static MODCMD_FUNC(cmd_kickban) mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_BAN; - change.args[0].hostmask = mask = generate_hostmask(target, 0); + change.args[0].u.hostmask = mask = generate_hostmask(target, 0); modcmd_chanmode_announce(&change); KickChannelUser(target, channel, cmd->parent->bot, reason); free(mask); @@ -1038,13 +1038,13 @@ static MODCMD_FUNC(cmd_kickbanall) if (!(inchan = GetUserMode(channel, bot) ? 1 : 0)) { change = mod_chanmode_alloc(2); change->args[0].mode = MODE_CHANOP; - change->args[0].member = AddChannelUser(bot, channel); + change->args[0].u.member = AddChannelUser(bot, channel); change->args[1].mode = MODE_BAN; - change->args[1].hostmask = "*!*@*"; + change->args[1].u.hostmask = "*!*@*"; } else { change = mod_chanmode_alloc(1); change->args[0].mode = MODE_BAN; - change->args[0].hostmask = "*!*@*"; + change->args[0].u.hostmask = "*!*@*"; } modcmd_chanmode_announce(change); mod_chanmode_free(change); @@ -1117,7 +1117,7 @@ static MODCMD_FUNC(cmd_op) if (mn->modes & MODE_CHANOP) continue; change->args[count].mode = MODE_CHANOP; - change->args[count++].member = mn; + change->args[count++].u.member = mn; } if (count) { change->argc = count; @@ -1139,7 +1139,7 @@ static MODCMD_FUNC(cmd_opall) if (mn->modes & MODE_CHANOP) continue; change->args[count].mode = MODE_CHANOP; - change->args[count++].member = mn; + change->args[count++].u.member = mn; } if (count) { change->argc = count; @@ -1212,7 +1212,7 @@ static MODCMD_FUNC(cmd_unban) mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_REMOVE | MODE_BAN; - change.args[0].hostmask = argv[1]; + change.args[0].u.hostmask = argv[1]; modcmd_chanmode_announce(&change); reply("OSMSG_UNBAN_DONE", channel->name); return 1; @@ -1229,7 +1229,7 @@ static MODCMD_FUNC(cmd_voiceall) if (mn->modes & (MODE_CHANOP|MODE_VOICE)) continue; change->args[count].mode = MODE_VOICE; - change->args[count++].member = mn; + change->args[count++].u.member = mn; } if (count) { change->argc = count; @@ -1251,7 +1251,7 @@ static MODCMD_FUNC(cmd_devoiceall) if (!(mn->modes & MODE_VOICE)) continue; change->args[count].mode = MODE_REMOVE | MODE_VOICE; - change->args[count++].member = mn; + change->args[count++].u.member = mn; } if (count) { change->argc = count; @@ -1803,9 +1803,9 @@ opserv_shutdown_channel(struct chanNode *channel, const char *reason) change = mod_chanmode_alloc(2); change->modes_set = MODE_SECRET | MODE_INVITEONLY; change->args[0].mode = MODE_CHANOP; - change->args[0].member = AddChannelUser(opserv, channel); + change->args[0].u.member = AddChannelUser(opserv, channel); change->args[1].mode = MODE_BAN; - change->args[1].hostmask = "*!*@*"; + change->args[1].u.hostmask = "*!*@*"; mod_chanmode_announce(opserv, channel, change); mod_chanmode_free(change); for (nn=channel->members.used; nn>0; ) { @@ -1884,7 +1884,7 @@ opserv_join_check(struct modeNode *mNode) if (!GetUserMode(channel, opserv)) { /* If we aren't in the channel, join it. */ change.args[0].mode = MODE_CHANOP; - change.args[0].member = AddChannelUser(opserv, channel); + change.args[0].u.member = AddChannelUser(opserv, channel); change.argc++; } if (!(channel->modes & MODE_MODERATED)) @@ -2286,8 +2286,8 @@ static MODCMD_FUNC(cmd_clone) mod_chanmode_init(&change); change.argc = 1; change.args[0].mode = MODE_CHANOP; - change.args[0].member = GetUserMode(channel, clone); - if (!change.args[0].member) { + change.args[0].u.member = GetUserMode(channel, clone); + if (!change.args[0].u.member) { reply("OSMSG_NOT_ON_CHANNEL", clone->nick, channel->name); return 0; } diff --git a/src/proto-bahamut.c b/src/proto-bahamut.c index 689e26c..8df3b0f 100644 --- a/src/proto-bahamut.c +++ b/src/proto-bahamut.c @@ -1246,7 +1246,6 @@ mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, un break; #define do_chan_mode(FLAG) do { if (add) change->modes_set |= FLAG, change->modes_clear &= ~FLAG; else change->modes_clear |= FLAG, change->modes_set &= ~FLAG; } while(0) case 'R': do_chan_mode(MODE_REGONLY); break; - case 'r': do_chan_mode(MODE_REGISTERED); break; case 'D': do_chan_mode(MODE_DELAYJOINS); break; case 'c': do_chan_mode(MODE_NOCOLORS); break; case 'i': do_chan_mode(MODE_INVITEONLY); break; @@ -1297,7 +1296,7 @@ mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, un change->args[ch_arg].mode = MODE_BAN; if (!add) change->args[ch_arg].mode |= MODE_REMOVE; - change->args[ch_arg++].hostmask = modes[in_arg++]; + change->args[ch_arg++].u.hostmask = modes[in_arg++]; break; case 'o': case 'v': { @@ -1312,7 +1311,7 @@ mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, un victim = GetUserH(modes[in_arg++]); if (!victim) continue; - if ((change->args[ch_arg].member = GetUserMode(channel, victim))) + if ((change->args[ch_arg].u.member = GetUserMode(channel, victim))) ch_arg++; break; } @@ -1403,13 +1402,13 @@ mod_chanmode_announce(struct userNode *who, struct chanNode *channel, struct mod continue; switch (change->args[arg].mode & ~MODE_REMOVE) { case MODE_BAN: - mod_chanmode_append(&chbuf, 'b', change->args[arg].hostmask); + mod_chanmode_append(&chbuf, 'b', change->args[arg].u.hostmask); break; default: if (change->args[arg].mode & MODE_CHANOP) - mod_chanmode_append(&chbuf, 'o', change->args[arg].member->user->nick); + mod_chanmode_append(&chbuf, 'o', change->args[arg].u.member->user->nick); if (change->args[arg].mode & MODE_VOICE) - mod_chanmode_append(&chbuf, 'v', change->args[arg].member->user->nick); + mod_chanmode_append(&chbuf, 'v', change->args[arg].u.member->user->nick); break; } } @@ -1443,13 +1442,13 @@ mod_chanmode_announce(struct userNode *who, struct chanNode *channel, struct mod continue; switch (change->args[arg].mode) { case MODE_BAN: - mod_chanmode_append(&chbuf, 'b', change->args[arg].hostmask); + mod_chanmode_append(&chbuf, 'b', change->args[arg].u.hostmask); break; default: if (change->args[arg].mode & MODE_CHANOP) - mod_chanmode_append(&chbuf, 'o', change->args[arg].member->user->nick); + mod_chanmode_append(&chbuf, 'o', change->args[arg].u.member->user->nick); if (change->args[arg].mode & MODE_VOICE) - mod_chanmode_append(&chbuf, 'v', change->args[arg].member->user->nick); + mod_chanmode_append(&chbuf, 'v', change->args[arg].u.member->user->nick); break; } } diff --git a/src/proto-common.c b/src/proto-common.c index 1b8c2f5..2233402 100644 --- a/src/proto-common.c +++ b/src/proto-common.c @@ -568,14 +568,14 @@ mod_chanmode_apply(struct userNode *who, struct chanNode *channel, struct mod_ch * to be more specific than an existing ban. */ for (jj=0; jjbanlist.used; ++jj) { - if (match_ircglobs(change->args[ii].hostmask, channel->banlist.list[jj]->ban)) { + if (match_ircglobs(change->args[ii].u.hostmask, channel->banlist.list[jj]->ban)) { banList_remove(&channel->banlist, channel->banlist.list[jj]); free(channel->banlist.list[jj]); jj--; } } bn = calloc(1, sizeof(*bn)); - safestrncpy(bn->ban, change->args[ii].hostmask, sizeof(bn->ban)); + safestrncpy(bn->ban, change->args[ii].u.hostmask, sizeof(bn->ban)); if (who) safestrncpy(bn->who, who->nick, sizeof(bn->who)); else @@ -585,7 +585,7 @@ mod_chanmode_apply(struct userNode *who, struct chanNode *channel, struct mod_ch break; case MODE_REMOVE|MODE_BAN: for (jj=0; jjbanlist.used; ++jj) { - if (strcmp(channel->banlist.list[jj]->ban, change->args[ii].hostmask)) + if (strcmp(channel->banlist.list[jj]->ban, change->args[ii].u.hostmask)) continue; free(channel->banlist.list[jj]); banList_remove(&channel->banlist, channel->banlist.list[jj]); @@ -599,9 +599,9 @@ mod_chanmode_apply(struct userNode *who, struct chanNode *channel, struct mod_ch case MODE_REMOVE|MODE_VOICE: case MODE_REMOVE|MODE_VOICE|MODE_CHANOP: if (change->args[ii].mode & MODE_REMOVE) - change->args[ii].member->modes &= ~change->args[ii].mode; + change->args[ii].u.member->modes &= ~change->args[ii].mode; else - change->args[ii].member->modes |= change->args[ii].mode; + change->args[ii].u.member->modes |= change->args[ii].mode; break; default: assert(0 && "Invalid mode argument"); diff --git a/src/proto-p10.c b/src/proto-p10.c index 6dfe841..2471cb4 100644 --- a/src/proto-p10.c +++ b/src/proto-p10.c @@ -2114,7 +2114,7 @@ mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, un change->args[ch_arg].mode = MODE_BAN; if (!add) change->args[ch_arg].mode |= MODE_REMOVE; - change->args[ch_arg++].hostmask = modes[in_arg++]; + change->args[ch_arg++].u.hostmask = modes[in_arg++]; break; case 'o': case 'v': { @@ -2132,7 +2132,7 @@ mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, un victim = GetUserH(modes[in_arg++]); if (!victim) continue; - if ((change->args[ch_arg].member = GetUserMode(channel, victim))) + if ((change->args[ch_arg].u.member = GetUserMode(channel, victim))) ch_arg++; break; } @@ -2233,13 +2233,13 @@ mod_chanmode_announce(struct userNode *who, struct chanNode *channel, struct mod chbuf.modes[chbuf.modes_used++] = mode = '-'; switch (change->args[arg].mode & ~MODE_REMOVE) { case MODE_BAN: - mod_chanmode_append(&chbuf, 'b', change->args[arg].hostmask); + mod_chanmode_append(&chbuf, 'b', change->args[arg].u.hostmask); break; default: if (change->args[arg].mode & MODE_CHANOP) - mod_chanmode_append(&chbuf, 'o', change->args[arg].member->user->numeric); + mod_chanmode_append(&chbuf, 'o', change->args[arg].u.member->user->numeric); if (change->args[arg].mode & MODE_VOICE) - mod_chanmode_append(&chbuf, 'v', change->args[arg].member->user->numeric); + mod_chanmode_append(&chbuf, 'v', change->args[arg].u.member->user->numeric); break; } } @@ -2275,13 +2275,13 @@ mod_chanmode_announce(struct userNode *who, struct chanNode *channel, struct mod chbuf.modes[chbuf.modes_used++] = mode = '+'; switch (change->args[arg].mode) { case MODE_BAN: - mod_chanmode_append(&chbuf, 'b', change->args[arg].hostmask); + mod_chanmode_append(&chbuf, 'b', change->args[arg].u.hostmask); break; default: if (change->args[arg].mode & MODE_CHANOP) - mod_chanmode_append(&chbuf, 'o', change->args[arg].member->user->numeric); + mod_chanmode_append(&chbuf, 'o', change->args[arg].u.member->user->numeric); if (change->args[arg].mode & MODE_VOICE) - mod_chanmode_append(&chbuf, 'v', change->args[arg].member->user->numeric); + mod_chanmode_append(&chbuf, 'v', change->args[arg].u.member->user->numeric); break; } } diff --git a/src/proto.h b/src/proto.h index 3f4143b..342cedb 100644 --- a/src/proto.h +++ b/src/proto.h @@ -199,7 +199,7 @@ struct mod_chanmode { union { struct modeNode *member; const char *hostmask; - }; + } u; } args[1]; }; #define MCP_ALLOW_OVB 0x0001 /* allow op, voice, ban manipulation */