#include "portab.h"
-static char UNUSED id[] = "$Id: irc-info.c,v 1.35 2006/10/01 19:13:32 alex Exp $";
+static char UNUSED id[] = "$Id: irc-info.c,v 1.40 2007/11/21 12:16:36 alex Exp $";
#include "imp.h"
#include <assert.h>
IRC_WHO( CLIENT *Client, REQUEST *Req )
{
bool ok, only_ops;
- char flags[8], *ptr;
+ char flags[8];
+ const char *ptr;
CL2CHAN *cl2chan;
CHANNEL *chan, *cn;
CLIENT *c;
if( ! IRC_WriteStrClient( from, RPL_WHOISOPERATOR_MSG, Client_ID( from ), Client_ID( c ))) return DISCONNECTED;
}
- /* Idle (only local clients) */
- if( Client_Conn( c ) > NONE )
- {
- if( ! IRC_WriteStrClient( from, RPL_WHOISIDLE_MSG, Client_ID( from ), Client_ID( c ), Conn_GetIdle( Client_Conn ( c )))) return DISCONNECTED;
+ /* Idle and signon time (local clients only!) */
+ if (Client_Conn(c) > NONE ) {
+ if (! IRC_WriteStrClient(from, RPL_WHOISIDLE_MSG,
+ Client_ID(from), Client_ID(c),
+ (unsigned long)Conn_GetIdle(Client_Conn(c)),
+ (unsigned long)Conn_GetSignon(Client_Conn(c))))
+ return DISCONNECTED;
}
/* Away? */
GLOBAL bool
IRC_Send_LUSERS( CLIENT *Client )
{
- long cnt;
+ unsigned long cnt;
#ifndef STRICT_RFC
- long max;
+ unsigned long max;
#endif
assert( Client != NULL );
} /* IRC_Send_LUSERS */
-static bool Show_MOTD_Start(CLIENT *Client)
+static bool
+Show_MOTD_Start(CLIENT *Client)
{
return IRC_WriteStrClient(Client, RPL_MOTDSTART_MSG,
Client_ID( Client ), Client_ID( Client_ThisServer( )));
}
-static bool Show_MOTD_Sendline(CLIENT *Client, const char *msg)
+static bool
+Show_MOTD_Sendline(CLIENT *Client, const char *msg)
{
return IRC_WriteStrClient(Client, RPL_MOTD_MSG, Client_ID( Client ), msg);
}
-static bool Show_MOTD_End(CLIENT *Client)
+static bool
+Show_MOTD_End(CLIENT *Client)
{
return IRC_WriteStrClient( Client, RPL_ENDOFMOTD_MSG, Client_ID( Client ));
}
} /* IRC_Send_WHO */
+/**
+ * Send the ISUPPORT numeric (005).
+ * This numeric indicates the features that are supported by this server.
+ * See <http://www.irc.org/tech_docs/005.html> for details.
+ */
+GLOBAL bool
+IRC_Send_ISUPPORT PARAMS((CLIENT * Client))
+{
+ if (!IRC_WriteStrClient(Client, RPL_ISUPPORT1_MSG, Client_ID(Client),
+ Conf_MaxJoins))
+ return DISCONNECTED;
+ return IRC_WriteStrClient(Client, RPL_ISUPPORT2_MSG, Client_ID(Client),
+ CHANNEL_NAME_LEN - 1, Conf_MaxNickLength - 1,
+ COMMAND_LEN - 23, CLIENT_AWAY_LEN - 1,
+ COMMAND_LEN - 113);
+} /* IRC_Send_ISUPPORT */
+
+
/* -eof- */