maint: update copyright
[gnulib.git] / m4 / readdir.m4
index c73c156..bd7be5c 100644 (file)
-#serial 1
-
-dnl FIXME: describe
-
-AC_DEFUN(jm_FUNC_READDIR,
-[dnl
-AC_REQUIRE([AC_HEADER_DIRENT])
-AC_CHECK_HEADERS(string.h)
-AC_CACHE_CHECK([for working readdir], jm_cv_func_working_readdir,
-  [dnl
-  # Arrange for deletion of the temporary directory this test creates, in
-  # case the test itself fails to delete everything -- as happens on Sunos.
-  ac_clean_files="$ac_clean_files conf-dir"
-
-  AC_TRY_RUN(
-  changequote(<<, >>)dnl
-  <<
-#   include <stdio.h>
-#   include <sys/types.h>
-#   if HAVE_STRING_H
-#    include <string.h>
-#   endif
-
-#   ifdef HAVE_DIRENT_H
-#    include <dirent.h>
-#    define NLENGTH(direct) (strlen((direct)->d_name))
-#   else /* not HAVE_DIRENT_H */
-#    define dirent direct
-#    define NLENGTH(direct) ((direct)->d_namlen)
-#    ifdef HAVE_SYS_NDIR_H
-#     include <sys/ndir.h>
-#    endif /* HAVE_SYS_NDIR_H */
-#    ifdef HAVE_SYS_DIR_H
-#     include <sys/dir.h>
-#    endif /* HAVE_SYS_DIR_H */
-#    ifdef HAVE_NDIR_H
-#     include <ndir.h>
-#    endif /* HAVE_NDIR_H */
-#   endif /* HAVE_DIRENT_H */
-
-#   define DOT_OR_DOTDOT(Basename) \
-     (Basename[0] == '.' && (Basename[1] == '\0' \
-                            || (Basename[1] == '.' && Basename[2] == '\0')))
-
-    static void
-    create_300_file_dir (const char *dir)
-    {
-      int i;
-
-      if (mkdir (dir, 0700))
-       abort ();
-      if (chdir (dir))
-       abort ();
-
-      for (i = 0; i < 300; i++)
-       {
-         char file_name[4];
-         FILE *out;
-
-         sprintf (file_name, "%03d", i);
-         out = fopen (file_name, "w");
-         if (!out)
-           abort ();
-         if (fclose (out) == EOF)
-           abort ();
-       }
-
-      if (chdir (".."))
-       abort ();
-    }
-
-    static void
-    remove_dir (const char *dir)
-    {
-      DIR *dirp;
-
-      if (chdir (dir))
-       abort ();
-
-      dirp = opendir (".");
-      if (dirp == NULL)
-       abort ();
-
-      while (1)
-       {
-         struct dirent *dp = readdir (dirp);
-         if (dp == NULL)
-           break;
-
-         if (DOT_OR_DOTDOT (dp->d_name))
-           continue;
-
-         if (unlink (dp->d_name))
-           abort ();
-       }
-      closedir (dirp);
-
-      if (chdir (".."))
-       abort ();
-
-      if (rmdir (dir))
-       exit (1);
-    }
-
-    int
-    main ()
-    {
-      const char *dir = "conf-dir";
-      create_300_file_dir (dir);
-      remove_dir (dir);
-      exit (0);
-    }
-  >>,
-  changequote([, ])dnl
-  jm_cv_func_working_readdir=yes,
-  jm_cv_func_working_readdir=no,
-  jm_cv_func_working_readdir=no)])
-
-  if test x = y; then
-    dnl This code is deliberately never run via ./configure.
-    dnl FIXME: this is a gross hack to make autoheader put an entry
-    dnl for this HAVE_-prefixed symbol in config.h.in.
-    AC_CHECK_FUNCS(WORKING_READDIR)
-  fi
-
-
-  if test $jm_cv_func_working_readdir = yes; then
-    ac_kludge=HAVE_WORKING_READDIR
-    AC_DEFINE_UNQUOTED($ac_kludge)
+# readdir.m4 serial 1
+dnl Copyright (C) 2011-2014 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.
+
+AC_DEFUN([gl_FUNC_READDIR],
+[
+  AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+
+  AC_CHECK_FUNCS([readdir])
+  if test $ac_cv_func_readdir = no; then
+    HAVE_READDIR=0
   fi
 ])