hex-editor/src/source.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);
}