Add PBD::tmp_writable_directory utility function to pbd/file_utils.h/cc
This commit is contained in:
parent
2b03521ef9
commit
1abe8f4e42
@ -468,4 +468,21 @@ remove_directory (const std::string& dir)
|
||||
remove_directory_internal (dir, 0, 0, false);
|
||||
}
|
||||
|
||||
string
|
||||
tmp_writable_directory (const char* domain, const string& prefix)
|
||||
{
|
||||
std::string tmp_dir = Glib::build_filename (g_get_tmp_dir(), domain);
|
||||
std::string dir_name;
|
||||
std::string new_test_dir;
|
||||
do {
|
||||
ostringstream oss;
|
||||
oss << prefix;
|
||||
oss << g_random_int ();
|
||||
dir_name = oss.str();
|
||||
new_test_dir = Glib::build_filename (tmp_dir, dir_name);
|
||||
if (Glib::file_test (new_test_dir, Glib::FILE_TEST_EXISTS)) continue;
|
||||
} while (g_mkdir_with_parents (new_test_dir.c_str(), 0755) != 0);
|
||||
return new_test_dir;
|
||||
}
|
||||
|
||||
} // namespace PBD
|
||||
|
@ -232,6 +232,22 @@ LIBPBD_API int clear_directory (const std::string& dir, size_t* size = 0,
|
||||
*/
|
||||
LIBPBD_API void remove_directory (const std::string& dir);
|
||||
|
||||
/**
|
||||
* Create a temporary writable directory in which to create
|
||||
* temporary files. The directory will be created under the
|
||||
* top level "domain" directory.
|
||||
*
|
||||
* For instance tmp_writable_directory ("pbd", "foo") on POSIX
|
||||
* systems may return a path to a new directory something like
|
||||
* to /tmp/pbd/foo-1423
|
||||
*
|
||||
* @param domain The top level directory
|
||||
* @param prefix A prefix to use when creating subdirectory name
|
||||
*
|
||||
* @return new temporary directory
|
||||
*/
|
||||
LIBPBD_API std::string tmp_writable_directory (const char* domain, const std::string& prefix);
|
||||
|
||||
} // namespace PBD
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user