+GLOBAL BOOLEAN IRC_AWAY( CLIENT *Client, REQUEST *Req )
+{
+ assert( Client != NULL );
+ assert( Req != NULL );
+
+ if( Client_Type( Client ) != CLIENT_USER ) return IRC_WriteStrClient( Client, ERR_NOTREGISTERED_MSG, Client_ID( Client ));
+
+ /* 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] );
+ IRC_WriteStrServersPrefix( Client, Client, "MODE %s :+a", Client_ID( Client ));
+ return IRC_WriteStrClient( Client, RPL_NOWAWAY_MSG, Client_ID( Client ));
+ }
+ else
+ {
+ /* AWAY loeschen */
+ Client_SetAway( Client, NULL );
+ IRC_WriteStrServersPrefix( Client, Client, "MODE %s :-a", Client_ID( Client ));
+ return IRC_WriteStrClient( Client, RPL_UNAWAY_MSG, Client_ID( Client ));
+ }
+} /* IRC_AWAY */
+
+