+ WriteServ(t->fd,"NOTICE $%s :%s",Config->ServerName,textbuffer);
+ }
+}
+
+void ServerPrivmsgAll(char* text, ...)
+{
+ if (!text)
+ return;
+
+ char textbuffer[MAXBUF];
+ va_list argsPtr;
+ va_start (argsPtr, text);
+ vsnprintf(textbuffer, MAXBUF, text, argsPtr);
+ va_end(argsPtr);
+
+ for (std::vector<userrec*>::const_iterator i = local_users.begin(); i != local_users.end(); i++)
+ {
+ userrec* t = (userrec*)(*i);
+ WriteServ(t->fd,"PRIVMSG $%s :%s",Config->ServerName,textbuffer);
+ }
+}
+
+void WriteMode(const char* modes, int flags, const char* text, ...)
+{
+ char textbuffer[MAXBUF];
+ int modelen;
+ va_list argsPtr;
+
+ if ((!text) || (!modes) || (!flags))
+ {
+ log(DEFAULT,"*** BUG *** WriteMode was given an invalid parameter");
+ return;
+ }
+
+ va_start(argsPtr, text);
+ vsnprintf(textbuffer, MAXBUF, text, argsPtr);
+ va_end(argsPtr);
+ modelen = strlen(modes);
+
+ for (std::vector<userrec*>::const_iterator i = local_users.begin(); i != local_users.end(); i++)
+ {
+ userrec* t = (userrec*)(*i);
+ bool send_to_user = false;
+
+ if (flags == WM_AND)
+ {
+ send_to_user = true;
+
+ for (int n = 0; n < modelen; n++)
+ {
+ if (!hasumode(t,modes[n]))
+ {
+ send_to_user = false;
+ break;
+ }
+ }
+ }
+ else if (flags == WM_OR)
+ {
+ send_to_user = false;
+
+ for (int n = 0; n < modelen; n++)
+ {
+ if (hasumode(t,modes[n]))
+ {
+ send_to_user = true;
+ break;
+ }
+ }
+ }
+
+ if (send_to_user)
+ {
+ WriteServ(t->fd,"NOTICE %s :%s",t->nick,textbuffer);
+ }