summaryrefslogtreecommitdiff
path: root/libs/IO/src/FileReader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/IO/src/FileReader.cc')
-rw-r--r--libs/IO/src/FileReader.cc63
1 files changed, 63 insertions, 0 deletions
diff --git a/libs/IO/src/FileReader.cc b/libs/IO/src/FileReader.cc
new file mode 100644
index 0000000..519c749
--- /dev/null
+++ b/libs/IO/src/FileReader.cc
@@ -0,0 +1,63 @@
+/**
+ * ======================== legal notice ======================
+ *
+ * File: FileReader.cc
+ * Created: 28. Juli 2012, 15:00
+ * Author: <a href="mailto:geronimo013@gmx.de">Geronimo</a>
+ * Project: libIO: classes for files, filesystem and input/output
+ *
+ * CMP - compound media player
+ *
+ * is a client/server mediaplayer intended to play any media from any workstation
+ * without the need to export or mount shares. cmps is an easy to use backend
+ * with a (ready to use) HTML-interface. Additionally the backend supports
+ * authentication via HTTP-digest authorization.
+ * cmpc is a client with vdr-like osd-menues.
+ *
+ * Copyright (c) 2012 Reinhard Mantey, some rights reserved!
+ * published under Creative Commons by-sa
+ * For details see http://creativecommons.org/licenses/by-sa/3.0/
+ *
+ * The cmp project's homepage is at http://projects.vdr-developer.org/projects/cmp
+ *
+ * --------------------------------------------------------------
+ */
+#include <FileReader.h>
+#include <File.h>
+#include <Logging.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+cFileReader::cFileReader(cFile *Input)
+ : fd(-1)
+ , file(Input)
+{
+ if (file && file->Exists() && file->CanRead()) {
+ fd = open(file->AbsolutePath(), O_RDONLY);
+ if (fd < 0) esyslog("ERROR: could not open %s", file->AbsolutePath());
+ }
+}
+
+cFileReader::~cFileReader()
+{
+ Close();
+}
+
+void cFileReader::Close()
+{
+ if (fd >= 0) {
+ close(fd);
+ fd = -1;
+ }
+ if (file) {
+ delete file;
+ file = NULL;
+ }
+}
+
+int cFileReader::Read(char* buf, int bufSize)
+{
+ if (fd >= 0) return read(fd, buf, bufSize);
+ esyslog("ERROR: not an open file! %s", file->AbsolutePath());
+ return 0;
+}