1
0
mirror of https://github.com/osmarks/ngircd.git synced 2024-10-28 12:56:18 +00:00

IRC_TOPIC(): code cleanup

This commit is contained in:
Alexander Barton 2011-01-09 16:23:33 +01:00
parent 1964bda252
commit 02592f912e

View File

@ -412,30 +412,39 @@ 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_Name(chan),
Channel_TopicWho(chan), Channel_TopicWho(chan),
Channel_TopicTime(chan)); Channel_TopicTime(chan));
#endif #endif
@ -443,13 +452,16 @@ IRC_TOPIC( CLIENT *Client, REQUEST *Req )
} }
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 */