summaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
Diffstat (limited to 'src/base')
-rw-r--r--src/base/output.cc10
-rw-r--r--src/base/output.hh10
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.