\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);
+YAZ_EXPORT int yaz_memcmp(const void *a, const void *b,
+ size_t len_a, size_t len_b);
+/** \brief ala strncasecmp - no locale
+ \param s1 first buffer
+ \param s2 second buffer
+ \param n number of bytes to compare
+ \retval 0 buffers are equal
+ \retval >0 a > b
+ \retval <0 a < b
+*/
+YAZ_EXPORT int yaz_strncasecmp(const char *s1, const char *s2, size_t n);
+
+/** \brief ala strcasecmp - no locale
+ \param s1 first buffer
+ \param s2 second buffer
+ \retval 0 buffers are equal
+ \retval >0 a > b
+ \retval <0 a < b
+*/
+YAZ_EXPORT int yaz_strcasecmp(const char *s1, const char *s2);
+
+/** \brief strcmp, null may be passed
+ \param s1 first buffer or NULL
+ \param s2 second buffer or NULL
+ \retval 0 buffers are equal
+ \retval >0 a > b
+ \retval <0 a < b
+*/
+YAZ_EXPORT int yaz_strcmp_null(const char *s1, const char *s2);
YAZ_END_CDECL