24 #include <libopenraw/libopenraw.h>
26 #include "memstream.h"
29 using namespace Debug;
34 MemStream::MemStream(
void *ptr,
size_t s)
42 or_error MemStream::open()
44 m_current = (
unsigned char *)m_ptr;
49 int MemStream::close()
55 int MemStream::seek(off_t offset,
int whence)
62 if (m_current == NULL) {
69 m_current = (
unsigned char*)m_ptr + offset;
73 m_current = (
unsigned char*)m_ptr + m_size + offset;
74 newpos = m_size + offset;
78 newpos = (m_current - (
unsigned char*)m_ptr);
88 int MemStream::read(
void *buf,
size_t count)
90 if((m_current == NULL) || (m_ptr == NULL)) {
91 Trace(DEBUG1) <<
"MemStream::failed\n";
95 unsigned char * end = (
unsigned char*)m_ptr + m_size;
96 if((off_t)count > (end - m_current)) {
97 count = end - m_current;
100 memcpy(buf, m_current, count);
106 off_t MemStream::filesize()