diff options
Diffstat (limited to 'lldb/source/Host')
| -rw-r--r-- | lldb/source/Host/common/File.cpp | 4 | ||||
| -rw-r--r-- | lldb/source/Host/common/FileSpec.cpp | 32 |
2 files changed, 33 insertions, 3 deletions
diff --git a/lldb/source/Host/common/File.cpp b/lldb/source/Host/common/File.cpp index a84266f7110..ca0c223e629 100644 --- a/lldb/source/Host/common/File.cpp +++ b/lldb/source/Host/common/File.cpp @@ -538,7 +538,7 @@ File::Read (void *buf, size_t &num_bytes, off_t &offset) } Error -File::Read (size_t &num_bytes, off_t &offset, DataBufferSP &data_buffer_sp) +File::Read (size_t &num_bytes, off_t &offset, bool null_terminate, DataBufferSP &data_buffer_sp) { Error error; @@ -557,7 +557,7 @@ File::Read (size_t &num_bytes, off_t &offset, DataBufferSP &data_buffer_sp) num_bytes = bytes_left; std::auto_ptr<DataBufferHeap> data_heap_ap; - data_heap_ap.reset(new DataBufferHeap(num_bytes, '\0')); + data_heap_ap.reset(new DataBufferHeap(num_bytes + (null_terminate ? 1 : 0), '\0')); if (data_heap_ap.get()) { diff --git a/lldb/source/Host/common/FileSpec.cpp b/lldb/source/Host/common/FileSpec.cpp index 0faa274a47f..d104bd21c47 100644 --- a/lldb/source/Host/common/FileSpec.cpp +++ b/lldb/source/Host/common/FileSpec.cpp @@ -812,7 +812,37 @@ FileSpec::ReadFileContents (off_t file_offset, size_t file_size, Error *error_pt File file; error = file.Open(resolved_path, File::eOpenOptionRead); if (error.Success()) - error = file.Read (file_size, file_offset, data_sp); + { + const bool null_terminate = false; + error = file.Read (file_size, file_offset, null_terminate, data_sp); + } + } + else + { + error.SetErrorString("invalid file specification"); + } + if (error_ptr) + *error_ptr = error; + return data_sp; +} + +DataBufferSP +FileSpec::ReadFileContentsAsCString(Error *error_ptr) +{ + Error error; + DataBufferSP data_sp; + char resolved_path[PATH_MAX]; + if (GetPath(resolved_path, sizeof(resolved_path))) + { + File file; + error = file.Open(resolved_path, File::eOpenOptionRead); + if (error.Success()) + { + off_t offset = 0; + size_t length = SIZE_MAX; + const bool null_terminate = true; + error = file.Read (length, offset, null_terminate, data_sp); + } } else { |

