Complete last ChangeLog entry.
[gnulib.git] / m4 / glob.m4
index 34d2b20..545c37c 100644 (file)
@@ -1,11 +1,11 @@
-# glob.m4 serial 1
-dnl Copyright (C) 2005 Free Software Foundation, Inc.
+# glob.m4 serial 10
+dnl Copyright (C) 2005-2007, 2009-2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
 # The glob module assumes you want GNU glob, with glob_pattern_p etc,
-# rather than vanilla POSIX glob.  This means your your code should
+# rather than vanilla POSIX glob.  This means your code should
 # always include <glob.h> for the glob prototypes.
 
 AC_DEFUN([gl_GLOB_SUBSTITUTE],
@@ -14,9 +14,6 @@ AC_DEFUN([gl_GLOB_SUBSTITUTE],
 
   GLOB_H=glob.h
   AC_LIBOBJ([glob])
-  AC_DEFINE([GLOB_PREFIX], [[rpl_]],
-    [Define to rpl_ if the glob replacement functions and variables
-     should be used.])
   AC_SUBST([GLOB_H])
 ])
 
@@ -25,12 +22,48 @@ AC_DEFUN([gl_GLOB],
   AC_CHECK_HEADERS([glob.h], [], [GLOB_H=glob.h])
 
   if test -z "$GLOB_H"; then
-    AC_COMPILE_IFELSE(
+    AC_CACHE_CHECK([for GNU glob interface version 1],
+      [gl_cv_gnu_glob_interface_version_1],
+[     AC_COMPILE_IFELSE(
 [[#include <gnu-versions.h>
 char a[_GNU_GLOB_INTERFACE_VERSION == 1 ? 1 : -1];]],
-      [], [GLOB_H=glob.h])
+        [gl_cv_gnu_glob_interface_version_1=yes],
+        [gl_cv_gnu_glob_interface_version_1=no])])
+
+    if test "$gl_cv_gnu_glob_interface_version_1" = "no"; then
+      GLOB_H=glob.h
+    fi
   fi
 
+  if test -z "$GLOB_H"; then
+    AC_CACHE_CHECK([whether glob lists broken symlinks],
+                   [gl_cv_glob_lists_symlinks],
+[     if ln -s conf-doesntexist conf$$-globtest 2>/dev/null; then
+        gl_cv_glob_lists_symlinks=maybe
+      else
+        # If we can't make a symlink, then we cannot test this issue.  Be
+        # pessimistic about this.
+        gl_cv_glob_lists_symlinks=no
+      fi
+
+      if test $gl_cv_glob_lists_symlinks = maybe; then
+        AC_RUN_IFELSE(
+AC_LANG_PROGRAM(
+[[#include <stddef.h>
+#include <glob.h>]],
+[[glob_t found;
+if (glob ("conf*-globtest", 0, NULL, &found) == GLOB_NOMATCH) return 1;]]),
+          [gl_cv_glob_lists_symlinks=yes],
+          [gl_cv_glob_lists_symlinks=no], [gl_cv_glob_lists_symlinks=no])
+      fi])
+
+    if test $gl_cv_glob_lists_symlinks = no; then
+      GLOB_H=glob.h
+    fi
+  fi
+
+  rm -f conf$$-globtest
+
   if test -n "$GLOB_H"; then
     gl_GLOB_SUBSTITUTE
   fi
@@ -38,13 +71,16 @@ char a[_GNU_GLOB_INTERFACE_VERSION == 1 ? 1 : -1];]],
 
 # Prerequisites of lib/glob.*.
 AC_DEFUN([gl_PREREQ_GLOB],
-[ AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE])dnl
-  AC_REQUIRE([AC_HEADER_DIRENT])dnl
+[
+  AC_REQUIRE([gl_CHECK_TYPE_STRUCT_DIRENT_D_TYPE])dnl
+  AC_REQUIRE([AC_C_RESTRICT])dnl
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])dnl
   AC_CHECK_HEADERS_ONCE([sys/cdefs.h unistd.h])dnl
-  AC_CHECK_FUNCS_ONCE([getlogin_r getpwnam_r])dnl
-  AC_CHECK_HEADERS([sys/cdefs.h], [SYS_CDEFS_H=yes], [SYS_CDEFS_H=no])
-  if test $SYS_CDEFS_H = no; then
-    AC_DEFINE(MISSING_SYS_CDEFS_H, 1,
-      [Define to `1' if <sys/cdefs.h> is *not* available on this system.])
+  if test $ac_cv_header_sys_cdefs_h = yes; then
+    HAVE_SYS_CDEFS_H=1
+  else
+    HAVE_SYS_CDEFS_H=0
   fi
-  :])
+  AC_SUBST([HAVE_SYS_CDEFS_H])
+  AC_CHECK_FUNCS_ONCE([fstatat getlogin_r getpwnam_r])dnl
+])