summaryrefslogtreecommitdiff
path: root/operserv.c
diff options
context:
space:
mode:
authordane 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
committerdane 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
commit2f0125c6fbe48affb36b60673de820c060cc4dbc (patch)
tree0d58d42e909652f40602ecd4fdfd99dd27d9af76 /operserv.c
parentecfb58ca92d7a72aab2b1391485d5570fe16451b (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.c39
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);
}
+
}
/*************************************************************************/