mirror of
https://github.com/osmarks/ngircd.git
synced 2025-05-18 23:24:09 +00:00
IRC_TOPIC(): code cleanup
This commit is contained in:
parent
1964bda252
commit
02592f912e
@ -412,44 +412,56 @@ IRC_TOPIC( CLIENT *Client, REQUEST *Req )
|
|||||||
assert( Client != NULL );
|
assert( Client != NULL );
|
||||||
assert( Req != NULL );
|
assert( Req != NULL );
|
||||||
|
|
||||||
if ((Req->argc < 1) || (Req->argc > 2))
|
if (Req->argc < 1 || Req->argc > 2)
|
||||||
return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG, Client_ID(Client), Req->command);
|
return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
|
||||||
|
Client_ID(Client), Req->command);
|
||||||
|
|
||||||
if( Client_Type( Client ) == CLIENT_SERVER ) from = Client_Search( Req->prefix );
|
if (Client_Type(Client) == CLIENT_SERVER)
|
||||||
else from = Client;
|
from = Client_Search(Req->prefix);
|
||||||
if( ! from ) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->prefix );
|
else
|
||||||
|
from = Client;
|
||||||
|
|
||||||
/* Welcher Channel? */
|
if (!from)
|
||||||
chan = Channel_Search( Req->argv[0] );
|
return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
|
||||||
if( ! chan ) return IRC_WriteStrClient( from, ERR_NOSUCHCHANNEL_MSG, Client_ID( from ), Req->argv[0] );
|
Client_ID(Client), Req->prefix);
|
||||||
|
|
||||||
/* Ist der User Mitglied in dem Channel? */
|
chan = Channel_Search(Req->argv[0]);
|
||||||
if( ! Channel_IsMemberOf( chan, from )) return IRC_WriteStrClient( from, ERR_NOTONCHANNEL_MSG, Client_ID( from ), Req->argv[0] );
|
if (!chan)
|
||||||
|
return IRC_WriteStrClient(from, ERR_NOSUCHCHANNEL_MSG,
|
||||||
|
Client_ID(from), Req->argv[0]);
|
||||||
|
|
||||||
if( Req->argc == 1 )
|
if (!Channel_IsMemberOf(chan, from))
|
||||||
{
|
return IRC_WriteStrClient(from, ERR_NOTONCHANNEL_MSG,
|
||||||
|
Client_ID(from), Req->argv[0]);
|
||||||
|
|
||||||
|
if (Req->argc == 1) {
|
||||||
/* Request actual topic */
|
/* Request actual topic */
|
||||||
topic = Channel_Topic(chan);
|
topic = Channel_Topic(chan);
|
||||||
if (*topic) {
|
if (*topic) {
|
||||||
r = IRC_WriteStrClient(from, RPL_TOPIC_MSG,
|
r = IRC_WriteStrClient(from, RPL_TOPIC_MSG,
|
||||||
Client_ID(Client), Channel_Name(chan), topic);
|
Client_ID(Client),
|
||||||
|
Channel_Name(chan), topic);
|
||||||
#ifndef STRICT_RFC
|
#ifndef STRICT_RFC
|
||||||
r = IRC_WriteStrClient(from, RPL_TOPICSETBY_MSG,
|
r = IRC_WriteStrClient(from, RPL_TOPICSETBY_MSG,
|
||||||
Client_ID(Client), Channel_Name(chan),
|
Client_ID(Client),
|
||||||
Channel_TopicWho(chan),
|
Channel_Name(chan),
|
||||||
Channel_TopicTime(chan));
|
Channel_TopicWho(chan),
|
||||||
|
Channel_TopicTime(chan));
|
||||||
#endif
|
#endif
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return IRC_WriteStrClient(from, RPL_NOTOPIC_MSG,
|
return IRC_WriteStrClient(from, RPL_NOTOPIC_MSG,
|
||||||
Client_ID(from), Channel_Name(chan));
|
Client_ID(from),
|
||||||
|
Channel_Name(chan));
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strchr( Channel_Modes( chan ), 't' ))
|
if (strchr(Channel_Modes(chan), 't')) {
|
||||||
{
|
/* Topic Lock. Is the user a channel operator? */
|
||||||
/* Topic Lock. Ist der User ein Channel Operator? */
|
if (!strchr(Channel_UserModes(chan, from), 'o'))
|
||||||
if( ! strchr( Channel_UserModes( chan, from ), 'o' )) return IRC_WriteStrClient( from, ERR_CHANOPRIVSNEEDED_MSG, Client_ID( from ), Channel_Name( chan ));
|
return IRC_WriteStrClient(from, ERR_CHANOPRIVSNEEDED_MSG,
|
||||||
|
Client_ID(from),
|
||||||
|
Channel_Name(chan));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set new topic */
|
/* Set new topic */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user