-#ifndef HAVE_STRNDUP
-static inline char *strndup (const char *str, size_t max)
-{
- const char *end = memchr (str, '\0', max);
- size_t len = end ? (size_t)(end - str) : max;
- char *res = malloc (len + 1);
- if (res)
- {
- memcpy (res, str, len);
- res[len] = '\0';
- }
- return res;
-}
+#ifndef HAVE_FLOCKFILE
+void flockfile (FILE *);
+int ftrylockfile (FILE *);
+void funlockfile (FILE *);
+int getc_unlocked (FILE *);
+int getchar_unlocked (void);
+int putc_unlocked (int, FILE *);
+int putchar_unlocked (int);
+#endif
+
+#ifndef HAVE_GETDELIM
+ssize_t getdelim (char **, size_t *, int, FILE *);
+ssize_t getline (char **, size_t *, FILE *);
+#endif
+
+#ifndef HAVE_REWIND
+void rewind (FILE *);
+#endif
+
+#ifndef HAVE_VASPRINTF
+int vasprintf (char **, const char *, va_list);
+#endif
+
+/* string.h */
+#ifndef HAVE_STRCASECMP
+int strcasecmp (const char *, const char *);
+#endif
+
+#ifndef HAVE_STRCASESTR
+char *strcasestr (const char *, const char *);
+#endif
+
+#ifndef HAVE_STRDUP
+char *strdup (const char *);
+#endif
+
+#ifndef HAVE_STRNCASECMP
+int strncasecmp (const char *, const char *, size_t);