rendered paste body--- chanserv.c 2006-10-30 10:45:49.141355864 +0100+++ chanserv-new.c 2006-10-30 10:44:15.462597200 +0100@@ -7026,6 +7026,7 @@ { int ii, arc; char *tempnix, *tempptr, **arv;+ char *currnick; struct Luser *currlptr; /* they want to voice other people */@@ -7039,26 +7040,35 @@ dnicks[0] = '\0'; for (ii = 0; ii < arc; ii++) {- if (*arv[ii] == '-')- currlptr = FindClient(arv[ii] + 1);+ if ((*arv[ii] == '-') || (*arv[ii] == '+'))+ currnick = arv[ii] + 1; else- currlptr = FindClient(arv[ii]);+ currnick = arv[ii];+ currlptr = FindClient(currnick); if (!IsChannelMember(chptr, currlptr)) continue; + /* Cute little hack to ignore voice requests for autodevoiced nicks.+ * I do hope no nicks start with +, this char can be prefixed to force+ * a voice anyway+ */+ if ((*arv[ii] != '-') && (*arv[ii] != '+') &&+ (GetAccess(cptr, lptr) == cptr->access_lvl[CA_AUTODEOP]))+ continue;+ if (arv[ii][0] == '-') { dnicks = (char *) MyRealloc(dnicks, strlen(dnicks)- + strlen(arv[ii] + 1) + (2 * sizeof(char)));- strcat(dnicks, arv[ii] + 1);+ + strlen(currnick) + (2 * sizeof(char)));+ strcat(dnicks, currnick); strcat(dnicks, " "); } else { vnicks = (char *) MyRealloc(vnicks, strlen(vnicks)- + strlen(arv[ii]) + (2 * sizeof(char)));- strcat(vnicks, arv[ii]);+ + strlen(currnick) + (2 * sizeof(char)));+ strcat(vnicks, currnick); strcat(vnicks, " "); } }