diff options
author | Greg Clayton <gclayton@apple.com> | 2012-08-30 18:15:10 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2012-08-30 18:15:10 +0000 |
commit | 0b0b512fd6eaa15626d0b1caad24ae66a79e8408 (patch) | |
tree | ec79472f787c96799b79d9d0556c20bf7e477278 /lldb/source/Host/common/FileSpec.cpp | |
parent | 738ea2590ffde414777efe26bffd27d97f5cc351 (diff) | |
download | bcm5719-llvm-0b0b512fd6eaa15626d0b1caad24ae66a79e8408.tar.gz bcm5719-llvm-0b0b512fd6eaa15626d0b1caad24ae66a79e8408.zip |
OptionValueFileSpec had an accessor to read the contents of the file and return the data. This can end up being used to get the string contents of a text file and could end up not being NULL terminated. I added accessors to get the file contents raw, or with a null terminator. Added the needed calls to make this happen in the FileSpec and File classes.
llvm-svn: 162921
Diffstat (limited to 'lldb/source/Host/common/FileSpec.cpp')
-rw-r--r-- | lldb/source/Host/common/FileSpec.cpp | 32 |
1 files changed, 31 insertions, 1 deletions
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 { |