diff options
author | Stefan Schallenberg <infos@nafets.de> | 2013-09-11 21:35:53 +0200 |
---|---|---|
committer | Stefan Schallenberg <infos@nafets.de> | 2013-09-11 21:35:53 +0200 |
commit | 0b8bf3d58c09daa4ef7ec5bc9e02efad001af097 (patch) | |
tree | e34c72b20e500ba9c7153a3b9872fe5d38f4d919 /tools/source.c | |
parent | f19e505e2c423b038787d3e63e62150eba328aa5 (diff) | |
download | vdr-plugin-ffnetdev-0b8bf3d58c09daa4ef7ec5bc9e02efad001af097.tar.gz vdr-plugin-ffnetdev-0b8bf3d58c09daa4ef7ec5bc9e02efad001af097.tar.bz2 |
migrated files from tools subdirectory in Main directory.
Corrected Handling of version-Number, now vdr -V shows it correct.
Diffstat (limited to 'tools/source.c')
-rw-r--r-- | tools/source.c | 169 |
1 files changed, 0 insertions, 169 deletions
diff --git a/tools/source.c b/tools/source.c deleted file mode 100644 index f8751b6..0000000 --- a/tools/source.c +++ /dev/null @@ -1,169 +0,0 @@ -#include "tools/source.h" -#include "tools/select.h" - -#include <vdr/tools.h> -#include <string.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> - -cTBSource::cTBSource(void) { - m_BytesRead = 0; - m_BytesWritten = 0; - m_Filed = -1; -} - -bool cTBSource::Open(int Filed, bool IsUnixFd) { - if (IsOpen()) - Close(); - - m_Filed = Filed; - if (IsUnixFd && ::fcntl(m_Filed, F_SETFL, O_NONBLOCK) == -1) - return false; - - return true; -} - -cTBSource::~cTBSource() { -} - -bool cTBSource::Close(void) { - if (!IsOpen()) { - errno = EBADF; - return false; - } - - m_Filed = -1; - return true; -} - -ssize_t cTBSource::Read(void *Buffer, size_t Length) { - ssize_t res; - while ((res = SysRead(Buffer, Length)) < 0 && errno == EINTR) - errno = 0; - if (res > 0) m_BytesRead += res; - return res; -} - -ssize_t cTBSource::Write(const void *Buffer, size_t Length) { - ssize_t res; - while ((res = SysWrite(Buffer, Length)) < 0 && errno == EINTR) - errno = 0; - if (res > 0) m_BytesWritten += res; - return res; -} - -bool cTBSource::TimedWrite(const void *Buffer, size_t Length, uint TimeoutMs) { - cTBSelect sel; - int ms, offs; - - cTimeMs starttime; - ms = TimeoutMs; - offs = 0; - while (Length > 0) { - int b; - - sel.Clear(); - sel.Add(m_Filed, true); - if (sel.Select(ms) == -1) - return false; - - if (sel.CanWrite(m_Filed)) { - if ((b = Write((char*)Buffer + offs, Length)) == -1) - return false; - offs += b; - Length -= b; - } - - ms = TimeoutMs - starttime.Elapsed(); - if (ms <= 0) { - errno = ETIMEDOUT; - return false; - } - } - return true; -} - -bool cTBSource::SafeWrite(const void *Buffer, size_t Length) { - cTBSelect sel; - int offs; - - offs = 0; - while (Length > 0) { - int b; - - sel.Clear(); - sel.Add(m_Filed, true); - if (sel.Select() == -1) - return false; - - if (sel.CanWrite(m_Filed)) { - if ((b = Write((char*)Buffer + offs, Length)) == -1) - return false; - offs += b; - Length -= b; - } - - } - return true; -} - -ssize_t cTBSource::ReadUntil(void *Buffer, size_t Length, const char *Seq, - uint TimeoutMs) { - int ms; - size_t len; - cTBSelect sel; - - if ((len = m_LineBuffer.find(Seq)) != (size_t)-1) { - if (len > Length) { - errno = ENOBUFS; - return -1; - } - memcpy(Buffer, m_LineBuffer.data(), len); - m_LineBuffer.erase(0, len + strlen(Seq)); - //Dprintf("ReadUntil: Served from Linebuffer: %d, |%.*s|\n", len, len - 1, - // (char*)Buffer); - return len; - } - - cTimeMs starttime; - ms = TimeoutMs; - while (m_LineBuffer.size() < BUFSIZ) { - sel.Clear(); - sel.Add(m_Filed, false); - - if (sel.Select(ms) == -1) - return -1; - - if (sel.CanRead(m_Filed)) { - int b; - - len = m_LineBuffer.size(); - m_LineBuffer.resize(BUFSIZ); - if ((b = Read((char*)m_LineBuffer.data() + len, BUFSIZ - len)) == -1) - return -1; - m_LineBuffer.resize(len + b); - - if ((len = m_LineBuffer.find(Seq)) != (size_t)-1) { - if (len > Length) { - errno = ENOBUFS; - return -1; - } - memcpy(Buffer, m_LineBuffer.data(), len); - m_LineBuffer.erase(0, len + strlen(Seq)); - //Dprintf("ReadUntil: Served from Linebuffer: %d, |%.*s|\n", len, len - 1, - // (char*)Buffer); - return len; - } - } - - ms = TimeoutMs - starttime.Elapsed(); - if (ms <= 0) { - errno = ETIMEDOUT; - return -1; - } - } - errno = ENOBUFS; - return -1; -} - |