diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/inspircd.cpp | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 44f658427..d039d7314 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -811,89 +811,3 @@ int InspIRCd::GetTimeDelta() { return time_delta; } - -bool FileLogger::Readable() -{ - return false; -} - -void FileLogger::HandleEvent(EventType et, int errornum) -{ - this->WriteLogLine(""); - if (log) - ServerInstance->SE->DelFd(this); -} - -void FileLogger::WriteLogLine(const std::string &line) -{ - if (line.length()) - buffer.append(line); - - if (log) - { - int written = fprintf(log,"%s",buffer.c_str()); -#ifdef WINDOWS - buffer.clear(); -#else - if ((written >= 0) && (written < (int)buffer.length())) - { - buffer.erase(0, buffer.length()); - ServerInstance->SE->AddFd(this); - } - else if (written == -1) - { - if (errno == EAGAIN) - ServerInstance->SE->AddFd(this); - } - else - { - /* Wrote the whole buffer, and no need for write callback */ - buffer.clear(); - } -#endif - if (writeops++ % 20) - { - fflush(log); - } - } -} - -void FileLogger::Close() -{ - if (log) - { - /* Burlex: Windows assumes nonblocking on FILE* pointers anyway, and also "file" fd's aren't the same - * as socket fd's. */ -#ifndef WIN32 - int flags = fcntl(fileno(log), F_GETFL, 0); - fcntl(fileno(log), F_SETFL, flags ^ O_NONBLOCK); -#endif - if (buffer.size()) - fprintf(log,"%s",buffer.c_str()); - -#ifndef WINDOWS - ServerInstance->SE->DelFd(this); -#endif - - fflush(log); - fclose(log); - } - - buffer.clear(); -} - -FileLogger::FileLogger(InspIRCd* Instance, FILE* logfile) : ServerInstance(Instance), log(logfile), writeops(0) -{ - if (log) - { - irc::sockets::NonBlocking(fileno(log)); - this->SetFd(fileno(log)); - buffer.clear(); - } -} - -FileLogger::~FileLogger() -{ - this->Close(); -} - |