[srvx-commits] CVS: services/src helpserv.c,1.34,1.35 modcmd.c,1.29,1.30
Brought to you by:
entrope
|
From: Adrian D. <sai...@us...> - 2002-09-23 00:19:11
|
Update of /cvsroot/srvx/services/src
In directory usw-pr-cvs1:/tmp/cvs-serv2662
Modified Files:
helpserv.c modcmd.c
Log Message:
Make ?helpserv work again
Index: helpserv.c
===================================================================
RCS file: /cvsroot/srvx/services/src/helpserv.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -C2 -r1.34 -r1.35
*** helpserv.c 11 Sep 2002 01:50:06 -0000 1.34
--- helpserv.c 23 Sep 2002 00:19:08 -0000 1.35
***************
*** 487,490 ****
--- 487,491 ----
struct helpfile *helpserv_helpfile;
+ static struct module *helpserv_module;
static dict_t helpserv_func_dict;
static dict_t helpserv_option_dict;
***************
*** 876,879 ****
--- 877,935 ----
}
+ /* Handle a control command from an IRC operator */
+ MODCMD_FUNC(cmd_helpserv) {
+ struct helpserv_bot *hs = NULL;
+ struct helpserv_cmd *cmd;
+ const int from_opserv = 1; /* for helpserv_notice */
+ char botnick[NICKLEN+1]; /* in case command is unregister */
+ int retval;
+
+ if (!helpserv_enabled) {
+ helpserv_notice(user, HSMSG_DISABLED);
+ return 0;
+ }
+
+ if (argc < 2) {
+ send_help(user, opserv, helpserv_helpfile, NULL);
+ return 0;
+ }
+
+ if (!(cmd = dict_find(helpserv_func_dict, argv[1], NULL))) {
+ helpserv_notice(user, MSG_COMMAND_UNKNOWN, argv[1]);
+ return 0;
+ }
+
+ if (!cmd->func) {
+ helpserv_notice(user, HSMSG_INTERNAL_COMMAND, argv[1]);
+ return 0;
+ }
+
+ if ((cmd->flags & CMD_NEED_BOT) && ((argc < 3) || !(hs = dict_find(helpserv_bots_dict, argv[2], NULL)))) {
+ helpserv_notice(user, HSMSG_INVALID_BOT);
+ return 0;
+ }
+
+ if (cmd->flags & CMD_NEVER_FROM_OPSERV) {
+ helpserv_notice(user, HSMSG_NO_USE_OPSERV);
+ return 0;
+ }
+
+ if (hs) {
+ argv[2] = argv[1];
+ strcpy(botnick, hs->helpserv->nick);
+ retval = cmd->func(user, hs, 1, argc-2, argv+2);
+ } else {
+ strcpy(botnick, "No bot");
+ retval = cmd->func(user, hs, 1, argc-1, argv+1);
+ }
+
+ if (retval && !(cmd->flags & CMD_IGNORE_EVENT)) {
+ char *cmd_text = unsplit_string(argv+1, argc-1, NULL);
+ log(HS_LOG, LOG_INFO, "%s[%s] (%s): %s%s\n", user->nick, user->handle_info->handle, botnick, cmd_text, (cmd->flags & (CMD_NOT_OVERRIDE|CMD_FROM_OPSERV_ONLY) ? "" : " (override)"));
+ }
+
+ return retval;
+ }
+
static HELPSERV_FUNC(cmd_version) {
(void)hs;
***************
*** 3827,3829 ****
--- 3883,3888 ----
reg_exit_func(helpserv_db_cleanup);
+
+ helpserv_module = module_register("helpserv", HS_LOG, NULL, NULL);
+ modcmd_register(helpserv_module, "helpserv", cmd_helpserv, 1, MODCMD_REQUIRE_AUTHED|MODCMD_NO_LOG, "access", "800", NULL);
}
Index: modcmd.c
===================================================================
RCS file: /cvsroot/srvx/services/src/modcmd.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -r1.29 -r1.30
*** modcmd.c 18 Sep 2002 14:50:19 -0000 1.29
--- modcmd.c 23 Sep 2002 00:19:08 -0000 1.30
***************
*** 1627,1630 ****
--- 1627,1631 ----
svccmd = service_make_alias(service, "stats", "*modcmd.joiner", NULL);
svccmd->min_opserv_level = 101;
+ svccmd = service_make_alias(service, "helpserv", "*helpserv.helpserv", NULL);
}
}
|