summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extern.h2
-rw-r--r--operserv.c39
-rw-r--r--version.log6
3 files changed, 34 insertions, 13 deletions
diff --git a/extern.h b/extern.h
index 3f49ec167..fe02b446b 100644
--- a/extern.h
+++ b/extern.h
@@ -774,7 +774,7 @@ E void wallops(const char *source, const char *fmt, ...)
E void notice(const char *source, const char *dest, const char *fmt, ...)
FORMAT(printf,3,4);
-E void notice_server(const char *source, Server * s, const char *fmt, ...)
+E void notice_server(const char *source, Server *s, const char *fmt, ...)
FORMAT(printf,3,4);
E void notice_user(const char *source, User *u, const char *fmt, ...)
FORMAT(printf,3,4);
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);
}
+
}
/*************************************************************************/
diff --git a/version.log b/version.log
index f25d0f8bb..24c429b6b 100644
--- a/version.log
+++ b/version.log
@@ -8,10 +8,14 @@
VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="4"
-VERSION_BUILD="207"
+VERSION_BUILD="208"
# $Log$
#
+# BUILD : 1.7.4 (208)
+# BUGS : none
+# NOTES : New implementation for dynamic server /OS GLOBAL
+#
# BUILD : 1.7.4 (207)
# BUGS : N/A
# NOTES : Fixed PTLink m_server incorrect argument count