diff options
| author | Greg Clayton <gclayton@apple.com> | 2013-05-22 23:30:09 +0000 |
|---|---|---|
| committer | Greg Clayton <gclayton@apple.com> | 2013-05-22 23:30:09 +0000 |
| commit | 43d8279ffdd19f97df01c5823fd3cdb452681f8c (patch) | |
| tree | cd6a73110acf8f540dda8c0faf2aff510b1a838d /lldb/source/Host/common | |
| parent | fdbdc9c0ff3ffe090533524f4c2691118f1dc52f (diff) | |
| download | bcm5719-llvm-43d8279ffdd19f97df01c5823fd3cdb452681f8c.tar.gz bcm5719-llvm-43d8279ffdd19f97df01c5823fd3cdb452681f8c.zip | |
Cleaned up the File API a bit.
llvm-svn: 182538
Diffstat (limited to 'lldb/source/Host/common')
| -rw-r--r-- | lldb/source/Host/common/File.cpp | 105 |
1 files changed, 78 insertions, 27 deletions
diff --git a/lldb/source/Host/common/File.cpp b/lldb/source/Host/common/File.cpp index d0512192a37..c0d3c290f4c 100644 --- a/lldb/source/Host/common/File.cpp +++ b/lldb/source/Host/common/File.cpp @@ -318,58 +318,109 @@ File::GetFileSpec (FileSpec &file_spec) const return error; } -Error -File::SeekFromStart (off_t& offset) +off_t +File::SeekFromStart (off_t offset, Error *error_ptr) { - Error error; + off_t result = 0; if (DescriptorIsValid()) { - offset = ::lseek (m_descriptor, offset, SEEK_SET); + result = ::lseek (m_descriptor, offset, SEEK_SET); - if (offset == -1) - error.SetErrorToErrno(); + if (error_ptr) + { + if (result == -1) + error_ptr->SetErrorToErrno(); + else + error_ptr->Clear(); + } } - else + else if (StreamIsValid ()) { - error.SetErrorString("invalid file handle"); + result = ::fseek(m_stream, offset, SEEK_SET); + + if (error_ptr) + { + if (result == -1) + error_ptr->SetErrorToErrno(); + else + error_ptr->Clear(); + } } - return error; + else if (error_ptr) + { + error_ptr->SetErrorString("invalid file handle"); + } + return result; } -Error -File::SeekFromCurrent (off_t& offset) +off_t +File::SeekFromCurrent (off_t offset, Error *error_ptr) { - Error error; + off_t result = -1; if (DescriptorIsValid()) { - offset = ::lseek (m_descriptor, offset, SEEK_CUR); + result = ::lseek (m_descriptor, offset, SEEK_CUR); - if (offset == -1) - error.SetErrorToErrno(); + if (error_ptr) + { + if (result == -1) + error_ptr->SetErrorToErrno(); + else + error_ptr->Clear(); + } } - else + else if (StreamIsValid ()) { - error.SetErrorString("invalid file handle"); + result = ::fseek(m_stream, offset, SEEK_CUR); + + if (error_ptr) + { + if (result == -1) + error_ptr->SetErrorToErrno(); + else + error_ptr->Clear(); + } } - return error; + else if (error_ptr) + { + error_ptr->SetErrorString("invalid file handle"); + } + return result; } -Error -File::SeekFromEnd (off_t& offset) +off_t +File::SeekFromEnd (off_t offset, Error *error_ptr) { - Error error; + off_t result = -1; if (DescriptorIsValid()) { - offset = ::lseek (m_descriptor, offset, SEEK_END); + result = ::lseek (m_descriptor, offset, SEEK_END); - if (offset == -1) - error.SetErrorToErrno(); + if (error_ptr) + { + if (result == -1) + error_ptr->SetErrorToErrno(); + else + error_ptr->Clear(); + } } - else + else if (StreamIsValid ()) { - error.SetErrorString("invalid file handle"); + result = ::fseek(m_stream, offset, SEEK_END); + + if (error_ptr) + { + if (result == -1) + error_ptr->SetErrorToErrno(); + else + error_ptr->Clear(); + } } - return error; + else if (error_ptr) + { + error_ptr->SetErrorString("invalid file handle"); + } + return result; } Error |

