From 1786a4159d6a904f76ba4148b04a75a75072c297 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Fri, 21 Aug 2009 08:26:40 -0600 Subject: [PATCH] fcntl-h: rename from fcntl, in preparation for fcntl(2) * modules/fcntl: Move header replacement... * modules/fcntl-h: ...to new name, so as not to collide with like-named function. * tests/test-fcntl.c: Rename... * tests/test-fcntl-h.c: ...to this. Test FD_CLOEXEC. * modules/fcntl-tests: Rename... * modules/fcntl-h-tests: ...to this. Update test file name. * modules/chdir-long (Depends-on): Update clients. * modules/chdir-safer (Depends-on): Likewise. * modules/fcntl-safer (Depends-on): Likewise. * modules/fts (Depends-on): Likewise. * modules/mkancesdirs (Depends-on): Likewise. * modules/mkdir-p (Depends-on): Likewise. * modules/open (Depends-on): Likewise. * modules/savewd (Depends-on): Likewise. * MODULES.html.sh (systems lacking POSIX:2008): Update name. * doc/posix-headers/fcntl.texi (fcntl.h): Update documentation. Signed-off-by: Eric Blake --- ChangeLog | 21 +++++++++++++++++ MODULES.html.sh | 2 +- doc/posix-headers/fcntl.texi | 39 ++++++++++++++++++++++++++++---- modules/chdir-long | 2 +- modules/chdir-safer | 2 +- modules/fcntl | 27 +++------------------- modules/fcntl-h | 41 ++++++++++++++++++++++++++++++++++ modules/fcntl-h-tests | 13 +++++++++++ modules/fcntl-safer | 2 +- modules/fcntl-tests | 13 ----------- modules/fts | 2 +- modules/mkancesdirs | 2 +- modules/mkdir-p | 2 +- modules/open | 2 +- modules/savewd | 2 +- tests/{test-fcntl.c => test-fcntl-h.c} | 5 ++++- 16 files changed, 126 insertions(+), 51 deletions(-) create mode 100644 modules/fcntl-h create mode 100644 modules/fcntl-h-tests delete mode 100644 modules/fcntl-tests rename tests/{test-fcntl.c => test-fcntl-h.c} (89%) diff --git a/ChangeLog b/ChangeLog index 4e3371740..4486d1a57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,24 @@ +2009-08-23 Eric Blake + + fcntl-h: rename from fcntl, in preparation for fcntl(2) + * modules/fcntl: Move header replacement... + * modules/fcntl-h: ...to new name, so as not to collide with + like-named function. + * tests/test-fcntl.c: Rename... + * tests/test-fcntl-h.c: ...to this. Test FD_CLOEXEC. + * modules/fcntl-tests: Rename... + * modules/fcntl-h-tests: ...to this. Update test file name. + * modules/chdir-long (Depends-on): Update clients. + * modules/chdir-safer (Depends-on): Likewise. + * modules/fcntl-safer (Depends-on): Likewise. + * modules/fts (Depends-on): Likewise. + * modules/mkancesdirs (Depends-on): Likewise. + * modules/mkdir-p (Depends-on): Likewise. + * modules/open (Depends-on): Likewise. + * modules/savewd (Depends-on): Likewise. + * MODULES.html.sh (systems lacking POSIX:2008): Update name. + * doc/posix-headers/fcntl.texi (fcntl.h): Update documentation. + 2009-08-22 Bruno Haible * modules/binary-io (License): Relicense under LGPL. diff --git a/MODULES.html.sh b/MODULES.html.sh index 9d52e42bf..3c54cec98 100755 --- a/MODULES.html.sh +++ b/MODULES.html.sh @@ -2251,7 +2251,7 @@ func_all_modules () func_module errno func_module fchdir func_module fclose - func_module fcntl + func_module fcntl-h func_module flock func_module fopen func_module fprintf-posix diff --git a/doc/posix-headers/fcntl.texi b/doc/posix-headers/fcntl.texi index 673317b47..f2d5fb25a 100644 --- a/doc/posix-headers/fcntl.texi +++ b/doc/posix-headers/fcntl.texi @@ -3,13 +3,14 @@ POSIX specification: @url{http://www.opengroup.org/susv3xbd/fcntl.h.html} -Gnulib module: fcntl +Gnulib module: fcntl-h Portability problems fixed by Gnulib: @itemize @item @samp{O_NOCTTY}, @samp{O_DSYNC}, @samp{O_NONBLOCK}, @samp{O_RSYNC}, -@samp{O_SYNC} are not defined on some platforms. +@samp{O_SYNC}, @samp{O_DIRECTORY}, and @samp{O_NOFOLLOW} are not +defined on some platforms. @item @samp{O_BINARY}, @samp{O_TEXT} (not specified by POSIX, but essential for @@ -17,11 +18,41 @@ portability to Woe32 platforms) are defined on some platforms but not on others. @item -@samp{O_DIRECT}, @samp{O_DIRECTORY}, @samp{O_NDELAY}, @samp{O_NOATIME}, -@samp{O_NOFOLLOW}, @samp{O_NOLINKS} (not specified by POSIX) are defined +@samp{O_DIRECT}, @samp{O_NDELAY}, @samp{O_NOATIME}, +and @samp{O_NOLINKS} (not specified by POSIX) are defined on some platforms but not on others. + +@item +@samp{FD_CLOEXEC} is not defined on some platforms: +mingw + +@item +@samp{AT_FDCWD} and friends are provided by modules like openat. @end itemize Portability problems not fixed by Gnulib: @itemize +@item +@samp{O_CLOEXEC} is not defined on some platforms. The gnulib +replacement is not atomic on these platforms. + +@item +@samp{O_TTY_INIT}, @samp{O_SEARCH}, and @samp{O_EXEC} are not defined +on some platforms. + +@item +@samp{F_DUPFD}, @samp{F_DUPFD_CLOEXEC}, @samp{F_GETFD}, and +@samp{F_SETFD} are not defined on some platforms: +mingw + +@item +@samp{F_GETFL}, @samp{F_SETFL}, @samp{F_GETLK}, @samp{F_SETLK}, +@samp{F_SETLOKW}, @samp{F_GETOWN}, and @samp{F_SETOWN} are not defined +on some platforms. + +@item +@samp{POSIX_FADV_DONTNEED}, @samp{POSIX_FADV_NOREUSE}, +@samp{POSIX_FADV_NORMAL}, @samp{POSIX_FADV_RANDOM}, +@samp{POSIX_FADV_SEQUENTIAL}, and @samp{POSIX_FADV_WILLNEED} are not +defined on some platforms. @end itemize diff --git a/modules/chdir-long b/modules/chdir-long index d06878ba5..4025b45af 100644 --- a/modules/chdir-long +++ b/modules/chdir-long @@ -9,7 +9,7 @@ m4/chdir-long.m4 Depends-on: atexit fchdir -fcntl +fcntl-h openat memchr mempcpy diff --git a/modules/chdir-safer b/modules/chdir-safer index 95103e8e5..b3b47e16f 100644 --- a/modules/chdir-safer +++ b/modules/chdir-safer @@ -8,7 +8,7 @@ m4/chdir-safer.m4 Depends-on: fchdir -fcntl +fcntl-h open same-inode stdbool diff --git a/modules/fcntl b/modules/fcntl index 8e2af03e6..a63c4e387 100644 --- a/modules/fcntl +++ b/modules/fcntl @@ -1,35 +1,14 @@ Description: -Like , but with non-working flags defined to 0. +Placeholder for eventual fcntl() replacement. Files: -lib/fcntl.in.h -m4/fcntl_h.m4 Depends-on: -include_next -unistd -extensions +fcntl-h configure.ac: -gl_FCNTL_H Makefile.am: -BUILT_SOURCES += $(FCNTL_H) - -# We need the following in order to create when the system -# doesn't have one that works with the given compiler. -fcntl.h: fcntl.in.h - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ - -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ - -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \ - -e 's|@''GNULIB_OPEN''@|$(GNULIB_OPEN)|g' \ - -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \ - < $(srcdir)/fcntl.in.h; \ - } > $@-t && \ - mv $@-t $@ -MOSTLYCLEANFILES += fcntl.h fcntl.h-t Include: #include @@ -38,4 +17,4 @@ License: LGPL Maintainer: -all +Eric Blake diff --git a/modules/fcntl-h b/modules/fcntl-h new file mode 100644 index 000000000..8e2af03e6 --- /dev/null +++ b/modules/fcntl-h @@ -0,0 +1,41 @@ +Description: +Like , but with non-working flags defined to 0. + +Files: +lib/fcntl.in.h +m4/fcntl_h.m4 + +Depends-on: +include_next +unistd +extensions + +configure.ac: +gl_FCNTL_H + +Makefile.am: +BUILT_SOURCES += $(FCNTL_H) + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +fcntl.h: fcntl.in.h + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \ + -e 's|@''GNULIB_OPEN''@|$(GNULIB_OPEN)|g' \ + -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \ + < $(srcdir)/fcntl.in.h; \ + } > $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += fcntl.h fcntl.h-t + +Include: +#include + +License: +LGPL + +Maintainer: +all diff --git a/modules/fcntl-h-tests b/modules/fcntl-h-tests new file mode 100644 index 000000000..f0cf17364 --- /dev/null +++ b/modules/fcntl-h-tests @@ -0,0 +1,13 @@ +Files: +tests/test-fcntl-h.c + +Depends-on: + +configure.ac: + +Makefile.am: +TESTS += test-fcntl-h +check_PROGRAMS += test-fcntl-h + +License: +LGPL diff --git a/modules/fcntl-safer b/modules/fcntl-safer index b9da46608..918223e87 100644 --- a/modules/fcntl-safer +++ b/modules/fcntl-safer @@ -10,7 +10,7 @@ m4/fcntl-safer.m4 m4/mode_t.m4 Depends-on: -fcntl +fcntl-h open unistd-safer diff --git a/modules/fcntl-tests b/modules/fcntl-tests deleted file mode 100644 index 86d91e5f6..000000000 --- a/modules/fcntl-tests +++ /dev/null @@ -1,13 +0,0 @@ -Files: -tests/test-fcntl.c - -Depends-on: - -configure.ac: - -Makefile.am: -TESTS += test-fcntl -check_PROGRAMS += test-fcntl - -License: -LGPL diff --git a/modules/fts b/modules/fts index 2cbed1c1f..38b22567b 100644 --- a/modules/fts +++ b/modules/fts @@ -13,7 +13,7 @@ d-ino d-type dirfd fchdir -fcntl +fcntl-h fcntl-safer hash i-ring diff --git a/modules/mkancesdirs b/modules/mkancesdirs index 5bb1ea7be..5a5c66a3f 100644 --- a/modules/mkancesdirs +++ b/modules/mkancesdirs @@ -8,7 +8,7 @@ m4/mkancesdirs.m4 Depends-on: dirname -fcntl +fcntl-h savewd stat-macros sys_stat diff --git a/modules/mkdir-p b/modules/mkdir-p index 31e873c36..20e3a23b4 100644 --- a/modules/mkdir-p +++ b/modules/mkdir-p @@ -10,7 +10,7 @@ m4/mkdir-p.m4 Depends-on: error -fcntl +fcntl-h gettext-h lchmod lchown diff --git a/modules/open b/modules/open index e89efde20..601e0641d 100644 --- a/modules/open +++ b/modules/open @@ -7,7 +7,7 @@ m4/open.m4 m4/mode_t.m4 Depends-on: -fcntl +fcntl-h configure.ac: gl_FUNC_OPEN diff --git a/modules/savewd b/modules/savewd index c2fd42f1a..360d4b9a3 100644 --- a/modules/savewd +++ b/modules/savewd @@ -11,7 +11,7 @@ dirname exit fchdir fcntl-safer -fcntl +fcntl-h raise stdbool xalloc diff --git a/tests/test-fcntl.c b/tests/test-fcntl-h.c similarity index 89% rename from tests/test-fcntl.c rename to tests/test-fcntl-h.c index 449984c8c..127f49767 100644 --- a/tests/test-fcntl.c +++ b/tests/test-fcntl-h.c @@ -1,5 +1,5 @@ /* Test of substitute. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007, 2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,6 +28,9 @@ int o = O_DIRECT | O_DIRECTORY | O_DSYNC | O_NDELAY | O_NOATIME | O_NONBLOCK /* Check that the various SEEK_* macros are defined. */ int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET }; +/* Check that the FD_* macros are defined. */ +int fd = FD_CLOEXEC; + int main () { -- 2.11.0