-/** \brief writes (append) buffer to WRBUF */
-YAZ_EXPORT int wrbuf_write(WRBUF b, const char *buf, int size);
-/** \brief appends C-string to WRBUF (returns int) */
-YAZ_EXPORT int wrbuf_puts(WRBUF b, const char *buf);
-/** \brief appends C-string to WRBUF (void) */
-YAZ_EXPORT void wrbuf_vputs(const char *buf, void *client_data);
+/** \brief append constant size buffer to WRBUF
+ \param b WRBUF
+ \param buf buffer
+ \param size size of buffer
+ */
+YAZ_EXPORT void wrbuf_write(WRBUF b, const char *buf, size_t size);
+
+/** \brief inserts buffer into WRBUF at some position
+ \param b WRBUF
+ \param pos position (0=beginning)
+ \param buf buffer
+ \param size size of buffer
+ */
+YAZ_EXPORT void wrbuf_insert(WRBUF b, size_t pos, const char *buf, size_t size);
+
+/** \brief appends C-string to WRBUF
+ \param b WRBUF
+ \param buf C-string (0-terminated)
+ */
+YAZ_EXPORT void wrbuf_puts(WRBUF b, const char *buf);
+
+/** \brief appends C-string to WRBUF - void pointer variant
+ \param buf C-string
+ \param client_data assumed WRBUF
+*/
+YAZ_EXPORT void wrbuf_vp_puts(const char *buf, void *client_data);
+
+/** \brief writes buffer of certain size to WRBUF and XML encode (as CDATA)
+ \param b WRBUF
+ \param cp CDATA
+ \param size size of CDATA
+ */
+YAZ_EXPORT void wrbuf_xmlputs_n(WRBUF b, const char *cp, size_t size);
+
+/** \brief writes C-String to WRBUF and XML encode (as CDATA)
+ \param b WRBUF
+ \param cp CDATA buffer (0-terminated)
+ */
+YAZ_EXPORT void wrbuf_xmlputs(WRBUF b, const char *cp);