aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Utility/ReproducerProvider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Utility/ReproducerProvider.cpp')
-rw-r--r--lldb/source/Utility/ReproducerProvider.cpp41
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;