pdf2htmlEX/src/TmpFiles.cc

78 lines
1.3 KiB
C++
Raw Normal View History

2012-11-27 16:17:29 +00:00
/*
* TmpFiles.cc
*
* Collect and clean-up temporary files
*
* implemented by WangLu
* split off by Filodej <philodej@gmail.com>
*/
#include <iostream>
2013-06-24 20:45:07 +00:00
#include <cstdio>
#include <sys/stat.h>
2014-01-13 12:37:00 +00:00
#include <unistd.h>
2013-06-24 20:45:07 +00:00
2012-11-26 21:38:13 +00:00
#include "TmpFiles.h"
#include "Param.h"
2014-01-15 13:29:46 +00:00
#ifdef __MINGW32__
#include "util/mingw.h"
#endif
2012-11-26 21:38:13 +00:00
using namespace std;
namespace pdf2htmlEX {
2012-11-29 13:20:26 +00:00
TmpFiles::TmpFiles( const Param& param )
: param( param )
2012-11-29 13:20:26 +00:00
{ }
2012-11-26 21:38:13 +00:00
TmpFiles::~TmpFiles()
{
2012-11-26 21:38:13 +00:00
clean();
}
2012-11-27 16:17:29 +00:00
void TmpFiles::add( const string & fn)
2012-11-26 21:38:13 +00:00
{
if(!param.clean_tmp)
return;
if(tmp_files.insert(fn).second && param.debug)
cerr << "Add new temporary file: " << fn << endl;
}
2014-01-11 08:25:09 +00:00
// Return the total size of the temporary files in bytes
double TmpFiles::get_total_size() const
{
double total_size = 0;
2014-01-13 12:37:00 +00:00
struct stat st;
2014-11-16 14:04:02 +00:00
for(auto & fn : tmp_files)
{
stat(fn.c_str(), &st);
2014-01-11 08:25:09 +00:00
total_size += st.st_size;
}
return total_size;
}
2012-11-26 21:38:13 +00:00
void TmpFiles::clean()
{
if(!param.clean_tmp)
return;
2014-11-16 14:04:02 +00:00
for(auto & fn : tmp_files)
2012-11-26 21:38:13 +00:00
{
remove(fn.c_str());
if(param.debug)
cerr << "Remove temporary file: " << fn << endl;
}
2014-01-13 12:37:00 +00:00
rmdir(param.tmp_dir.c_str());
2012-11-26 21:38:13 +00:00
if(param.debug)
cerr << "Remove temporary directory: " << param.tmp_dir << endl;
}
} // namespace pdf2htmlEX