diff options
Diffstat (limited to 'src/base')
-rw-r--r-- | src/base/output.cc | 10 | ||||
-rw-r--r-- | src/base/output.hh | 10 |
2 files changed, 14 insertions, 6 deletions
diff --git a/src/base/output.cc b/src/base/output.cc index ce1b49a82..516a1d05a 100644 --- a/src/base/output.cc +++ b/src/base/output.cc @@ -77,9 +77,11 @@ OutputDirectory::checkForStdio(const string &name) const ostream * OutputDirectory::openFile(const string &filename, - ios_base::openmode mode) + ios_base::openmode mode, bool no_gz) { - if (filename.find(".gz", filename.length()-3) < filename.length()) { + bool gz = !no_gz; + gz = gz && filename.find(".gz", filename.length()-3) < filename.length(); + if (gz) { ogzstream *file = new ogzstream(filename.c_str(), mode); if (!file->is_open()) fatal("Cannot open file %s", filename); @@ -153,7 +155,7 @@ OutputDirectory::resolve(const string &name) const } ostream * -OutputDirectory::create(const string &name, bool binary) +OutputDirectory::create(const string &name, bool binary, bool no_gz) { ostream *file = checkForStdio(name); if (file) @@ -162,7 +164,7 @@ OutputDirectory::create(const string &name, bool binary) string filename = resolve(name); ios_base::openmode mode = ios::trunc | (binary ? ios::binary : (ios::openmode)0); - file = openFile(filename, mode); + file = openFile(filename, mode, no_gz); return file; } diff --git a/src/base/output.hh b/src/base/output.hh index ef628882d..67e6ecb18 100644 --- a/src/base/output.hh +++ b/src/base/output.hh @@ -86,10 +86,13 @@ class OutputDirectory * * @param filename file to open * @param mode attributes to open file with + * @param no_gz true to disable opening the file as a gzip compressed output + * stream; false otherwise * @return stream pointer to opened file; will cause sim fail on error */ std::ostream *openFile(const std::string &filename, - std::ios_base::openmode mode = std::ios::trunc); + std::ios_base::openmode mode = std::ios::trunc, + bool no_gz = false); /** * Sets name of this directory. @@ -111,9 +114,12 @@ class OutputDirectory * @param name name of file to create (without this directory's name * leading it) * @param binary true to create a binary file; false otherwise + * @param no_gz true to disable creating a gzip compressed output stream; + * false otherwise * @return stream to the opened file */ - std::ostream *create(const std::string &name, bool binary = false); + std::ostream *create(const std::string &name, bool binary = false, + bool no_gz = false); /** * Closes a file stream. |