diff options
author | dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b <dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-06-22 01:02:28 +0000 |
---|---|---|
committer | dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b <dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-06-22 01:02:28 +0000 |
commit | 2f0125c6fbe48affb36b60673de820c060cc4dbc (patch) | |
tree | 0d58d42e909652f40602ecd4fdfd99dd27d9af76 /operserv.c | |
parent | ecfb58ca92d7a72aab2b1391485d5570fe16451b (diff) |
BUILD : 1.7.4 (208) BUGS : none NOTES : New implementation for dynamic server /OS GLOBAL
git-svn-id: svn://svn.anope.org/anope/trunk@208 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@150 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'operserv.c')
-rw-r--r-- | operserv.c | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/operserv.c b/operserv.c index a21d5dc15..2349e3ee1 100644 --- a/operserv.c +++ b/operserv.c @@ -1002,9 +1002,6 @@ static int do_help(User * u) /*************************************************************************/ -/* Global notice sending via GlobalNoticer. */ -/* Added name tag for globalmsg -Certus */ - static int do_global(User * u) { char *msg = strtok(NULL, ""); @@ -1019,24 +1016,44 @@ static int do_global(User * u) return MOD_CONT; } +Server *server_global(Server * s, char *msg) +{ + Server *sl; + + while (s) { + if (s->links) { + sl = server_global(s->links, msg); + if (sl) + s = sl; + else + s = s->next; + } else { + notice_server(s_GlobalNoticer, s, "%s", msg); + s = s->next; + } + } + return s; + +} + void oper_global(char *nick, char *fmt, ...) { va_list args; char msg[2048]; /* largest valid message is 512, this should cover any global */ - Server *s; + char dmsg[2048]; /* largest valid message is 512, this should cover any global */ va_start(args, fmt); vsnprintf(msg, sizeof(msg), fmt, args); va_end(args); - s = first_server(0); - while (s) { - if ((nick) && (!AnonymousGlobal)) - notice_server(s_GlobalNoticer, s, "[%s] %s", nick, msg); - else - notice_server(s_GlobalNoticer, s, "%s", msg); - s = next_server(0); + /* I don't like the way this is coded... */ + if ((nick) && (!AnonymousGlobal)) { + snprintf(dmsg, sizeof(dmsg), "[%s] %s", nick, msg); + server_global(servlist, dmsg); + } else { + server_global(servlist, msg); } + } /*************************************************************************/ |