diff options
-rw-r--r-- | common/file.cpp | 25 | ||||
-rw-r--r-- | common/file.h | 2 |
2 files changed, 26 insertions, 1 deletions
diff --git a/common/file.cpp b/common/file.cpp index 5b465b5e01..e84e337d2f 100644 --- a/common/file.cpp +++ b/common/file.cpp @@ -494,6 +494,31 @@ bool DumpFile::open(const String &filename) { return _handle != NULL; } +bool DumpFile::open(const FilesystemNode &node) { + assert(!_handle); + + if (!node.exists()) { + warning("File::open: Trying to open a FilesystemNode which does not exist"); + return false; + } else if (node.isDirectory()) { + warning("File::open: Trying to open a FilesystemNode which is a directory"); + return false; + } /*else if (!node.isReadable() && mode == kFileReadMode) { + warning("File::open: Trying to open an unreadable FilesystemNode object for reading"); + return false; + } else if (!node.isWritable() && mode == kFileWriteMode) { + warning("File::open: Trying to open an unwritable FilesystemNode object for writing"); + return false; + }*/ + + _handle = fopen(node.getPath().c_str(), "rb"); + + if (_handle == NULL) + debug(2, "File %s not found", node.getName().c_str()); + + return _handle != NULL; +} + void DumpFile::close() { if (_handle) fclose((FILE *)_handle); diff --git a/common/file.h b/common/file.h index 3c2520b07c..54168ffc7d 100644 --- a/common/file.h +++ b/common/file.h @@ -125,7 +125,7 @@ public: virtual ~DumpFile(); virtual bool open(const String &filename); - //virtual bool open(const FilesystemNode &node); + virtual bool open(const FilesystemNode &node); virtual void close(); |