Re: [xml] about xmlReadMemory()
- From: Nick Wellnhofer <wellnhofer aevum de>
- To: nicolas bats <sl1200mk2 gmail com>
- Cc: xml gnome org
- Subject: Re: [xml] about xmlReadMemory()
- Date: Wed, 3 Mar 2021 11:12:47 +0100
On 03/03/2021 09:30, nicolas bats wrote:
Hi Nick,
I've experimented with xmlReadIO and it's cool.
this message just to check I'm doing right:
-I register an xmlInputReadCallback of type: size_t myCallback(void* context,
char* buffer, int length)
-I do my stuff in the callback and if data I use exceed the length of the
buffer, I realloc it.
Is this schema good?
Do I need to set size_t as the return type of myCallback?
No, the read callback is supposed to fill the buffer with up to 'length'
bytes. Try something like:
typedef struct {
const char *ptr;
size_t remaining;
} myContext;
static int
myReadCallback(void *vcontext, char *buffer, int len) {
myContext *context = vcontext;
if (context->remaining < len)
len = context->remaining;
memcpy(buffer, context->ptr, len);
context->ptr += len;
context->remaining -= len;
return len;
}
xmlDocPtr
myReadMemory(const char *buffer, size_t size, const char *URL,
const char *encoding, int options) {
myContext context;
context.ptr = buffer;
context.remaining = size;
return xmlReadIO(myReadCallback, NULL, &context, URL, encoding, options);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]