[srvx-commits] CVS: services/src modcmd.c,1.73,1.74 proto-common.c,1.34,1.35 proto.h,1.75,1.76
Brought to you by:
entrope
From: Entrope <en...@us...> - 2003-12-09 02:47:01
|
Update of /cvsroot/srvx/services/src In directory sc8-pr-cvs1:/tmp/cvs-serv28936/src Modified Files: modcmd.c proto-common.c proto.h Log Message: fix "service trigger" behavior when changing triggers tweak formatting of other code Index: modcmd.c =================================================================== RCS file: /cvsroot/srvx/services/src/modcmd.c,v retrieving revision 1.73 retrieving revision 1.74 diff -C2 -r1.73 -r1.74 *** modcmd.c 15 Nov 2003 04:09:18 -0000 1.73 --- modcmd.c 9 Dec 2003 02:46:56 -0000 1.74 *************** *** 95,99 **** --- 95,101 ---- #define MCMSG_NEW_SERVICE "Added new service bot $b%s$b." #define MCMSG_SERVICE_RENAMED "Service renamed to $b%s$b." + #define MCMSG_NO_TRIGGER "$b%s$b does not have an in-channel trigger." #define MCMSG_REMOVED_TRIGGER "Removed trigger from $b%s$b." + #define MCMSG_DUPLICATE_TRIGGER "$b%s$b already uses trigger $b%c$b." #define MCMSG_CURRENT_TRIGGER "Trigger for $b%s$b is $b%c$b." #define MCMSG_NEW_TRIGGER "Changed trigger for $b%s$b to $b%c$b." *************** *** 169,173 **** svccmd = data; if (svccmd->alias.used) { ! for (nn=0; nn<svccmd->alias.used; ++nn) free(svccmd->alias.list[nn]); free(svccmd->alias.list); } --- 171,176 ---- svccmd = data; if (svccmd->alias.used) { ! for (nn=0; nn<svccmd->alias.used; ++nn) ! free(svccmd->alias.list[nn]); free(svccmd->alias.list); } *************** *** 420,424 **** svccmd_copy_rules(newcmd->defaults, svccmd); } else { ! log_module(MAIN_LOG, LOG_ERROR, "Unable to resolve template name %s for command %s in module %s.", value, newcmd->name, newcmd->parent->name); } add_pending_template(newcmd->defaults, value); --- 423,427 ---- svccmd_copy_rules(newcmd->defaults, svccmd); } else { ! log_module(MAIN_LOG, LOG_ERROR, "Unable to resolve template name %s for %s.%s.", value, newcmd->parent->name, newcmd->name); } add_pending_template(newcmd->defaults, value); *************** *** 859,863 **** dict_insert(services, service->bot->nick, service); reg_privmsg_func(bot, modcmd_privmsg); ! if (trigger) reg_chanmsg_func(trigger, bot, modcmd_chanmsg); return service; } --- 862,867 ---- dict_insert(services, service->bot->nick, service); reg_privmsg_func(bot, modcmd_privmsg); ! if (trigger) ! reg_chanmsg_func(trigger, bot, modcmd_chanmsg); return service; } *************** *** 1205,1213 **** static MODCMD_FUNC(cmd_command) { ! struct svccmd *svccmd, *other; const char *cmd_name; unsigned int flags, shown_flags, nn, pos; char buf[MAXLEN]; ! assert(argc >= 2); cmd_name = unsplit_string(argv+1, argc-1, NULL); --- 1209,1217 ---- static MODCMD_FUNC(cmd_command) { ! struct svccmd *svccmd; const char *cmd_name; unsigned int flags, shown_flags, nn, pos; char buf[MAXLEN]; ! assert(argc >= 2); cmd_name = unsplit_string(argv+1, argc-1, NULL); *************** *** 1216,1227 **** return 0; } ! if (svccmd->parent ! && (other = dict_find(svccmd->parent->commands, svccmd->command->name, NULL)) ! && !other->alias.used ! && (other->command == svccmd->command)) { ! pos = snprintf(buf, sizeof(buf), "%s", other->name); ! } else { ! pos = snprintf(buf, sizeof(buf), "*%s.%s", svccmd->command->parent->name, svccmd->command->name); ! } if (svccmd->alias.used) { buf[pos++] = ' '; --- 1220,1224 ---- return 0; } ! pos = snprintf(buf, sizeof(buf), "%s.%s", svccmd->command->parent->name, svccmd->command->name); if (svccmd->alias.used) { buf[pos++] = ' '; *************** *** 1668,1671 **** --- 1665,1669 ---- static MODCMD_FUNC(cmd_service_trigger) { + struct userNode *bogon; struct service *service; *************** *** 1675,1689 **** } if (argc < 3) { - reply(MCMSG_CURRENT_TRIGGER, service->bot->nick, service->trigger); - } else { if (service->trigger) ! reg_chanmsg_func(service->trigger, NULL, NULL); ! if (!irccasecmp(argv[2], "none") || !irccasecmp(argv[2], "remove")) { ! reply(MCMSG_REMOVED_TRIGGER, service->bot->nick); ! } else { ! service->trigger = argv[2][0]; ! reg_chanmsg_func(service->trigger, service->bot, modcmd_chanmsg); ! reply(MCMSG_NEW_TRIGGER, service->bot->nick, service->trigger); ! } } return 1; --- 1673,1694 ---- } if (argc < 3) { if (service->trigger) ! reply(MCMSG_CURRENT_TRIGGER, service->bot->nick, service->trigger); ! else ! reply(MCMSG_NO_TRIGGER, service->bot->nick); ! return 1; ! } ! if (service->trigger) ! reg_chanmsg_func(service->trigger, NULL, NULL); ! if (!irccasecmp(argv[2], "none") || !irccasecmp(argv[2], "remove")) { ! service->trigger = 0; ! reply(MCMSG_REMOVED_TRIGGER, service->bot->nick); ! } else if ((bogon = get_chanmsg_bot(argv[2][0]))) { ! reply(MCMSG_DUPLICATE_TRIGGER, bogon->nick, argv[2][0]); ! return 1; ! } else { ! service->trigger = argv[2][0]; ! reg_chanmsg_func(service->trigger, service->bot, modcmd_chanmsg); ! reply(MCMSG_NEW_TRIGGER, service->bot->nick, service->trigger); } return 1; *************** *** 1695,1703 **** name = argv[1]; ! if (argc > 2) { reason = unsplit_string(argv+2, argc-2, NULL); ! } else { reason = "Removing bot"; - } if (!(service = service_find(name))) { reply(MCMSG_UNKNOWN_SERVICE, name); --- 1700,1707 ---- name = argv[1]; ! if (argc > 2) reason = unsplit_string(argv+2, argc-2, NULL); ! else reason = "Removing bot"; if (!(service = service_find(name))) { reply(MCMSG_UNKNOWN_SERVICE, name); *************** *** 1722,1726 **** dict_delete(services); dict_delete(modules); ! if (suf_list) free(suf_list); } --- 1726,1731 ---- dict_delete(services); dict_delete(modules); ! if (suf_list) ! free(suf_list); } *************** *** 1734,1744 **** sprintf(buf, "%s.%s", cmd->command->parent->name, cmd->command->name); saxdb_write_string(ctx, "command", buf); ! if (cmd->alias.used) saxdb_write_string_list(ctx, "aliased", &cmd->alias); ! if (cmd->min_opserv_level != template->min_opserv_level) { saxdb_write_int(ctx, "oper_access", cmd->min_opserv_level); ! } ! if (cmd->min_channel_access != template->min_channel_access) { saxdb_write_string(ctx, "channel_access", user_level_from_level(cmd->min_channel_access)); - } if (cmd->flags != template->flags) { if (cmd->flags) { --- 1739,1748 ---- sprintf(buf, "%s.%s", cmd->command->parent->name, cmd->command->name); saxdb_write_string(ctx, "command", buf); ! if (cmd->alias.used) ! saxdb_write_string_list(ctx, "aliased", &cmd->alias); ! if (cmd->min_opserv_level != template->min_opserv_level) saxdb_write_int(ctx, "oper_access", cmd->min_opserv_level); ! if (cmd->min_channel_access != template->min_channel_access) saxdb_write_string(ctx, "channel_access", user_level_from_level(cmd->min_channel_access)); if (cmd->flags != template->flags) { if (cmd->flags) { *************** *** 1763,1775 **** if (cmd->req_account_flags) { buf[pos++] = '+'; ! for (nn=0; nn<32; nn++) { ! if (cmd->req_account_flags & (1 << nn)) buf[pos++] = handle_flags[nn]; ! } } if (cmd->deny_account_flags) { buf[pos++] = '-'; ! for (nn=0; nn<32; nn++) { ! if (cmd->deny_account_flags & (1 << nn)) buf[pos++] = handle_flags[nn]; ! } } buf[pos] = 0; --- 1767,1779 ---- if (cmd->req_account_flags) { buf[pos++] = '+'; ! for (nn=0; nn<32; nn++) ! if (cmd->req_account_flags & (1 << nn)) ! buf[pos++] = handle_flags[nn]; } if (cmd->deny_account_flags) { buf[pos++] = '-'; ! for (nn=0; nn<32; nn++) ! if (cmd->deny_account_flags & (1 << nn)) ! buf[pos++] = handle_flags[nn]; } buf[pos] = 0; *************** *** 1947,1953 **** svccmd->alias.used = svccmd->alias.size = slist->used; svccmd->alias.list = calloc(svccmd->alias.size, sizeof(svccmd->alias.list[0])); ! for (nn=0; nn<slist->used; ++nn) { svccmd->alias.list[nn] = strdup(slist->list[nn]); - } } modcmd_set_effective_flags(svccmd); --- 1951,1956 ---- svccmd->alias.used = svccmd->alias.size = slist->used; svccmd->alias.list = calloc(svccmd->alias.size, sizeof(svccmd->alias.list[0])); ! for (nn=0; nn<slist->used; ++nn) svccmd->alias.list[nn] = strdup(slist->list[nn]); } modcmd_set_effective_flags(svccmd); *************** *** 1965,1969 **** while (1) { arg = va_arg(args, char*); ! if (!arg) break; argv[argc++] = arg; } --- 1968,1973 ---- while (1) { arg = va_arg(args, char*); ! if (!arg) ! break; argv[argc++] = arg; } *************** *** 1979,1983 **** svccmd->alias.used = svccmd->alias.size = argc; svccmd->alias.list = calloc(svccmd->alias.size, sizeof(svccmd->alias.list[0])); ! for (nn=0; nn<argc; nn++) svccmd->alias.list[nn] = strdup(argv[nn]); } svccmd_insert(service, strdup(alias), svccmd, template->command); --- 1983,1988 ---- svccmd->alias.used = svccmd->alias.size = argc; svccmd->alias.list = calloc(svccmd->alias.size, sizeof(svccmd->alias.list[0])); ! for (nn=0; nn<argc; nn++) ! svccmd->alias.list[nn] = strdup(argv[nn]); } svccmd_insert(service, strdup(alias), svccmd, template->command); Index: proto-common.c =================================================================== RCS file: /cvsroot/srvx/services/src/proto-common.c,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -r1.34 -r1.35 *** proto-common.c 18 Aug 2003 19:36:47 -0000 1.34 --- proto-common.c 9 Dec 2003 02:46:57 -0000 1.35 *************** *** 488,491 **** --- 488,497 ---- } + struct userNode * + get_chanmsg_bot(unsigned char prefix) + { + return chanmsg_funcs[prefix].service; + } + static mode_change_func_t *mcf_list; static unsigned int mcf_size = 0, mcf_used = 0; Index: proto.h =================================================================== RCS file: /cvsroot/srvx/services/src/proto.h,v retrieving revision 1.75 retrieving revision 1.76 diff -C2 -r1.75 -r1.76 *** proto.h 12 Jul 2003 02:59:50 -0000 1.75 --- proto.h 9 Dec 2003 02:46:57 -0000 1.76 *************** *** 96,99 **** --- 96,100 ---- typedef void (*chanmsg_func_t) (struct userNode *user, struct chanNode *chan, char *text, struct userNode *bot); void reg_chanmsg_func(unsigned char prefix, struct userNode *service, chanmsg_func_t handler); + struct userNode *get_chanmsg_bot(unsigned char prefix); typedef void (*privmsg_func_t) (struct userNode *user, struct userNode *target, char *text, int server_qualified); |