commit - d9e3f834d7fac9de948b311f833e0c7638e86a12
commit + 8841d87365ae75fdc5aea398554a6f08cbb2ce79
blob - 148698ac48096ab562fb28f393e9eaea968e53d6
blob + 05664949a6a968283b1df72b18cbda7796cf42f2
--- src/ngircd/irc-mode.c
+++ src/ngircd/irc-mode.c
#include "portab.h"
-static char UNUSED id[] = "$Id: irc-mode.c,v 1.23 2002/12/16 23:06:46 alex Exp $";
+static char UNUSED id[] = "$Id: irc-mode.c,v 1.24 2002/12/18 14:16:21 alex Exp $";
#include "imp.h"
#include <assert.h>
x[0] = '\0';
switch( *mode_ptr )
{
+ case 'a':
+ /* Away */
+ if( Client_Type( Client ) == CLIENT_SERVER ) x[0] = 'a';
+ else ok = IRC_WriteStrClient( Origin, ERR_NOPRIVILEGES_MSG, Client_ID( Origin ));
+ break;
case 'i':
/* Invisible */
x[0] = 'i';
break;
case 'o':
/* IRC operator (only unsetable!) */
- if( ! set )
+ if(( ! set ) || ( Client_Type( Client ) == CLIENT_SERVER ))
{
Client_SetOperByMe( Target, FALSE );
x[0] = 'o';
break;
case 'r':
/* Restricted (only setable) */
- if( set ) x[0] = 'r';
+ if(( set ) || ( Client_Type( Client ) == CLIENT_SERVER )) x[0] = 'r';
else ok = IRC_WriteStrClient( Origin, ERR_RESTRICTED_MSG, Client_ID( Origin ));
break;
case 's':