mirror of
https://https.git.savannah.gnu.org/git/gnulib.git
synced 2026-09-01 02:34:55 +00:00
3f0950f65a
* lib/dirent-private.h: On mingw, define 'struct gl_directory' as a wrapper around the original DIR. On MSVC, add an 'fd_to_close' field to 'struct gl_directory'. * lib/dirent.in.h (DIR): Define when DIR_HAS_FD_MEMBER is 0, i.e. on both mingw and MSVC. (GNULIB_defined_DIR): New macro. (opendir): Avoid incompatible redeclaration. (readdir): Consider REPLACE_READDIR. (rewinddir): Consider REPLACE_REWINDDIR. * m4/dirent_h.m4 (gl_DIRENT_DIR): New macro. (gl_DIRENT_H): Invoke it. (gl_DIRENT_H_DEFAULTS): Initialize REPLACE_READDIR, REPLACE_REWINDDIR. * modules/dirent (Makefile.am): Substitute DIR_HAS_FD_MEMBER, REPLACE_READDIR, REPLACE_REWINDDIR. -- * lib/dirfd.c (dirfd): If GNULIB_defined_DIR, just use the 'fd_to_close' field. * m4/dirfd.m4 (gl_FUNC_DIRFD): Set HAVE_DIRFD. Don't set REPLACE_DIRFD to 1 if HAVE_DIRFD is 0. If DIR_HAS_FD_MEMBER is 0, ensure dirfd.c gets compiled. * modules/dirfd (Files): Add lib/dirent-private.h. (Depends-on, configure.ac): Simplify conditions. -- * lib/closedir.c: Include <stdlib.h> always, for free(). (closedir): If GNULIB_defined_DIR, arrange to call close(dirfd(dirp)) at the end. On mingw, call free() of dirp. Prefer testing HAVE_DIRENT_H, for consistency with dirent.h. * m4/closedir.m4 (gl_FUNC_CLOSEDIR): Don't set REPLACE_CLOSEDIR to 1 if HAVE_CLOSEDIR is 0. If DIR_HAS_FD_MEMBER is 0, ensure closedir.c gets compiled. -- * lib/opendir.c: Include <stdlib.h> always. Include <string.h>. (opendir): On mingw, allocate the 'struct gl_directory' through malloc. If GNULIB_defined_DIR, set the 'fd_to_close' field to -1. Prefer testing HAVE_DIRENT_H, for consistency with dirent.h. * m4/opendir.m4 (gl_FUNC_OPENDIR): Don't set REPLACE_OPENDIR to 1 if HAVE_OPENDIR is 0. If DIR_HAS_FD_MEMBER is 0, ensure opendir.c gets compiled. -- * lib/fdopendir.c (fdopendir): If GNULIB_defined_DIR, use a simple implementation based on opendir and the fchdir module. If __KLIBC__, don't define unused auxiliary functions. * modules/fdopendir (Files): Add lib/dirent-private.h. -- * lib/readdir.c (readdir): On mingw, redirect to the original readdir function. Prefer testing HAVE_DIRENT_H, for consistency with dirent.h. * m4/readdir.m4 (gl_FUNC_READDIR): If DIR_HAS_FD_MEMBER is 0, ensure readdir.c gets compiled. * modules/readdir (configure.ac): Consider REPLACE_READDIR. -- * lib/rewinddir.c (rewinddir): On mingw, redirect to the original rewinddir function. Prefer testing HAVE_DIRENT_H, for consistency with dirent.h. * m4/rewinddir.m4 (gl_FUNC_REWINDDIR): If DIR_HAS_FD_MEMBER is 0, ensure rewinddir.c gets compiled. * modules/rewinddir (configure.ac): Consider REPLACE_REWINDDIR. -- * lib/fchdir.c (dir_info_t): Remove a FIXME.
75 lines
2.6 KiB
Plaintext
75 lines
2.6 KiB
Plaintext
Description:
|
|
A GNU-like <dirent.h>.
|
|
|
|
Files:
|
|
lib/dirent.in.h
|
|
m4/dirent_h.m4
|
|
m4/unistd_h.m4
|
|
m4/pid_t.m4
|
|
|
|
Depends-on:
|
|
gen-header
|
|
include_next
|
|
snippet/arg-nonnull
|
|
snippet/c++defs
|
|
snippet/warn-on-use
|
|
|
|
configure.ac:
|
|
gl_DIRENT_H
|
|
gl_DIRENT_H_REQUIRE_DEFAULTS
|
|
AC_PROG_MKDIR_P
|
|
|
|
Makefile.am:
|
|
BUILT_SOURCES += dirent.h
|
|
|
|
# We need the following in order to create <dirent.h> when the system
|
|
# doesn't have one that works with the given compiler.
|
|
dirent.h: dirent.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
|
|
@NMD@ $(AM_V_GEN)$(MKDIR_P) '%reldir%'
|
|
$(gl_V_at)$(SED_HEADER_STDOUT) \
|
|
-e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
|
|
-e 's|@''HAVE_DIRENT_H''@|$(HAVE_DIRENT_H)|g' \
|
|
-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_DIRENT_H''@|$(NEXT_DIRENT_H)|g' \
|
|
-e 's/@''DIR_HAS_FD_MEMBER''@/$(DIR_HAS_FD_MEMBER)/g' \
|
|
-e 's/@''GNULIB_OPENDIR''@/$(GNULIB_OPENDIR)/g' \
|
|
-e 's/@''GNULIB_READDIR''@/$(GNULIB_READDIR)/g' \
|
|
-e 's/@''GNULIB_REWINDDIR''@/$(GNULIB_REWINDDIR)/g' \
|
|
-e 's/@''GNULIB_CLOSEDIR''@/$(GNULIB_CLOSEDIR)/g' \
|
|
-e 's/@''GNULIB_DIRFD''@/$(GNULIB_DIRFD)/g' \
|
|
-e 's/@''GNULIB_FDOPENDIR''@/$(GNULIB_FDOPENDIR)/g' \
|
|
-e 's/@''GNULIB_SCANDIR''@/$(GNULIB_SCANDIR)/g' \
|
|
-e 's/@''GNULIB_ALPHASORT''@/$(GNULIB_ALPHASORT)/g' \
|
|
-e 's/@''HAVE_OPENDIR''@/$(HAVE_OPENDIR)/g' \
|
|
-e 's/@''HAVE_READDIR''@/$(HAVE_READDIR)/g' \
|
|
-e 's/@''HAVE_REWINDDIR''@/$(HAVE_REWINDDIR)/g' \
|
|
-e 's/@''HAVE_CLOSEDIR''@/$(HAVE_CLOSEDIR)/g' \
|
|
-e 's|@''HAVE_DECL_DIRFD''@|$(HAVE_DECL_DIRFD)|g' \
|
|
-e 's|@''HAVE_DECL_FDOPENDIR''@|$(HAVE_DECL_FDOPENDIR)|g' \
|
|
-e 's|@''HAVE_FDOPENDIR''@|$(HAVE_FDOPENDIR)|g' \
|
|
-e 's|@''HAVE_SCANDIR''@|$(HAVE_SCANDIR)|g' \
|
|
-e 's|@''HAVE_ALPHASORT''@|$(HAVE_ALPHASORT)|g' \
|
|
-e 's|@''REPLACE_OPENDIR''@|$(REPLACE_OPENDIR)|g' \
|
|
-e 's|@''REPLACE_READDIR''@|$(REPLACE_READDIR)|g' \
|
|
-e 's|@''REPLACE_REWINDDIR''@|$(REPLACE_REWINDDIR)|g' \
|
|
-e 's|@''REPLACE_CLOSEDIR''@|$(REPLACE_CLOSEDIR)|g' \
|
|
-e 's|@''REPLACE_DIRFD''@|$(REPLACE_DIRFD)|g' \
|
|
-e 's|@''REPLACE_FDOPENDIR''@|$(REPLACE_FDOPENDIR)|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)/dirent.in.h > $@-t
|
|
$(AM_V_at)mv $@-t $@
|
|
MOSTLYCLEANFILES += dirent.h dirent.h-t
|
|
|
|
Include:
|
|
<dirent.h>
|
|
|
|
License:
|
|
LGPLv2+
|
|
|
|
Maintainer:
|
|
all
|