string: always use own basename+dirname.
authorMarko Kreen <markokr@gmail.com>
Mon, 12 Dec 2011 21:59:00 +0000 (23:59 +0200)
committerMarko Kreen <markokr@gmail.com>
Mon, 12 Dec 2011 21:59:00 +0000 (23:59 +0200)
Cannot use libc versions as its uncertains whether they modify
input or not.  So it's simpler to always use own verisions.

m4/usual.m4
usual/string.h

index b03ce888cd98e95686014f815ea3fd54340f3c12..fc62a170e477e28b4481e6336d134431b1e6693a 100644 (file)
@@ -164,7 +164,7 @@ dnl
 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])
@@ -221,7 +221,8 @@ dnl  AC_USUAL_FUNCTION_CHECK:  Basic functions
 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)
index 4137ec8101d97abf4d528b8773b63cc50d0ea03a..f6427236a41198ee4f95057946db63558ee7889f 100644 (file)
 
 #include <string.h>
 
-#ifdef HAVE_LIBGEN_H
-#include <libgen.h>
-#endif
-
 /**
  * @name  List of strings.
  * @{
@@ -79,13 +75,16 @@ void *memrchr(const void *s, int c, size_t n);
 #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