commit - f47904bf954696803c0df8e756a57a3dabaa8845
commit + 408a74b86582a2fc315d61880f30d4ac050d8d8a
blob - ebb7be4afb5c7aed28a361d1fae6a34a79083176
blob + 48000bacde0e7d7a7bd9dbb9d7500c7e15aa1329
--- src/ngircd/irc-info.c
+++ src/ngircd/irc-info.c
} /* IRC_INFO */
+/**
+ * Handler for the IRC "ISON" command.
+ *
+ * See RFC 2812, 4.9 "Ison message".
+ *
+ * @param Client The client from which this command has been received.
+ * @param Req Request structure with prefix and all parameters.
+ * @return CONNECTED or DISCONNECTED.
+ */
GLOBAL bool
IRC_ISON( CLIENT *Client, REQUEST *Req )
{
char *ptr;
int i;
- assert( Client != NULL );
- assert( Req != NULL );
+ 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 );
+ /* Bad number of arguments? */
+ if (Req->argc < 1)
+ return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
+ Client_ID(Client), Req->command);
- strlcpy( rpl, RPL_ISON_MSG, sizeof rpl );
- for( i = 0; i < Req->argc; i++ )
- {
- ptr = strtok( Req->argv[i], " " );
- while( ptr )
- {
- ngt_TrimStr( ptr );
- c = Client_Search( ptr );
- if( c && ( Client_Type( c ) == CLIENT_USER ))
- {
- /* Dieser Nick ist "online" */
- strlcat( rpl, ptr, sizeof( rpl ));
- strlcat( rpl, " ", sizeof( rpl ));
+ strlcpy(rpl, RPL_ISON_MSG, sizeof rpl);
+ for (i = 0; i < Req->argc; i++) {
+ /* "All" ircd even parse ":<x> <y> ..." arguments and split
+ * them up; so we do the same ... */
+ ptr = strtok(Req->argv[i], " ");
+ while (ptr) {
+ ngt_TrimStr(ptr);
+ c = Client_Search(ptr);
+ if (c && Client_Type(c) == CLIENT_USER) {
+ strlcat(rpl, ptr, sizeof(rpl));
+ strlcat(rpl, " ", sizeof(rpl));
}
- ptr = strtok( NULL, " " );
+ ptr = strtok(NULL, " ");
}
}
ngt_TrimLastChr(rpl, ' ');
- return IRC_WriteStrClient( Client, rpl, Client_ID( Client ) );
+ return IRC_WriteStrClient(Client, rpl, Client_ID(Client));
} /* IRC_ISON */