]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-mode.c
Mac OS X: fix test for packagemaker(1) tool in Makefile
[ngircd-alex.git] / src / ngircd / irc-mode.c
index 2c142288fd446d04dd48322c9da121a960a138a5..8e08565030f4d5c91a77ea67ebdf948dce9e4aaa 100644 (file)
@@ -290,8 +290,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
        long l;
        size_t len;
 
-       /* Are modes allowed on channel? */
-       if (Channel_Name(Channel)[0] == '+')
+       if (Channel_IsModeless(Channel))
                return IRC_WriteStrClient(Client, ERR_NOCHANMODES_MSG,
                                Client_ID(Client), Channel_Name(Channel));
 
@@ -440,6 +439,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
                                ok = IRC_WriteStrClient(Origin,
                                        ERR_NEEDMOREPARAMS_MSG,
                                        Client_ID(Origin), Req->command);
+                               goto chan_exit;
                        }
                        break;
                case 'l': /* Member limit */
@@ -475,6 +475,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
                                ok = IRC_WriteStrClient(Origin,
                                        ERR_NEEDMOREPARAMS_MSG,
                                        Client_ID(Origin), Req->command);
+                               goto chan_exit;
                        }
                        break;
                case 'P': /* Persistent channel */
@@ -519,6 +520,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
                                ok = IRC_WriteStrClient(Origin,
                                        ERR_NEEDMOREPARAMS_MSG,
                                        Client_ID(Origin), Req->command);
+                               goto chan_exit;
                        }
                        break;
                /* --- Channel lists --- */
@@ -669,12 +671,10 @@ IRC_AWAY( CLIENT *Client, REQUEST *Req )
        assert( Client != NULL );
        assert( Req != NULL );
 
-       /* Falsche Anzahl Parameter? */
        if( Req->argc > 1 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
 
        if(( Req->argc == 1 ) && (Req->argv[0][0] ))
        {
-               /* AWAY setzen */
                Client_SetAway( Client, Req->argv[0] );
                Client_ModeAdd( Client, 'a' );
                IRC_WriteStrServersPrefix( Client, Client, "MODE %s :+a", Client_ID( Client ));
@@ -682,7 +682,6 @@ IRC_AWAY( CLIENT *Client, REQUEST *Req )
        }
        else
        {
-               /* AWAY loeschen */
                Client_ModeDel( Client, 'a' );
                IRC_WriteStrServersPrefix( Client, Client, "MODE %s :-a", Client_ID( Client ));
                return IRC_WriteStrClient( Client, RPL_UNAWAY_MSG, Client_ID( Client ));
@@ -750,21 +749,19 @@ Del_Ban_Invite(int what, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, const
 static bool
 Send_ListChange( char *Mode, CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, const char *Mask )
 {
-       /* Bestaetigung an Client schicken & andere Server sowie Channel-User informieren */
-
        bool ok;
 
        if( Client_Type( Client ) == CLIENT_USER )
        {
-               /* Bestaetigung an Client */
+               /* send confirmation to client */
                ok = IRC_WriteStrClientPrefix( Client, Prefix, "MODE %s %s %s", Channel_Name( Channel ), Mode, Mask );
        }
        else ok = true;
 
-       /* an andere Server */
+       /* to other servers */
        IRC_WriteStrServersPrefix( Client, Prefix, "MODE %s %s %s", Channel_Name( Channel ), Mode, Mask );
 
-       /* und lokale User im Channel */
+       /* and local users in channel */
        IRC_WriteStrChannelPrefix( Client, Channel, Prefix, false, "MODE %s %s %s", Channel_Name( Channel ), Mode, Mask );
        
        return ok;