Hi Jim, This proposed patch splits off module mkdirat from module openat.
2011-11-04 Bruno Haible <br...@clisp.org> New module 'mkdirat', split off from module 'openat'. * m4/mkdirat.m4: New file. extracted from m4/openat.m4. * m4/openat.m4 (gl_FUNC_OPENAT): Don't require gl_SYS_STAT_H_DEFAULTS. Don't test for mkdirat. Don't set GNULIB_MKDIRAT, HAVE_MKDIRAT. * modules/mkdirat: New file, extracted from modules/openat. * modules/openat (Files): Remove lib/mkdirat.c. (Depends-on): Remove mkdir. (configure.ac): Remove AC_LIBOBJ of mkdirat. (Include): Remove <sys/stat.h>. * modules/mkdirat-tests: New file, extracted from modules/openat-tests. * modules/openat-tests (Files): Remove tests/test-mkdirat.c, tests/test-mkdir.h. (Depends-on): Remove ignore-value. (Makefile.am): Remove rules for test-mkdirat. * doc/posix-functions/mkdirat.texi: Mention module 'mkdirat' instead of module 'openat'. * NEWS: Mention the change. ================================ m4/mkdirat.m4 ================================ # mkdirat.m4 serial 1 dnl Copyright (C) 2004-2011 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. # Written by Jim Meyering. AC_DEFUN([gl_FUNC_MKDIRAT], [ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) AC_CHECK_FUNCS_ONCE([mkdirat]) if test $ac_cv_func_mkdirat != yes; then HAVE_MKDIRAT=0 fi ]) # Prerequisite of mkdirat's declaration and of lib/mkdirat.c. AC_DEFUN([gl_PREREQ_MKDIRAT], [ AC_REQUIRE([AC_TYPE_MODE_T]) ]) =============================== modules/mkdirat =============================== Description: mkdirat() function: Create a directory relative to a given directory. Files: lib/mkdirat.c lib/at-func.c lib/openat.h lib/openat-priv.h m4/mkdirat.m4 Depends-on: dirent dosname errno extensions fchdir fcntl-h mkdir [test $HAVE_MKDIRAT = 0] openat openat-die save-cwd stdbool sys_stat unistd configure.ac: gl_FUNC_MKDIRAT if test $HAVE_MKDIRAT = 0; then AC_LIBOBJ([mkdirat]) gl_PREREQ_MKDIRAT fi gl_SYS_STAT_MODULE_INDICATOR([mkdirat]) Makefile.am: Include: <sys/stat.h> License: GPL Maintainer: Jim Meyering, Eric Blake ============================ modules/mkdirat-tests ============================ Files: tests/test-mkdirat.c tests/test-mkdir.h tests/signature.h tests/macros.h Depends-on: ignore-value progname symlink configure.ac: Makefile.am: TESTS += test-mkdirat check_PROGRAMS += test-mkdirat test_mkdirat_LDADD = $(LDADD) @LIBINTL@ =============================================================================== --- NEWS.orig Fri Nov 4 11:27:24 2011 +++ NEWS Fri Nov 4 11:02:03 2011 @@ -12,6 +12,10 @@ Date Modules Changes +2011-11-05 openat This module no longer provides the mkdirat() + function. If you need this function, you now need + to request the 'mkdirat' module. + 2011-11-04 openat This module no longer provides the fstatat() function. If you need this function, you now need to request the 'fstatat' module. --- doc/posix-functions/mkdirat.texi.orig Fri Nov 4 11:27:24 2011 +++ doc/posix-functions/mkdirat.texi Fri Nov 4 11:15:04 2011 @@ -4,7 +4,7 @@ POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/functions/mkdirat.html} -Gnulib module: openat +Gnulib module: mkdirat Portability problems fixed by Gnulib: @itemize --- m4/openat.m4.orig Fri Nov 4 11:27:24 2011 +++ m4/openat.m4 Fri Nov 4 11:11:24 2011 @@ -1,4 +1,4 @@ -# serial 41 +# serial 42 # See if we need to use our replacement for Solaris' openat et al functions. dnl Copyright (C) 2004-2011 Free Software Foundation, Inc. @@ -13,11 +13,8 @@ AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) GNULIB_OPENAT=1 - AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) - GNULIB_MKDIRAT=1 - AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) - AC_CHECK_FUNCS_ONCE([mkdirat openat]) + AC_CHECK_FUNCS_ONCE([openat]) AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) case $ac_cv_func_openat+$gl_cv_func_lstat_dereferences_slashed_symlink in yes+yes) @@ -31,9 +28,6 @@ HAVE_OPENAT=0 gl_PREREQ_OPENAT;; esac - if test $ac_cv_func_mkdirat != yes; then - HAVE_MKDIRAT=0 - fi dnl This is tested at least via getcwd.c. gl_MODULE_INDICATOR([openat]) --- modules/openat.orig Fri Nov 4 11:27:24 2011 +++ modules/openat Fri Nov 4 11:08:34 2011 @@ -3,7 +3,6 @@ Files: lib/at-func.c -lib/mkdirat.c lib/openat.c lib/openat.h lib/openat-priv.h @@ -22,7 +21,6 @@ gettext-h intprops largefile -mkdir [test $HAVE_MKDIRAT = 0] open openat-die save-cwd @@ -33,9 +31,6 @@ configure.ac: gl_FUNC_OPENAT AC_LIBOBJ([openat-proc]) -if test $HAVE_MKDIRAT = 0; then - AC_LIBOBJ([mkdirat]) -fi if test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1; then AC_LIBOBJ([openat]) fi @@ -44,7 +39,6 @@ Include: <fcntl.h> -<sys/stat.h> <unistd.h> "openat.h" --- modules/openat-tests.orig Fri Nov 4 11:27:24 2011 +++ modules/openat-tests Fri Nov 4 11:18:04 2011 @@ -1,21 +1,15 @@ Files: -tests/test-mkdir.h -tests/test-mkdirat.c tests/test-openat.c tests/signature.h tests/macros.h Depends-on: -ignore-value progname symlink configure.ac: Makefile.am: -TESTS += \ - test-mkdirat test-openat -check_PROGRAMS += \ - test-mkdirat test-openat -test_mkdirat_LDADD = $(LDADD) @LIBINTL@ +TESTS += test-openat +check_PROGRAMS += test-openat test_openat_LDADD = $(LDADD) @LIBINTL@ -- In memoriam Yitzhak Rabin <http://en.wikipedia.org/wiki/Yitzhak_Rabin>