From 44388ac49531af9e2565f76ef99ff7afb757b3fb Mon Sep 17 00:00:00 2001 From: Erwin Hoffmann Date: Thu, 21 Sep 2023 17:36:16 +0200 Subject: all sources --- src/syslogdevice.cc | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/syslogdevice.cc (limited to 'src/syslogdevice.cc') diff --git a/src/syslogdevice.cc b/src/syslogdevice.cc new file mode 100644 index 0000000..927416e --- /dev/null +++ b/src/syslogdevice.cc @@ -0,0 +1,75 @@ +/** -------------------------------------------------------------------- + * @file syslogdevice.cc + * @brief Implementation of the SyslogDevice class. + * @author Andreas Aardal Hanssen + * @date 2002, 2003 + * ----------------------------------------------------------------- **/ +#include "syslogdevice.h" +#include + +#include + +using namespace ::std; +using namespace ::Binc; + +//------------------------------------------------------------------------ +string SyslogDevice::ident; + +//------------------------------------------------------------------------ +SyslogDevice::SyslogDevice(int f, const char *i, int o, int fa) + : IODevice(f), option(o), facility(fa), priority(LOG_INFO) +{ + ident = i; + openlog(ident.c_str(), option, facility); +} + +//------------------------------------------------------------------------ +SyslogDevice::~SyslogDevice(void) +{ + closelog(); +} + +//------------------------------------------------------------------------ +string SyslogDevice::service(void) const +{ + return "log"; +} + +//------------------------------------------------------------------------ +bool SyslogDevice::waitForWrite(void) const +{ + return true; +} + +//------------------------------------------------------------------------ +bool SyslogDevice::waitForRead(void) const +{ + return false; +} + +//------------------------------------------------------------------------ +IODevice::WriteResult SyslogDevice::write(void) +{ + string out; + string::const_iterator i = outputBuffer.str().begin(); + string::const_iterator ie = outputBuffer.str().end(); + + for (; i != ie; ++i) { + if (*i == '\n') { + syslog(priority, out.c_str(), out.size()); + out = ""; + } else if (*i != '\r') + out += *i; + } + + if (out != "") syslog(priority, out.c_str(), out.size()); + + outputBuffer.clear(); + return WriteDone; +} + +//------------------------------------------------------------------------ +bool SyslogDevice::fillInputBuffer(void) +{ + return false; +} -- cgit v1.2.3