[srvx-commits] CVS: services/src modcmd.c,1.21,1.22
Brought to you by:
entrope
|
From: Entrope <en...@us...> - 2002-08-27 03:24:05
|
Update of /cvsroot/srvx/services/src
In directory usw-pr-cvs1:/tmp/cvs-serv24635/src
Modified Files:
modcmd.c
Log Message:
implement TODO items from modcmd
Index: modcmd.c
===================================================================
RCS file: /cvsroot/srvx/services/src/modcmd.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -r1.21 -r1.22
*** modcmd.c 23 Aug 2002 04:49:39 -0000 1.21
--- modcmd.c 27 Aug 2002 03:24:02 -0000 1.22
***************
*** 46,49 ****
--- 46,50 ----
#define MCMSG_ALREADY_BOUND "%s already has a command bound as %s."
#define MCMSG_UNKNOWN_COMMAND_2 "Unknown command name %s (relative to service %s)."
+ #define MCMSG_COMMAND_MODIFIED "Option $b%s$b for $b%s$b has been set."
#define MCMSG_INSPECTION_REFUSED "You do not have access to inspect command %s."
#define MCMSG_CANNOT_DOUBLE_ALIAS "You cannot bind to a complex (argument-carrying) bind."
***************
*** 205,211 ****
newcmd->defaults->command = newcmd;
dict_insert(module->commands, newcmd->name, newcmd);
- if (strchr(newcmd->name, ' ')) {
- newcmd->defaults->flags |= MODCMD_NO_DEFAULT_BIND;
- }
if (newcmd->flags & (MODCMD_REQUIRE_REGCHAN|MODCMD_REQUIRE_CHANNEL|MODCMD_REQUIRE_CHANUSER|MODCMD_REQUIRE_JOINABLE)) {
newcmd->defaults->flags |= MODCMD_ACCEPT_CHANNEL;
--- 206,209 ----
***************
*** 608,617 ****
/* Figure out what actions we should do for it.. */
if (argc < cmd.command->min_argc) {
send_message(user, service->bot, MSG_MISSING_PARAMS, cmd.name);
return 0;
}
- perms = svccmd_can_invoke_real(user, service->bot, &cmd, channel, server_qualified, 1);
- if (!perms) return 0;
pcmd->uses++;
if (!cmd.command->func(user, channel, argc, argv, pcmd)) return 0;
--- 606,615 ----
/* Figure out what actions we should do for it.. */
+ perms = svccmd_can_invoke_real(user, service->bot, &cmd, channel, server_qualified, 1);
+ if (!perms) return 0;
if (argc < cmd.command->min_argc) {
send_message(user, service->bot, MSG_MISSING_PARAMS, cmd.name);
return 0;
}
pcmd->uses++;
if (!cmd.command->func(user, channel, argc, argv, pcmd)) return 0;
***************
*** 1114,1129 ****
static MODCMD_FUNC(cmd_modcmd) {
struct svccmd *svccmd;
! unsigned int arg, changed=0;
assert(argc >= 4);
! /* TODO: must be able to specify command name like "trace\ gline" */
! if (!(svccmd = svccmd_resolve_name(cmd, argv[1]))) {
! send_message(user, cmd->parent->bot, MCMSG_UNKNOWN_COMMAND_2, argv[1], cmd->parent->bot->nick);
return 0;
}
! for (arg = 2; arg+1 < argc; arg += 2) {
! if (svccmd_configure(svccmd, user, cmd->parent->bot, argv[arg], argv[arg+1])) changed = 1;
}
- /* TODO: either show new values for svccmd options or report success as things are changed */
return changed;
}
--- 1112,1147 ----
static MODCMD_FUNC(cmd_modcmd) {
struct svccmd *svccmd;
! unsigned int ii, pos, arg, changed;
! char cmdname[MAXLEN];
assert(argc >= 4);
! for (ii=pos=0, arg=1; argv[arg][ii]; ) {
! if (argv[arg][ii] == '\\') {
! if (argv[arg][ii+1]) {
! /* escaping a real character just puts it in literally */
! cmdname[pos++] = argv[arg][++ii];
! } else {
! /* escape at end of a word is a space */
! cmdname[pos++] = ' ';
! ii = 0;
! arg++;
! }
! } else {
! /* normal characters don't need escapes */
! cmdname[pos++] = argv[arg][ii++];
! }
! }
! cmdname[pos] = 0;
! if (!(svccmd = svccmd_resolve_name(cmd, cmdname))) {
! send_message(user, cmd->parent->bot, MCMSG_UNKNOWN_COMMAND_2, cmdname, cmd->parent->bot->nick);
return 0;
}
! changed = 0;
! for (arg++; arg+1 < argc; arg += 2) {
! if (svccmd_configure(svccmd, user, cmd->parent->bot, argv[arg], argv[arg+1])) {
! send_message(user, cmd->parent->bot, MCMSG_COMMAND_MODIFIED, argv[arg], svccmd->name);
! changed = 1;
! }
}
return changed;
}
|