Updated a few more Host::File functions and added documentation.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@125110 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Host/common/File.cpp b/source/Host/common/File.cpp
index c95e089..6bfb5d6 100644
--- a/source/Host/common/File.cpp
+++ b/source/Host/common/File.cpp
@@ -13,6 +13,7 @@
 #include <fcntl.h>
 
 #include "lldb/Core/Error.h"
+#include "lldb/Host/FileSpec.h"
 
 using namespace lldb;
 using namespace lldb_private;
@@ -186,6 +187,7 @@
     }
     return error;
 }
+
 Error
 File::Read (void *buf, size_t &num_bytes)
 {
@@ -232,3 +234,58 @@
     return error;
 }
 
+
+Error
+File::Read (void *buf, size_t &num_bytes, off_t &offset)
+{
+    Error error;
+    if (IsValid ())
+    {
+        ssize_t bytes_read = ::pread (m_file_desc, buf, num_bytes, offset);
+        if (bytes_read < 0)
+        {
+            num_bytes = 0;
+            error.SetErrorToErrno();
+        }
+        else
+        {
+            offset += bytes_read;
+            num_bytes = bytes_read;
+        }
+    }
+    else 
+    {
+        num_bytes = 0;
+        error.SetErrorString("invalid file handle");
+    }
+    return error;
+}
+
+Error
+File::Write (const void *buf, size_t &num_bytes, off_t &offset)
+{
+    Error error;
+    if (IsValid())
+    {
+        ssize_t bytes_written = ::pwrite (m_file_desc, buf, num_bytes, offset);
+        if (bytes_written < 0)
+        {
+            num_bytes = 0;
+            error.SetErrorToErrno();
+        }
+        else
+        {
+            offset += bytes_written;
+            num_bytes = bytes_written;
+        }
+    }
+    else 
+    {
+        num_bytes = 0;
+        error.SetErrorString("invalid file handle");
+    }
+    return error;
+}
+
+
+