/** * LogUser * * Logs something in the bouncer's main log and also sends it to a specific user. * * @param User the user * @param Format a format string * @param ... additional parameters which are used by the format string */ void CCore::LogUser(CUser *User, const char *Format, ...) { char *Out; int Ret; va_list marker; bool DoneUser = false; va_start(marker, Format); Ret = vasprintf(&Out, Format, marker); va_end(marker); if (AllocFailed(Out)) { return; } m_Log->WriteLine("%s", Out); for (int i = 0; i < m_AdminUsers.GetLength(); i++) { CUser *ThisUser = m_AdminUsers[i]; if (ThisUser->GetSystemNotices() && ThisUser->GetClientConnectionMultiplexer()) { ThisUser->GetClientConnectionMultiplexer()->Privmsg(Out); if (ThisUser == User) { DoneUser = true; } } } if (!DoneUser && User->GetClientConnectionMultiplexer() != NULL) { User->GetClientConnectionMultiplexer()->Privmsg(Out); } free(Out); }
/** * Log * * Logs something in the bouncer's main log. * * @param Format a format string * @param ... additional parameters which are used by the format string */ void CCore::Log(const char *Format, ...) { char *Out; int Ret; va_list marker; va_start(marker, Format); Ret = vasprintf(&Out, Format, marker); va_end(marker); if (AllocFailed(Out)) { return; } if (m_Log == NULL) { fprintf(stderr, "%s\n", Out); } else { m_Log->WriteLine("%s", Out); } for (int i = 0; i < m_AdminUsers.GetLength(); i++) { CUser *User = m_AdminUsers.Get(i); if (User->GetSystemNotices() && User->GetClientConnectionMultiplexer() != NULL) { User->GetClientConnectionMultiplexer()->Privmsg(Out); } } free(Out); }