diff --git a/LCS/Stream/include/Stream/FileStream.h b/LCS/Stream/include/Stream/FileStream.h index 92acc2c7f16770c390bb9c8cba484f36b57b144a..fb1142b43eb040d1df6fcbb57d9bc571dd97c3e6 100644 --- a/LCS/Stream/include/Stream/FileStream.h +++ b/LCS/Stream/include/Stream/FileStream.h @@ -11,6 +11,8 @@ class FileStream : public FileDescriptorBasedStream public: FileStream(const char *name); // read-only; existing file FileStream(const char *name, int mode); // rd/wr; create file + FileStream(const char *name, int flags, int mode); // rd/wr; create file, use given flags + virtual ~FileStream(); }; diff --git a/LCS/Stream/src/FileStream.cc b/LCS/Stream/src/FileStream.cc index da7548d6960f4a6ca0c62fd7b7ca7c853b088445..d65c1d71ea31966954cdd48844e0b2d5499bddd7 100644 --- a/LCS/Stream/src/FileStream.cc +++ b/LCS/Stream/src/FileStream.cc @@ -25,6 +25,12 @@ FileStream::FileStream(const char *name, int mode) } +FileStream::FileStream(const char *name, int flags, int mode) +{ + if ((fd = open(name, flags, mode)) < 0) + throw SystemCallException("open", errno, THROW_ARGS); +} + FileStream::~FileStream() { }