# HG changeset patch # User Eric Blake # Date 1250864800 21600 # Node ID cc0527e5d2f41c6ea6bad1c6a2ead1e6569409cc # Parent b4dc1843137703f70e6433be0f5da6a25064446e 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 diff --git a/ChangeLog b/ChangeLog --- 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 --- a/MODULES.html.sh +++ b/MODULES.html.sh @@ -2251,7 +2251,7 @@ 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 --- 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 @@ 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 --- a/modules/chdir-long +++ b/modules/chdir-long @@ -9,7 +9,7 @@ Depends-on: atexit fchdir -fcntl +fcntl-h openat memchr mempcpy diff --git a/modules/chdir-safer b/modules/chdir-safer --- a/modules/chdir-safer +++ b/modules/chdir-safer @@ -8,7 +8,7 @@ Depends-on: fchdir -fcntl +fcntl-h open same-inode stdbool diff --git a/modules/fcntl b/modules/fcntl --- 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 @@ LGPL Maintainer: -all +Eric Blake diff --git a/modules/fcntl-h b/modules/fcntl-h new file mode 100644 --- /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 --- /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 --- a/modules/fcntl-safer +++ b/modules/fcntl-safer @@ -10,7 +10,7 @@ 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 --- 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 --- a/modules/fts +++ b/modules/fts @@ -13,7 +13,7 @@ d-type dirfd fchdir -fcntl +fcntl-h fcntl-safer hash i-ring diff --git a/modules/mkancesdirs b/modules/mkancesdirs --- a/modules/mkancesdirs +++ b/modules/mkancesdirs @@ -8,7 +8,7 @@ Depends-on: dirname -fcntl +fcntl-h savewd stat-macros sys_stat diff --git a/modules/mkdir-p b/modules/mkdir-p --- a/modules/mkdir-p +++ b/modules/mkdir-p @@ -10,7 +10,7 @@ Depends-on: error -fcntl +fcntl-h gettext-h lchmod lchown diff --git a/modules/open b/modules/open --- a/modules/open +++ b/modules/open @@ -7,7 +7,7 @@ m4/mode_t.m4 Depends-on: -fcntl +fcntl-h configure.ac: gl_FUNC_OPEN diff --git a/modules/savewd b/modules/savewd --- a/modules/savewd +++ b/modules/savewd @@ -11,7 +11,7 @@ exit fchdir fcntl-safer -fcntl +fcntl-h raise stdbool xalloc diff --git a/tests/test-fcntl-h.c b/tests/test-fcntl-h.c new file mode 100644 --- /dev/null +++ b/tests/test-fcntl-h.c @@ -0,0 +1,38 @@ +/* Test of substitute. + 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 + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2007. */ + +#include + +#include + +/* Check that the various O_* macros are defined. */ +int o = O_DIRECT | O_DIRECTORY | O_DSYNC | O_NDELAY | O_NOATIME | O_NONBLOCK + | O_NOCTTY | O_NOFOLLOW | O_NOLINKS | O_RSYNC | O_SYNC + | O_BINARY | O_TEXT; + +/* 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 () +{ + return 0; +} diff --git a/tests/test-fcntl.c b/tests/test-fcntl.c deleted file mode 100644 --- a/tests/test-fcntl.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Test of substitute. - Copyright (C) 2007 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 - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* Written by Bruno Haible , 2007. */ - -#include - -#include - -/* Check that the various O_* macros are defined. */ -int o = O_DIRECT | O_DIRECTORY | O_DSYNC | O_NDELAY | O_NOATIME | O_NONBLOCK - | O_NOCTTY | O_NOFOLLOW | O_NOLINKS | O_RSYNC | O_SYNC - | O_BINARY | O_TEXT; - -/* Check that the various SEEK_* macros are defined. */ -int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET }; - -int -main () -{ - return 0; -}