Define HAVE_STRNLEN when __DARWIN_C_LEVEL >= 200809L.
[chise/concord.git] / sysdep.h
1 #ifndef _CHISE_SYSDEP_H
2 #define _CHISE_SYSDEP_H
3
4 #include <string.h>
5 #ifdef HAVE_CONFIG_H
6 #  include "config.h"
7 #endif
8
9 #ifndef HAVE_STRNLEN
10 #if defined(__DARWIN_C_LEVEL) && __DARWIN_C_LEVEL >= 200809L
11 #define HAVE_STRNLEN 1
12 #endif
13 #endif
14
15 #ifndef HAVE_STRNLEN
16 /* original in mysql, strings/strnlen.c.
17 uint strnlen(register const char *s, register uint maxlen)
18 {
19   const char *end= (const char *)memchr(s, '\0', maxlen);
20   return end ? (uint) (end - s) : maxlen;
21 }
22 */
23 static inline int
24 strnlen (register const char *s, register int maxlen)
25 {
26   const char *end= (const char *)memchr(s, '\0', maxlen);
27   return end ? (int) (end - s) : maxlen;
28 }
29 #endif
30
31 #define xzero(lvalue) ((void) memset (&(lvalue), '\0', sizeof (lvalue)))
32
33 #endif /* !_CHISE_SYSDEP_H */