inline void create_tmp_and_clean_old(std::string &tmp_name) { //First get the temp directory std::string root_tmp_name; get_tmp_base_dir(root_tmp_name); //If fails, check that it's because already exists if(!create_directory(root_tmp_name.c_str())){ error_info info(system_error_code()); if(info.get_error_code() != already_exists_error){ throw interprocess_exception(info); } } #if defined(BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME) tmp_folder(tmp_name); //If fails, check that it's because already exists if(!create_directory(tmp_name.c_str())){ error_info info(system_error_code()); if(info.get_error_code() != already_exists_error){ throw interprocess_exception(info); } } //Now erase all old directories created in the previous boot sessions std::string subdir = tmp_name; subdir.erase(0, root_tmp_name.size()+1); delete_subdirectories(root_tmp_name, subdir.c_str()); #else tmp_name = root_tmp_name; #endif }
inline void tmp_filename(const char *filename, std::string &tmp_name) { tmp_folder(tmp_name); tmp_name += "/"; tmp_name += filename; }
inline void robust_lock_path(std::string &s) { tmp_folder(s); s += "/"; s += robust_lock_subdir_path(); }