]> git.sur5r.net Git - openldap/blobdiff - include/ac/string.h
Unexpand spaces for tabs in prior commit before merging to rel_eng_1_1.
[openldap] / include / ac / string.h
index 4123f4c9e33d97b88babb4b6fbbafbf62a2c43cf..6a64074e6fa8623f69b6726897825767398ca3a4 100644 (file)
@@ -3,18 +3,60 @@
 #ifndef _AC_STRING_H
 #define _AC_STRING_H
 
-#if STDC_HEADERS
-# include <string.h>
+#ifdef STDC_HEADERS
+#      include <string.h>
+
+#else
+#      ifdef HAVE_STRING_H
+#              include <string.h>
+#      elif HAVE_STRINGS_H
+#              include <strings.h>
+#      endif
+
+#      ifdef HAVE_MEMORY_H
+#              include <memory.h>
+#      endif
+
+       /* we should actually create <ac/stdlib.h> */
+#      ifdef HAVE_MALLOC_H
+#              include <malloc.h>
+#      endif
+
+#      ifndef HAVE_STRRCHR
+#              define strchr index
+#              define strrchr rindex
+#      endif
+
+#      ifndef HAVE_MEMCPY
+#              define memcpy(d, s, n)          ((void) bcopy ((s), (d), (n)))
+#              define memmove(d, s, n)         ((void) bcopy ((s), (d), (n)))
+#      endif
+#endif
+
+#ifndef HAVE_STRDUP
+       /* strdup() is missing, declare our own version */
+       extern char *strdup( const char *s );
 #else
-# ifndef HAVE_STRCHR
-#  define strchr index
-#  define strrchr rindex
-# endif
-char *strchr (), *strrchr ();
-# ifndef HAVE_MEMCPY
-#  define memcpy(d, s, n) bcopy ((s), (d), (n))
-#  define memmove(d, s, n) bcopy ((s), (d), (n))
-# endif
+       /* some systems have strdup, but fail to declare it */
+       extern char *strdup();
+#endif
+
+/*
+ * some systems fail to declare strcasecmp() and strncasecmp()
+ * we need them declared so we can obtain pointers to them
+ */
+extern int strcasecmp(), strncasecmp();
+
+#ifndef SAFEMEMCPY
+#      if defined( HAVE_MEMMOVE )
+#              define SAFEMEMCPY( d, s, n )    memmove((d), (s), (n))
+#      elif defined( HAVE_BCOPY )
+#              define SAFEMEMCPY( d, s, n )    bcopy((s), (d), (n))
+#      else
+               /* nothing left but memcpy() */
+#              define SAFEMEMCPY( d, s, n )    memcpy((d), (s), (n))
+#      endif
 #endif
 
+
 #endif /* _AC_STRING_H */