80 INT <<
"TmpPath cleanup error (" << res <<
") " << p << endl;
82 DBG <<
"TmpPath cleaned up " << p << endl;
121 :_impl( tmpPath_r.empty() ?
nullptr : new
Impl(
std::move(tmpPath_r) ) )
163 static Pathname p( getenv(
"ZYPPTMPDIR") ? getenv(
"ZYPPTMPDIR") :
"/var/tmp" );
186 const std::string & prefix_r )
191 ERR <<
"Parent directory '" << inParentDir_r <<
"' can't be created." << endl;
196 Pathname tmpPath = (inParentDir_r + prefix_r).extend(
"XXXXXX");
200 ERR <<
"Out of memory" << endl;
204 int tmpFd = ::mkostemp( buf, O_CLOEXEC );
212 ERR <<
"Cant create '" << buf <<
"' " <<
::strerror( errno ) << endl;
231 }
else if ( mode != -1U ) {
254 static std::string p(
"TmpFile." );
270 const std::string & prefix_r )
275 ERR <<
"Parent directory '" << inParentDir_r <<
"' can't be created." << endl;
280 Pathname tmpPath = (inParentDir_r + prefix_r).extend(
"XXXXXX");
284 ERR <<
"Out of memory" << endl;
288 char * tmp = ::mkdtemp( buf );
293 ERR <<
"Cant create '" << tmpPath <<
"' " <<
::strerror( errno ) << endl;
312 }
else if ( mode != -1U ) {
327 static std::string p(
"TmpDir." );
bool autoCleanup() const
Whether path is valid and deleted when the last reference drops.
int assert_dir(const Pathname &path, unsigned mode)
Like 'mkdir -p'.
TmpFile(const Pathname &inParentDir_r=defaultLocation(), const std::string &prefix_r=defaultPrefix())
Ctor.
static TmpDir makeSibling(const Pathname &sibling_r)
Provide a new empty temporary directory as sibling.
int clean_dir(const Pathname &path)
Like 'rm -r DIR/ *'.
int chmod(const Pathname &path, mode_t mode)
Like 'chmod'.
Impl(Pathname &&path_r, Flags flags_r=CtorDefault)
static const Pathname & defaultLocation()
TmpDir(const Pathname &inParentDir_r=defaultLocation(), const std::string &prefix_r=defaultPrefix())
Ctor.
std::string basename() const
Return the last component of this path.
Provide a new empty temporary file and delete it when no longer needed.
int recursive_rmdir(const Pathname &path)
Like 'rm -r DIR'.
std::string strerror(int errno_r)
Return string describing the error_r code.
bool empty() const
Test for an empty path.
Clean or delete a directory on destruction.
Provide a new empty temporary directory and recursively delete it when no longer needed.
static const std::string & defaultPrefix()
const Pathname & path() const
const std::string & asString() const
String representation.
bool isExist() const
Return whether valid stat info exists.
Pathname dirname() const
Return all but the last component od this path.
Base class for reference counted objects.
int unlink(const Pathname &path)
Like 'unlink'.
Impl & operator=(const Impl &)=delete
Wrapper class for ::stat/::lstat.
static TmpFile makeSibling(const Pathname &sibling_r)
Provide a new empty temporary directory as sibling.
mode_t applyUmaskTo(mode_t mode_r)
Modify mode_r according to the current umask ( mode_r & ~getUmask() ).
Easy-to use interface to the ZYPP dependency resolver.
void autoCleanup(bool yesno_r)
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
static ManagedFile asManagedFile()
Create a temporary file and convert it to a automatically cleaned up ManagedFile. ...
static const std::string & defaultPrefix()