X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Freaddir.m4;h=4269bb486aaf86e2c1798424317410b43a8f1bf0;hb=43593319b31e6b0175b8eec4433bac744959822d;hp=c73c15675dae3beae67acfc4c4b8edbf22389030;hpb=62928ecd47ba772e3650eb25f42e066467814e23;p=gnulib.git diff --git a/m4/readdir.m4 b/m4/readdir.m4 index c73c15675..4269bb486 100644 --- a/m4/readdir.m4 +++ b/m4/readdir.m4 @@ -1,131 +1,15 @@ -#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 -# include -# if HAVE_STRING_H -# include -# endif - -# ifdef HAVE_DIRENT_H -# include -# 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 -# endif /* HAVE_SYS_NDIR_H */ -# ifdef HAVE_SYS_DIR_H -# include -# endif /* HAVE_SYS_DIR_H */ -# ifdef HAVE_NDIR_H -# include -# 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-2013 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 ])