83 INT <<
"TmpPath cleanup error (" << res <<
") " << p << endl;
85 DBG <<
"TmpPath cleaned up " << p << endl;
111 :_impl( tmpPath_r.empty() ? nullptr : new
Impl(
std::move(tmpPath_r) ) )
134 Pathname ret =
Pathname( getenv(
"ZYPPTMPDIR") ? getenv(
"ZYPPTMPDIR") :
"/var/tmp" );
135 if ( geteuid() == 0 )
153 const std::string & prefix_r )
158 ERR <<
"Parent directory '" << inParentDir_r <<
"' can't be created." << endl;
163 Pathname tmpPath = (inParentDir_r + prefix_r).extend(
"XXXXXX");
167 ERR <<
"Out of memory" << endl;
171 int tmpFd = ::mkostemp( buf, O_CLOEXEC );
179 ERR <<
"Cant create '" << buf <<
"' " <<
::strerror( errno ) << endl;
193 }
else if ( mode != -1U ) {
215 static std::string p(
"TmpFile." );
224 const std::string & prefix_r )
229 ERR <<
"Parent directory '" << inParentDir_r <<
"' can't be created." << endl;
234 Pathname tmpPath = (inParentDir_r + prefix_r).extend(
"XXXXXX");
238 ERR <<
"Out of memory" << endl;
242 char * tmp = ::mkdtemp( buf );
247 ERR <<
"Cant create '" << tmpPath <<
"' " <<
::strerror( errno ) << endl;
261 }
else if ( mode != -1U ) {
270 static std::string p(
"TmpDir." );
279 return _tmpdir.
path();
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)
Pathname myTmpDir()
Global access to the zypp.TMPDIR (created on demand, deleted when libzypp is unloaded) ...
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()