view modules/fcntl-h @ 14532:0b3f0c54fbc8

nonblocking: provide O_NONBLOCK for mingw Mingw is the only known platform that lacks O_NONBLOCK (possibly via the alternate spelling O_NDELAY). But mingw also lacks any files where open() needs to enforce non-blocking behavior, and lacks openat(), so it is relatively simple to provide a non-zero flag. A future patches will make use of O_NONBLOCK for pipe2. * modules/nonblocking (Depends-on): Add open. (configure.ac): Set new witness macro. * m4/fcntl_h.m4 (gl_FCNTL_H_DEFAULTS): Provide default for it. * modules/fcntl-h (Makefile.am): Substitute it. * lib/fcntl.in.h (O_NONBLOCK): Guarantee non-zero definition when nonblocking module is in use. * lib/nonblocking.c: Adjust portability test. * lib/open.c (open): Don't let native open see gnulib flag. * tests/test-fcntl-h.c (main): Enhance test. * tests/test-open.h (test_open): Likewise. * doc/posix-headers/fcntl.texi (fcntl.h): Document the replacement. Signed-off-by: Eric Blake <eblake@redhat.com>
author Eric Blake <eblake@redhat.com>
date Fri, 08 Apr 2011 10:15:54 -0600
parents 049942251f65
children 6758fa38915e 5f709022a256
line wrap: on
line source

Description:
Like <fcntl.h>, but with non-working flags defined to 0.

Files:
lib/fcntl.in.h
m4/fcntl_h.m4
m4/fcntl-o.m4

Depends-on:
arg-nonnull
c++defs
extensions
include_next
unistd
warn-on-use

configure.ac:
gl_FCNTL_H

Makefile.am:
BUILT_SOURCES += fcntl.h

# We need the following in order to create <fcntl.h> when the system
# doesn't have one that works with the given compiler.
fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_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|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
	      -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \
	      -e 's|@''GNULIB_FCNTL''@|$(GNULIB_FCNTL)|g' \
	      -e 's|@''GNULIB_NONBLOCKING''@|$(GNULIB_NONBLOCKING)|g' \
	      -e 's|@''GNULIB_OPEN''@|$(GNULIB_OPEN)|g' \
	      -e 's|@''GNULIB_OPENAT''@|$(GNULIB_OPENAT)|g' \
	      -e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \
	      -e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \
	      -e 's|@''REPLACE_FCNTL''@|$(REPLACE_FCNTL)|g' \
	      -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \
	      -e 's|@''REPLACE_OPENAT''@|$(REPLACE_OPENAT)|g' \
	      -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
	      -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
	      -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
	      < $(srcdir)/fcntl.in.h; \
	} > $@-t && \
	mv $@-t $@
MOSTLYCLEANFILES += fcntl.h fcntl.h-t

Include:
<fcntl.h>

License:
LGPLv2+

Maintainer:
all