+/** \brief match a and b with some delimitor for b
+ \param a first second
+ \param b second string
+ \param b_del delimitor for b
+ \retval 0 strings are similar
+ \retval !=0 strings are different
+*/
+YAZ_EXPORT int yaz_strcmp_del(const char *a, const char *b, const char *b_del);
+
+
+/** \brief compares two buffers of different size
+ \param a first buffer
+ \param b second buffer
+ \param len_a length of first buffer
+ \retval len_b length of second buffer
+ \retval 0 buffers are equal
+ \retval >0 a > b
+ \retval <0 a < b
+*/
+int yaz_memcmp(const void *a, const void *b, size_t len_a, size_t len_b);
+
+
+/** \brief decodes UTF-8 sequence
+ \param inp input buffer with UTF-8 bytes
+ \param inbytesleft length of input buffer
+ \param no_read holds number of bytes read if conversion is successful
+ \param error pointer to error code if error occurs
+ \retval 0 if error
+ \retval >0 if conversion is successful
+*/
+YAZ_EXPORT unsigned long yaz_read_UTF8_char(unsigned char *inp,
+ size_t inbytesleft,
+ size_t *no_read,
+ int *error);
+
+/** \brief encodes UTF-8 sequence
+ \param x the UNICODE value
+ \param outbuf output buffer pointer, updated if conversion is successful
+ \param outbytesleft length of buffer, updated if conversino is successful
+ \param error pointer to error code if error occurs
+ \retval 0 if successful
+ \retval -1 for error
+*/
+YAZ_EXPORT size_t yaz_write_UTF8_char(unsigned long x,
+ char **outbuf, size_t *outbytesleft,
+ int *error);
+