AC_DEFUN([AC_USUAL_HEADER_CHECK], [
AC_CHECK_HEADERS([sys/socket.h poll.h sys/poll.h sys/un.h])
AC_CHECK_HEADERS([arpa/inet.h netinet/in.h netinet/tcp.h])
-AC_CHECK_HEADERS([sys/param.h sys/uio.h libgen.h pwd.h grp.h])
+AC_CHECK_HEADERS([sys/param.h sys/uio.h pwd.h grp.h])
AC_CHECK_HEADERS([sys/wait.h sys/mman.h syslog.h netdb.h dlfcn.h])
AC_CHECK_HEADERS([err.h pthread.h endian.h sys/endian.h byteswap.h])
AC_CHECK_HEADERS([malloc.h regex.h getopt.h])
dnl
AC_DEFUN([AC_USUAL_FUNCTION_CHECK], [
### Functions provided if missing
-AC_CHECK_FUNCS(basename dirname strlcpy strlcat getpeereid sigaction)
+dnl AC_CHECK_FUNCS(basename dirname) # unstable, provide always
+AC_CHECK_FUNCS(strlcpy strlcat getpeereid sigaction)
AC_CHECK_FUNCS(inet_ntop inet_pton poll getline memrchr regcomp)
AC_CHECK_FUNCS(err errx warn warnx getprogname setprogname)
AC_CHECK_FUNCS(posix_memalign memalign valloc)
#include <string.h>
-#ifdef HAVE_LIBGEN_H
-#include <libgen.h>
-#endif
-
/**
* @name List of strings.
* @{
#ifndef HAVE_BASENAME
#undef basename
#define basename(a) usual_basename(a)
-/** Compat: Return pointer to last non-path element */
+/** Compat: Return pointer to last non-path element.
+ Never modifies path, returns either pointer inside path or static buffer. */
const char *basename(const char *path);
#endif
#ifndef HAVE_DIRNAME
#undef dirname
#define dirname(a) usual_dirname(a)
+/** Compat: Return directory part of pathname.
+ Never modifies path, returns either pointer inside path or static buffer. */
const char *dirname(const char *path);
#endif