1 // Copyright 2016 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "bsdiff/memory_file.h"
6
7 #include <algorithm>
8 #include <string.h>
9
10 namespace bsdiff {
11
MemoryFile(const uint8_t * data,size_t size)12 MemoryFile::MemoryFile(const uint8_t* data, size_t size)
13 : data_(data), size_(size) {}
14
Read(void * buf,size_t count,size_t * bytes_read)15 bool MemoryFile::Read(void* buf, size_t count, size_t* bytes_read) {
16 count = std::min(count, static_cast<size_t>(size_ - offset_));
17 memcpy(buf, data_ + offset_, count);
18 offset_ += count;
19 *bytes_read = count;
20 return true;
21 }
22
Write(const void * buf,size_t count,size_t * bytes_written)23 bool MemoryFile::Write(const void* buf, size_t count, size_t* bytes_written) {
24 return false;
25 }
26
Seek(off_t pos)27 bool MemoryFile::Seek(off_t pos) {
28 if (pos > static_cast<off_t>(size_) || pos < 0)
29 return false;
30 offset_ = pos;
31 return true;
32 }
33
Close()34 bool MemoryFile::Close() {
35 return true;
36 }
37
GetSize(uint64_t * size)38 bool MemoryFile::GetSize(uint64_t* size) {
39 *size = size_;
40 return true;
41 }
42
43 } // namespace bsdiff
44