diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-12-22 03:58:05 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-12-22 03:58:05 +0000 |
| commit | 59f63e2b6d0dba963faee7dfee54fbb48dee396a (patch) | |
| tree | 29ecb7853c0429a3c8050bde2d147b7d59ff2a8c /src/lib/scoped_temporary.cc | |
| parent | 3f8953593f8f55cef214ca259fe4aa4fa2f25ad4 (diff) | |
Remove POSIX backtraces; move ScopedTemporary into its own file.
Diffstat (limited to 'src/lib/scoped_temporary.cc')
| -rw-r--r-- | src/lib/scoped_temporary.cc | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/lib/scoped_temporary.cc b/src/lib/scoped_temporary.cc new file mode 100644 index 000000000..c64f63243 --- /dev/null +++ b/src/lib/scoped_temporary.cc @@ -0,0 +1,64 @@ +/* + Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include "scoped_temporary.h" + +/** Construct a ScopedTemporary. A temporary filename is decided but the file is not opened + * until ::open() is called. + */ +ScopedTemporary::ScopedTemporary () + : _open (0) +{ + _file = boost::filesystem::temp_directory_path() / boost::filesystem::unique_path (); +} + +/** Close and delete the temporary file */ +ScopedTemporary::~ScopedTemporary () +{ + close (); + boost::system::error_code ec; + boost::filesystem::remove (_file, ec); +} + +/** @return temporary filename */ +char const * +ScopedTemporary::c_str () const +{ + return _file.string().c_str (); +} + +/** Open the temporary file. + * @return File's FILE pointer. + */ +FILE* +ScopedTemporary::open (char const * params) +{ + _open = fopen (c_str(), params); + return _open; +} + +/** Close the file */ +void +ScopedTemporary::close () +{ + if (_open) { + fclose (_open); + _open = 0; + } +} |
