473 |
|
struct Channel *chptr, const char *command, |
474 |
|
const char *pattern, ...) |
475 |
|
{ |
476 |
< |
va_list args; |
476 |
> |
va_list alocal, aremote, auid; |
477 |
|
char local_buf[IRCD_BUFSIZE]; |
478 |
|
char remote_buf[IRCD_BUFSIZE]; |
479 |
|
char uid_buf[IRCD_BUFSIZE]; |
494 |
|
uid_len = ircsprintf(uid_buf, ":%s %s %s ", |
495 |
|
ID(from), command, chptr->chname); |
496 |
|
|
497 |
< |
va_start(args, pattern); |
497 |
> |
va_start(alocal, pattern); |
498 |
> |
va_start(aremote, pattern); |
499 |
> |
va_start(auid, pattern); |
500 |
|
local_len += send_format(&local_buf[local_len], IRCD_BUFSIZE - local_len, |
501 |
< |
pattern, args); |
501 |
> |
pattern, alocal); |
502 |
|
remote_len += send_format(&remote_buf[remote_len], IRCD_BUFSIZE - remote_len, |
503 |
< |
pattern, args); |
503 |
> |
pattern, aremote); |
504 |
|
uid_len += send_format(&uid_buf[uid_len], IRCD_BUFSIZE - uid_len, pattern, |
505 |
< |
args); |
506 |
< |
va_end(args); |
505 |
> |
auid); |
506 |
> |
va_end(auid); |
507 |
> |
va_end(aremote); |
508 |
> |
va_end(alocal); |
509 |
|
|
510 |
|
++current_serial; |
511 |
|
|
865 |
|
sendto_match_butone(struct Client *one, struct Client *from, char *mask, |
866 |
|
int what, const char *pattern, ...) |
867 |
|
{ |
868 |
< |
va_list args; |
868 |
> |
va_list alocal, aremote; |
869 |
|
struct Client *client_p; |
870 |
|
dlink_node *ptr, *ptr_next; |
871 |
|
char local_buf[IRCD_BUFSIZE], remote_buf[IRCD_BUFSIZE]; |
873 |
|
from->username, from->host); |
874 |
|
int remote_len = ircsprintf(remote_buf, ":%s ", from->name); |
875 |
|
|
876 |
< |
va_start(args, pattern); |
876 |
> |
va_start(alocal, pattern); |
877 |
> |
va_start(aremote, pattern); |
878 |
|
local_len += send_format(&local_buf[local_len], IRCD_BUFSIZE - local_len, |
879 |
< |
pattern, args); |
879 |
> |
pattern, alocal); |
880 |
|
remote_len += send_format(&remote_buf[remote_len], IRCD_BUFSIZE - remote_len, |
881 |
< |
pattern, args); |
882 |
< |
va_end(args); |
881 |
> |
pattern, aremote); |
882 |
> |
va_end(aremote); |
883 |
> |
va_end(alocal); |
884 |
|
|
885 |
|
/* scan the local clients */ |
886 |
|
DLINK_FOREACH(ptr, local_client_list.head) |
1194 |
|
char buf_uid[IRCD_BUFSIZE], buf_nick[IRCD_BUFSIZE]; |
1195 |
|
int len_uid = 0, len_nick; |
1196 |
|
|
1191 |
– |
va_start(args, pattern); |
1197 |
|
if (HasID(source_p) && (me.id[0] != '\0')) |
1198 |
|
{ |
1199 |
|
have_uid = 1; |
1200 |
+ |
va_start(args, pattern); |
1201 |
|
len_uid = ircsprintf(buf_uid, ":%s KILL %s :", me.id, ID(source_p)); |
1202 |
|
len_uid += send_format(&buf_uid[len_uid], IRCD_BUFSIZE - len_uid, pattern, |
1203 |
|
args); |
1204 |
+ |
va_end(args); |
1205 |
|
} |
1206 |
+ |
|
1207 |
+ |
va_start(args, pattern); |
1208 |
|
len_nick = ircsprintf(buf_nick, ":%s KILL %s :", me.name, source_p->name); |
1209 |
|
len_nick += send_format(&buf_nick[len_nick], IRCD_BUFSIZE - len_nick, pattern, |
1210 |
|
args); |