diff options
Diffstat (limited to 'lldb/source/Utility/ReproducerProvider.cpp')
| -rw-r--r-- | lldb/source/Utility/ReproducerProvider.cpp | 41 |
1 files changed, 7 insertions, 34 deletions
diff --git a/lldb/source/Utility/ReproducerProvider.cpp b/lldb/source/Utility/ReproducerProvider.cpp index 5145819b717c..0d1581abda64 100644 --- a/lldb/source/Utility/ReproducerProvider.cpp +++ b/lldb/source/Utility/ReproducerProvider.cpp @@ -45,40 +45,6 @@ void VersionProvider::Keep() { os << m_version << "\n"; } -FlushingFileCollector::FlushingFileCollector(llvm::StringRef files_path, - llvm::StringRef dirs_path, - std::error_code &ec) { - auto clear = llvm::make_scope_exit([this]() { - m_files_os.reset(); - m_dirs_os.reset(); - }); - m_files_os.emplace(files_path, ec, llvm::sys::fs::OF_Append); - if (ec) - return; - m_dirs_os.emplace(dirs_path, ec, llvm::sys::fs::OF_Append); - if (ec) - return; - clear.release(); -} - -void FlushingFileCollector::addFileImpl(StringRef file) { - if (m_files_os) { - *m_files_os << file << '\0'; - m_files_os->flush(); - } -} - -llvm::vfs::directory_iterator -FlushingFileCollector::addDirectoryImpl(const Twine &dir, - IntrusiveRefCntPtr<vfs::FileSystem> vfs, - std::error_code &dir_ec) { - if (m_dirs_os) { - *m_dirs_os << dir << '\0'; - m_dirs_os->flush(); - } - return vfs->dir_begin(dir, dir_ec); -} - void FileProvider::RecordInterestingDirectory(const llvm::Twine &dir) { if (m_collector) m_collector->addFile(dir); @@ -89,6 +55,13 @@ void FileProvider::RecordInterestingDirectoryRecursive(const llvm::Twine &dir) { m_collector->addDirectory(dir); } +void FileProvider::Keep() { + if (m_collector) { + FileSpec file = GetRoot().CopyByAppendingPathComponent(Info::file); + m_collector->writeMapping(file.GetPath()); + } +} + llvm::Expected<std::unique_ptr<ProcessInfoRecorder>> ProcessInfoRecorder::Create(const FileSpec &filename) { std::error_code ec; |
