bugfix _keep_existing name ; added an overwriting option to use ios_base::trunc instead of ios_base::app

This commit is contained in:
Johann Dreo 2010-09-15 22:53:15 +02:00
commit 9d19cc2cfa
2 changed files with 16 additions and 6 deletions

View file

@ -44,11 +44,16 @@ void eoFileMonitor::printHeader()
eoMonitor& eoFileMonitor::operator()(void)
{
ofstream os(filename.c_str(), ios_base::app);
ofstream os(filename.c_str(),
overwrite ?
ios_base::out|ios_base::trunc // FIXME does not seems to work
:
ios_base::out|ios_base::app
);
if (!os)
{
string str = "eoFileMonitor: Could not append to " + filename;
string str = "eoFileMonitor: Could not write to " + filename;
throw runtime_error(str);
}

View file

@ -52,21 +52,23 @@ public :
* @param _filename complete filename to write to
* @param _delim delimiter string to use between each item of the registered vector (e.g. of eoStats)
* @param _keep_existing if true, overwrite any existing file with the same name prior to any output
* @param _header print the header (with the descriptions of registered eoStats) at the beginning of the file
* @param _header print the header (with the descriptions of registered eoStats) at the beginning of the file (WARNING: true will discards header printing)
*/
eoFileMonitor(
std::string _filename,
std::string _delim = " ",
bool _keep_existing = false,
bool _header=false
bool _header = false,
bool _overwrite = false
)
: filename(_filename),
delim(_delim),
keep(_keep_existing),
header(_header),
firstcall(true)
firstcall(true),
overwrite(_overwrite)
{
if (!_keep) {
if (!_keep_existing) {
std::ofstream os (filename.c_str ());
if (!os) {
@ -108,6 +110,9 @@ private :
//! flag to avoid calling twice operator()(void)
bool firstcall;
//! erase the entire file prior to writing in it (mode eos_base::
bool overwrite;
};
#endif