forked from Lephenixnoir/hex-editor
28 lines
611 B
C
28 lines
611 B
C
#include "source.h"
|
|
#include <stdlib.h>
|
|
|
|
source_t *source_open(source_intf_t *intf, void *cookie)
|
|
{
|
|
source_t *source = calloc(1, sizeof *source);
|
|
if(!source) return NULL;
|
|
|
|
source->buf = buffer_create(1024, 1024);
|
|
if(!source->buf) {
|
|
free(source);
|
|
return NULL;
|
|
}
|
|
|
|
source->intf = intf;
|
|
source->cookie = cookie;
|
|
return source;
|
|
}
|
|
|
|
bool source_load(source_t *s, off_t offset, size_t segment_size)
|
|
{
|
|
if(!buffer_resize(s->buf, segment_size))
|
|
return false;
|
|
|
|
s->buf_offset = offset;
|
|
return s->intf->read(s->cookie, s->buf->mem, offset, segment_size);
|
|
}
|