74 memcpy(b->
buf + b->
pos, buf, size);
80 if (size <= 0 || pos > b->
pos)
84 memmove(b->
buf + pos + size, b->
buf + pos, b->
pos - pos);
85 memcpy(b->
buf + pos, buf, size);
101 const char from,
const char to)
114 const char *from,
const char *to)
116 const char *cp0 = buf;
119 const char *cp1 = strstr(cp0, from);
125 cp0 = cp1 + strlen(from);
132 while (b->
pos && b->
buf[b->
pos-1] ==
' ')
148 if (*cp >= 0 && *cp <= 31)
149 if (*cp != 9 && *cp != 10 && *cp != 13)
192 void (*wfunc)(
WRBUF,
const char *,
size_t))
198 size_t inbytesleft = size;
199 const char *inp = buf;
202 size_t outbytesleft =
sizeof(outbuf);
204 size_t r =
yaz_iconv(cd, (
char**) &inp, &inbytesleft,
205 &outp, &outbytesleft);
206 if (r == (
size_t) (-1))
215 (*wfunc)(b, outbuf, outp - outbuf);
219 (*wfunc)(b, buf, size);
224 size_t size,
int cdata)
258 const char *buf,
size_t size)
273 size_t outbytesleft =
sizeof(outbuf);
275 size_t r =
yaz_iconv(cd, 0, 0, &outp, &outbytesleft);
276 if (r != (
size_t) (-1))
283 assert(b && b->
pos <= b->
size);
290 if (!b || b->
pos == 0)
299 if (no_to_remove > b->
pos)
300 no_to_remove = b->
pos;
301 b->
pos = b->
pos - no_to_remove;
312 for (i = 0; i < len; i++)
313 if (str[i] <
' ' || str[i] > 126)
322 for (i = 0; i < sz; i++)
324 if (cp[i] > 0 && cp[i] < 32)
338 else if (cp[i] ==
'"')
342 else if (cp[i] ==
'\\')
size_t yaz_iconv(yaz_iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
just like iconv(3)
int yaz_iconv_error(yaz_iconv_t cd)
returns last error - like errno for iconv(3)
void yaz_vsnprintf(char *buf, size_t size, const char *fmt, va_list ap)
Header for config file reading utilities.
void wrbuf_destroy(WRBUF b)
destroy WRBUF and its buffer
void wrbuf_insert(WRBUF b, size_t pos, const char *buf, size_t size)
inserts buffer into WRBUF at some position
void wrbuf_iconv_reset(WRBUF b, yaz_iconv_t cd)
iconv reset(flush) to WRBUF
void wrbuf_rewind(WRBUF b)
empty WRBUF content (length of buffer set to 0)
WRBUF wrbuf_alloc(void)
construct WRBUF
void wrbuf_iconv_putchar(WRBUF b, yaz_iconv_t cd, int ch)
iconv converts character and appends to WRBUF
void wrbuf_json_puts(WRBUF b, const char *str)
writes JSON text to WRBUF with escaping
void wrbuf_printf(WRBUF b, const char *fmt,...)
writes printf result to WRBUF
void wrbuf_chop_right(WRBUF b)
chips traling blanks away from WRBUF
int wrbuf_iconv_write2(WRBUF b, yaz_iconv_t cd, const char *buf, size_t size, void(*wfunc)(WRBUF, const char *, size_t))
General writer of string using iconv and cdata.
void wrbuf_xmlputs(WRBUF b, const char *cp)
writes C-String to WRBUF and XML encode (as CDATA)
void wrbuf_puts_replace_str(WRBUF b, const char *buf, const char *from, const char *to)
puts buf to WRBUF and replaces a string with another
const char * wrbuf_cstr_null(WRBUF b)
returns WRBUF content as C-string or NULL
void wrbuf_iconv_write(WRBUF b, yaz_iconv_t cd, const char *buf, size_t size)
Converts buffer using iconv and appends to WRBUF.
void wrbuf_puts_escaped(WRBUF b, const char *str)
writes C-string to WRBUF and escape non-ASCII characters
void wrbuf_iconv_puts_cdata(WRBUF b, yaz_iconv_t cd, const char *strz)
iconv converts C-string and appends to WRBUF as XML CDATA
void wrbuf_iconv_json_write(WRBUF b, yaz_iconv_t cd, const char *buf, size_t size)
int wrbuf_grow(WRBUF b, size_t minsize)
grow WRBUF larger
void wrbuf_cut_right(WRBUF b, size_t no_to_remove)
cut size of WRBUF
void wrbuf_puts_replace_char(WRBUF b, const char *buf, const char from, const char to)
puts buf to WRBUF and replaces a single char
void wrbuf_write_escaped(WRBUF b, const char *str, size_t len)
writes buffer to WRBUF and escape non-ASCII characters
int wrbuf_iconv_write_x(WRBUF b, yaz_iconv_t cd, const char *buf, size_t size, int cdata)
writer of string using iconv and cdata
void wrbuf_vp_puts(const char *buf, void *client_data)
appends C-string to WRBUF - void pointer variant
void wrbuf_iconv_puts(WRBUF b, yaz_iconv_t cd, const char *strz)
iconv converts C-string and appends to WRBUF
void wrbuf_xmlputs_n(WRBUF b, const char *cp, size_t size)
writes buffer of certain size to WRBUF and XML encode (as CDATA)
const char * wrbuf_cstr(WRBUF b)
returns WRBUF content as C-string
void wrbuf_puts(WRBUF b, const char *buf)
appends C-string to WRBUF
void wrbuf_iconv_json_puts(WRBUF b, yaz_iconv_t cd, const char *strz)
void wrbuf_write(WRBUF b, const char *buf, size_t size)
append constant size buffer to WRBUF
void wrbuf_json_write(WRBUF b, const char *cp, size_t sz)
writes JSON text to WRBUF with escaping
void wrbuf_iconv_write_cdata(WRBUF b, yaz_iconv_t cd, const char *buf, size_t size)
Converts buffer using iconv and appends to WRBUF as XML CDATA.
Header for WRBUF (growing buffer)
#define xfree(x)
utility macro which calls xfree_f
#define xrealloc(o, x)
utility macro which calls xrealloc_f
#define xmalloc(x)
utility macro which calls malloc_f
Header for YAZ iconv interface.
#define YAZ_ICONV_E2BIG
error code: Not sufficient room for output buffer