diff options
-rw-r--r-- | extern.h | 2 | ||||
-rw-r--r-- | operserv.c | 39 | ||||
-rw-r--r-- | version.log | 6 |
3 files changed, 34 insertions, 13 deletions
@@ -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 |