/******************************************************************
* PTlink Services is (C) CopyRight PTlink IRC Software 1999-2005 *
* http://software.pt-link.net *
* This program is distributed under GNU Public License *
* Please read the file COPYING for copyright information. *
******************************************************************
File: ns_help.c
Description: nickserv help command
* $Id: ns_help.c,v 1.5 2005/10/11 16:13:06 jpinto Exp $
*/
#include "module.h"
#include "encrypt.h"
#include "nickserv.h" /* we need ED_GROUPS( */
#include "lang/help.lh"
SVS_Module mod_info =
/* module, version, description */
{"ns_help", "1.0", "nickserv help command" };
/* external functions we need */
ServiceUser* (*nickserv_suser)(void);
MOD_REQUIRES
MOD_FUNC(nickserv_suser)
MOD_END
/* internal functions */
/* available commands from module */
void ns_help(IRC_User *s, IRC_User *u);
/* Local settings */
ServiceUser* nsu;
int mod_load(void)
{
nsu = nickserv_suser();
suser_add_cmd(nsu, "HELP", ns_help, HELP_SUMMARY, HELP_HELP);
return 0;
}
void mod_unload(void)
{
suser_del_mod_cmds(nsu, &mod_info);
}
/* s = service the command was sent to
u = user the command was sent from */
void ns_help(IRC_User *s, IRC_User *u)
{
Suser_cmd *c;
char *cmd = strtok(NULL, "");
c = nsu->cmds;
if(IsNull(cmd) || *cmd=='\0')
{
send_lang(u, s, HELP_LIST);
while(c)
{
if(c->sgid != 0)
{
if(u->snid == 0 ||
(array_find_int(u->extra[ED_GROUPS], c->sgid) == -1))
{
c = c->next;
continue;
}
}
if(c->summary)
{
if(WantsMsg(u))
irc_SendMsg(u, s,"%-15s %s", c->cmd, c->summary[u->lang]);
else
irc_SendNotice(u, s,"%-15s %s", c->cmd, c->summary[u->lang]);
}
c = c->next;
}
send_lang(u, s, HELP_END_OF_LIST);
}
else /* help for a specific item */
{
while(c)
{
if(c->help && (strcasecmp(c->cmd, cmd) == 0))
{
if(c->sgid != 0)
{
if((u->snid == 0) ||
(array_find_int(u->extra[ED_GROUPS], c->sgid) == -1))
break;
}
send_lang(u, s, c->help);
return ;
}
c = c->next;
}
send_lang(u, s, NO_HELP_FOR_COMMAND_X, cmd);
}
}
syntax highlighted by Code2HTML, v. 0.9.1