ENH: do not throw exception when data directory creating failed in some cases

if the directory already created by other instance
do not throw exception

Change-Id: I3ebde1ab62fa85ea946b6aeafc87aa7468327ce6
This commit is contained in:
lane.wei 2022-10-14 09:53:49 +08:00 committed by Lane.Wei
parent 40b01327a2
commit 5cee2208d7

View file

@ -179,10 +179,15 @@ void PresetBundle::setup_directories()
boost::filesystem::path subdir = path; boost::filesystem::path subdir = path;
subdir.make_preferred(); subdir.make_preferred();
if (! boost::filesystem::is_directory(subdir) && if (! boost::filesystem::is_directory(subdir) &&
! boost::filesystem::create_directory(subdir)) ! boost::filesystem::create_directory(subdir)) {
if (boost::filesystem::is_directory(subdir)) {
BOOST_LOG_TRIVIAL(warning) << boost::format("creating directory %1% failed, maybe created by other instance, go on!")%subdir.string();
}
else
throw Slic3r::RuntimeError(std::string("Unable to create directory ") + subdir.string()); throw Slic3r::RuntimeError(std::string("Unable to create directory ") + subdir.string());
} }
} }
}
// recursively copy all files and dirs in from_dir to to_dir // recursively copy all files and dirs in from_dir to to_dir
static void copy_dir(const boost::filesystem::path& from_dir, const boost::filesystem::path& to_dir) static void copy_dir(const boost::filesystem::path& from_dir, const boost::filesystem::path& to_dir)