| 53 |
|
static unsigned int simple_modes_mask; /* bit mask of simple modes already set */ |
| 54 |
|
extern mp_pool_t *ban_pool; |
| 55 |
|
|
| 56 |
+ |
const struct mode_letter chan_modes[] = |
| 57 |
+ |
{ |
| 58 |
+ |
{ MODE_NOCTRL, 'c' }, |
| 59 |
+ |
{ MODE_INVITEONLY, 'i' }, |
| 60 |
+ |
{ MODE_MODERATED, 'm' }, |
| 61 |
+ |
{ MODE_NOPRIVMSGS, 'n' }, |
| 62 |
+ |
{ MODE_PRIVATE, 'p' }, |
| 63 |
+ |
{ MODE_REGISTERED, 'r' }, |
| 64 |
+ |
{ MODE_SECRET, 's' }, |
| 65 |
+ |
{ MODE_TOPICLIMIT, 't' }, |
| 66 |
+ |
{ MODE_MODREG, 'M' }, |
| 67 |
+ |
{ MODE_OPERONLY, 'O' }, |
| 68 |
+ |
{ MODE_REGONLY, 'R' }, |
| 69 |
+ |
{ MODE_SSLONLY, 'S' }, |
| 70 |
+ |
{ 0, '\0' } |
| 71 |
+ |
}; |
| 72 |
+ |
|
| 73 |
|
|
| 74 |
|
/* check_string() |
| 75 |
|
* |
| 280 |
|
return 0; |
| 281 |
|
} |
| 282 |
|
|
| 266 |
– |
const struct mode_letter chan_modes[] = |
| 267 |
– |
{ |
| 268 |
– |
{ MODE_NOCTRL, 'c' }, |
| 269 |
– |
{ MODE_INVITEONLY, 'i' }, |
| 270 |
– |
{ MODE_MODERATED, 'm' }, |
| 271 |
– |
{ MODE_NOPRIVMSGS, 'n' }, |
| 272 |
– |
{ MODE_PRIVATE, 'p' }, |
| 273 |
– |
{ MODE_REGISTERED, 'r' }, |
| 274 |
– |
{ MODE_SECRET, 's' }, |
| 275 |
– |
{ MODE_TOPICLIMIT, 't' }, |
| 276 |
– |
{ MODE_MODREG, 'M' }, |
| 277 |
– |
{ MODE_OPERONLY, 'O' }, |
| 278 |
– |
{ MODE_REGONLY, 'R' }, |
| 279 |
– |
{ MODE_SSLONLY, 'S' }, |
| 280 |
– |
{ 0, '\0' } |
| 281 |
– |
}; |
| 282 |
– |
|
| 283 |
|
/* channel_modes() |
| 284 |
|
* |
| 285 |
|
* inputs - pointer to channel |
| 335 |
|
{ |
| 336 |
|
unsigned char *s, *t, c; |
| 337 |
|
|
| 338 |
< |
for (s = t = (unsigned char *)arg; (c = *s); s++) |
| 338 |
> |
for (s = t = (unsigned char *)arg; (c = *s); ++s) |
| 339 |
|
{ |
| 340 |
|
c &= 0x7f; |
| 341 |
|
|
| 361 |
|
{ |
| 362 |
|
unsigned char *s, *t, c; |
| 363 |
|
|
| 364 |
< |
for (s = t = (unsigned char *)arg; (c = *s); s++) |
| 364 |
> |
for (s = t = (unsigned char *)arg; (c = *s); ++s) |
| 365 |
|
{ |
| 366 |
|
c &= 0x7f; |
| 367 |
|
|
| 374 |
|
return arg; |
| 375 |
|
} |
| 376 |
|
|
| 377 |
+ |
/* |
| 378 |
+ |
* inputs - pointer to channel |
| 379 |
+ |
* output - none |
| 380 |
+ |
* side effects - clear ban cache |
| 381 |
+ |
*/ |
| 382 |
+ |
void |
| 383 |
+ |
clear_ban_cache(struct Channel *chptr) |
| 384 |
+ |
{ |
| 385 |
+ |
dlink_node *ptr = NULL; |
| 386 |
+ |
|
| 387 |
+ |
DLINK_FOREACH(ptr, chptr->members.head) |
| 388 |
+ |
{ |
| 389 |
+ |
struct Membership *ms = ptr->data; |
| 390 |
+ |
|
| 391 |
+ |
if (MyConnect(ms->client_p)) |
| 392 |
+ |
ms->flags &= ~(CHFL_BAN_SILENCED|CHFL_BAN_CHECKED); |
| 393 |
+ |
} |
| 394 |
+ |
} |
| 395 |
+ |
|
| 396 |
+ |
void |
| 397 |
+ |
clear_ban_cache_client(struct Client *client_p) |
| 398 |
+ |
{ |
| 399 |
+ |
dlink_node *ptr = NULL; |
| 400 |
+ |
|
| 401 |
+ |
DLINK_FOREACH(ptr, client_p->channel.head) |
| 402 |
+ |
{ |
| 403 |
+ |
struct Membership *ms = ptr->data; |
| 404 |
+ |
ms->flags &= ~(CHFL_BAN_SILENCED|CHFL_BAN_CHECKED); |
| 405 |
+ |
} |
| 406 |
+ |
} |
| 407 |
+ |
|
| 408 |
|
/* bitmasks for various error returns that set_channel_mode should only return |
| 409 |
|
* once per call -orabidoo |
| 410 |
|
*/ |
| 811 |
|
mode_changes[mode_count++].arg = mask; |
| 812 |
|
} |
| 813 |
|
|
| 783 |
– |
/* |
| 784 |
– |
* inputs - pointer to channel |
| 785 |
– |
* output - none |
| 786 |
– |
* side effects - clear ban cache |
| 787 |
– |
*/ |
| 788 |
– |
void |
| 789 |
– |
clear_ban_cache(struct Channel *chptr) |
| 790 |
– |
{ |
| 791 |
– |
dlink_node *ptr = NULL; |
| 792 |
– |
|
| 793 |
– |
DLINK_FOREACH(ptr, chptr->members.head) |
| 794 |
– |
{ |
| 795 |
– |
struct Membership *ms = ptr->data; |
| 796 |
– |
|
| 797 |
– |
if (MyConnect(ms->client_p)) |
| 798 |
– |
ms->flags &= ~(CHFL_BAN_SILENCED|CHFL_BAN_CHECKED); |
| 799 |
– |
} |
| 800 |
– |
} |
| 801 |
– |
|
| 802 |
– |
void |
| 803 |
– |
clear_ban_cache_client(struct Client *client_p) |
| 804 |
– |
{ |
| 805 |
– |
dlink_node *ptr = NULL; |
| 806 |
– |
|
| 807 |
– |
DLINK_FOREACH(ptr, client_p->channel.head) |
| 808 |
– |
{ |
| 809 |
– |
struct Membership *ms = ptr->data; |
| 810 |
– |
ms->flags &= ~(CHFL_BAN_SILENCED|CHFL_BAN_CHECKED); |
| 811 |
– |
} |
| 812 |
– |
} |
| 813 |
– |
|
| 814 |
|
static void |
| 815 |
|
chm_voice(struct Client *client_p, struct Client *source_p, |
| 816 |
|
struct Channel *chptr, int parc, int *parn, |
| 1544 |
|
} |
| 1545 |
|
|
| 1546 |
|
if (pbl && parabuf[pbl - 1] == ' ') |
| 1547 |
< |
parabuf[pbl - 1] = 0; |
| 1547 |
> |
parabuf[pbl - 1] = '\0'; |
| 1548 |
|
|
| 1549 |
|
if (nc != 0) |
| 1550 |
|
sendto_server(client_p, NOCAPS, NOCAPS, "%s %s", modebuf, parabuf); |
| 1651 |
|
} |
| 1652 |
|
|
| 1653 |
|
if (pbl && parabuf[pbl - 1] == ' ') |
| 1654 |
< |
parabuf[pbl - 1] = 0; |
| 1654 |
> |
parabuf[pbl - 1] = '\0'; |
| 1655 |
|
|
| 1656 |
|
if (nc != 0) |
| 1657 |
|
sendto_channel_local(ALL_MEMBERS, 0, chptr, "%s %s", modebuf, parabuf); |