ModuleLock::ModuleLock(const FileSpec &root_dir_spec, const UUID &uuid, Error &error) { const auto lock_dir_spec = JoinPath(root_dir_spec, kLockDirName); error = MakeDirectory(lock_dir_spec); if (error.Fail()) return; m_file_spec = JoinPath(lock_dir_spec, uuid.GetAsString().c_str()); m_file.Open(m_file_spec.GetCString(), File::eOpenOptionWrite | File::eOpenOptionCanCreate | File::eOpenOptionCloseOnExec); if (!m_file) { error.SetErrorToErrno(); return; } m_lock.reset(new lldb_private::LockFile(m_file.GetDescriptor())); error = m_lock->WriteLock(0, 1); if (error.Fail()) error.SetErrorStringWithFormat("Failed to lock file: %s", error.AsCString()); }
FileSpec ModuleCache::GetModuleDirectory (const FileSpec &root_dir_spec, const UUID &uuid) { const auto modules_dir_spec = JoinPath (root_dir_spec, kModulesSubdir); return JoinPath (modules_dir_spec, uuid.GetAsString ().c_str ()); }