#include "pch.hpp" #include "logger.h" #include "scopeObject.h" #include "stream.h" #include "rowProcessor.h" #include "scriptLoader.h" #include "exceptions.h" #include class FileStream : public Stream { public: FileStream(ScriptNodePtr p) : Stream(p), path(p, "path") { } void setFilter(const Glib::ustring &) { throw NotSupported(__PRETTY_FUNCTION__); } void runStream(const Sink & sink) const { FILE * file = fopen(path(), "r"); if (!file) { throw syscall_error(errno); } ScopeObject so([&] { fclose(file); }); while (!feof(file)) { char buf[BUFSIZ]; size_t len = fread(buf, 1, BUFSIZ, file); if (len > 0) { sink(buf, len); } } } const Variable path; }; DECLARE_LOADER("filestream", FileStream);