mirror of
https://github.com/matrix-construct/construct
synced 2024-11-29 18:22:50 +01:00
Branch merge.
This commit is contained in:
commit
d0f4d745c6
3 changed files with 37 additions and 11 deletions
|
@ -11,3 +11,4 @@ who !#channel - Gives a full output of users on the channel.
|
|||
mode !#channel - Gives the full modes of a channel including any keys.
|
||||
chantrace !#channel - Gives full output despite not being on channel.
|
||||
masktrace !nick!user@host :gecos - Lists matching users on all servers.
|
||||
topic !#channel - Gives full output despite not being on channel.
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "ircd.h"
|
||||
#include "numeric.h"
|
||||
#include "send.h"
|
||||
#include "s_newconf.h"
|
||||
#include "s_conf.h"
|
||||
#include "s_serv.h"
|
||||
#include "msg.h"
|
||||
|
@ -62,26 +63,43 @@ m_topic(struct Client *client_p, struct Client *source_p, int parc, const char *
|
|||
struct Channel *chptr = NULL;
|
||||
struct membership *msptr;
|
||||
char *p = NULL;
|
||||
const char *name;
|
||||
int operspy = 0;
|
||||
|
||||
if((p = strchr(parv[1], ',')))
|
||||
*p = '\0';
|
||||
|
||||
name = parv[1];
|
||||
|
||||
if(IsOperSpy(source_p) && parv[1][0] == '!')
|
||||
{
|
||||
name++;
|
||||
operspy = 1;
|
||||
|
||||
if(EmptyString(name))
|
||||
{
|
||||
sendto_one(source_p, form_str(ERR_NEEDMOREPARAMS),
|
||||
me.name, source_p->name, "TOPIC");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(MyClient(source_p) && !IsFloodDone(source_p))
|
||||
flood_endgrace(source_p);
|
||||
|
||||
if(!IsChannelName(parv[1]))
|
||||
if(!IsChannelName(name))
|
||||
{
|
||||
sendto_one_numeric(source_p, ERR_NOSUCHCHANNEL,
|
||||
form_str(ERR_NOSUCHCHANNEL), parv[1]);
|
||||
form_str(ERR_NOSUCHCHANNEL), name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
chptr = find_channel(parv[1]);
|
||||
chptr = find_channel(name);
|
||||
|
||||
if(chptr == NULL)
|
||||
{
|
||||
sendto_one_numeric(source_p, ERR_NOSUCHCHANNEL,
|
||||
form_str(ERR_NOSUCHCHANNEL), parv[1]);
|
||||
form_str(ERR_NOSUCHCHANNEL), name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -93,7 +111,7 @@ m_topic(struct Client *client_p, struct Client *source_p, int parc, const char *
|
|||
if(msptr == NULL)
|
||||
{
|
||||
sendto_one_numeric(source_p, ERR_NOTONCHANNEL,
|
||||
form_str(ERR_NOTONCHANNEL), parv[1]);
|
||||
form_str(ERR_NOTONCHANNEL), name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -116,19 +134,22 @@ m_topic(struct Client *client_p, struct Client *source_p, int parc, const char *
|
|||
}
|
||||
else
|
||||
sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
|
||||
me.name, source_p->name, parv[1]);
|
||||
me.name, source_p->name, name);
|
||||
}
|
||||
else if(MyClient(source_p))
|
||||
{
|
||||
if(!IsMember(source_p, chptr) && SecretChannel(chptr))
|
||||
if(operspy)
|
||||
report_operspy(source_p, "TOPIC", chptr->chname);
|
||||
if(!IsMember(source_p, chptr) && SecretChannel(chptr) &&
|
||||
!operspy)
|
||||
{
|
||||
sendto_one_numeric(source_p, ERR_NOTONCHANNEL,
|
||||
form_str(ERR_NOTONCHANNEL), parv[1]);
|
||||
form_str(ERR_NOTONCHANNEL), name);
|
||||
return 0;
|
||||
}
|
||||
if(chptr->topic == NULL)
|
||||
sendto_one(source_p, form_str(RPL_NOTOPIC),
|
||||
me.name, source_p->name, parv[1]);
|
||||
me.name, source_p->name, name);
|
||||
else
|
||||
{
|
||||
sendto_one(source_p, form_str(RPL_TOPIC),
|
||||
|
|
|
@ -533,6 +533,10 @@ mo_modrestart(struct Client *client_p, struct Client *source_p, int parc, const
|
|||
#define RTLD_NOW RTLD_LAZY /* openbsd deficiency */
|
||||
#endif
|
||||
|
||||
#ifndef RTLD_LOCAL
|
||||
#define RTLD_LOCAL 0
|
||||
#endif
|
||||
|
||||
#ifdef CHARYBDIS_PROFILE
|
||||
# ifndef RTLD_PROFILE
|
||||
# warning libdl may not support profiling, sucks. :(
|
||||
|
@ -792,9 +796,9 @@ load_a_module(const char *path, int warn, int core)
|
|||
mod_basename = irc_basename(path);
|
||||
|
||||
#ifdef CHARYBDIS_PROFILE
|
||||
tmpptr = dlopen(path, RTLD_NOW | RTLD_PROFILE);
|
||||
tmpptr = dlopen(path, RTLD_NOW | RTLD_LOCAL | RTLD_PROFILE);
|
||||
#else
|
||||
tmpptr = dlopen(path, RTLD_NOW);
|
||||
tmpptr = dlopen(path, RTLD_NOW | RTLD_LOCAL);
|
||||
#endif
|
||||
|
||||
if(tmpptr == NULL)
|
||||
|
|
Loading…
Reference in a new issue