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 12 MemoryFile::MemoryFile(const uint8_t* data, size_t size) 13 : data_(data), size_(size) {} 14 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 23 bool MemoryFile::Write(const void* buf, size_t count, size_t* bytes_written) { 24 return false; 25 } 26 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 34 bool MemoryFile::Close() { 35 return true; 36 } 37 38 bool MemoryFile::GetSize(uint64_t* size) { 39 *size = size_; 40 return true; 41 } 42 43 } // namespace bsdiff 44