mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
5e8754f90a
This reverts commit 7a6dbc2fdb
("Update
gnulib to current upstream master"). It is needed because the gnulib
update caused problems with people using old GCC compilers (version
4.8, for example), which support C99 but don't default to using it.
Unfortunately this broke GDB for these users. A more detailed report
of what happened can be found at:
https://lists.gnu.org/archive/html/bug-gnulib/2018-08/msg00157.html
The reason for updating our gnulib copy was to fix PR gdb/23558.
Reverting this patch reintroduces the bug, so in order to fix it I
will submit a subsequent patch which cherry-picks the fix from gnulib.
gdb/ChangeLog:
2018-09-10 Sergio Durigan Junior <sergiodj@redhat.com>
Revert:
2018-08-29 Sergio Durigan Junior <sergiodj@redhat.com>
PR gdb/23555
PR gdb/23558
* gnulib/aclocal.m4: Regenerate.
* gnulib/config.in: Regenerate.
* gnulib/configure: Regenerate.
* gnulib/import/Makefile.am: Update.
* gnulib/import/Makefile.in: Update.
* gnulib/import/extra/snippet/_Noreturn.h: Rename to...
* gnulib/import/_Noreturn.h: ... this.
* gnulib/import/alloca.in.h: Update.
* gnulib/import/extra/snippet/arg-nonnull.h: Rename to...
* gnulib/import/arg-nonnull.h: ... this.
* gnulib/import/assure.h: Update.
* gnulib/import/at-func.c: Update.
* gnulib/import/basename-lgpl.c: Update.
* gnulib/import/extra/snippet/c++defs.h: Rename to...
* gnulib/import/c++defs.h: ... this.
* gnulib/import/canonicalize-lgpl.c: Update.
* gnulib/import/cdefs.h: Update.
* gnulib/import/chdir-long.c: Update.
* gnulib/import/chdir-long.h: Update.
* gnulib/import/cloexec.c: Update.
* gnulib/import/cloexec.h: Update.
* gnulib/import/close.c: Update.
* gnulib/import/closedir.c: Update.
* gnulib/import/config.charset: Update.
* gnulib/import/dirent-private.h: Update.
* gnulib/import/dirent.in.h: Update.
* gnulib/import/dirfd.c: Update.
* gnulib/import/dirname-lgpl.c: Update.
* gnulib/import/dirname.h: Update.
* gnulib/import/dosname.h: Update.
* gnulib/import/dup-safer-flag.c: Update.
* gnulib/import/dup-safer.c: Update.
* gnulib/import/dup.c: Update.
* gnulib/import/dup2.c: Update.
* gnulib/import/errno.in.h: Update.
* gnulib/import/error.c: Update.
* gnulib/import/error.h: Update.
* gnulib/import/exitfail.c: Update.
* gnulib/import/exitfail.h: Update.
* gnulib/import/extra/update-copyright: Update.
* gnulib/import/fchdir.c: Update.
* gnulib/import/fcntl.c: Update.
* gnulib/import/fcntl.in.h: Update.
* gnulib/import/fd-hook.c: Update.
* gnulib/import/fd-hook.h: Update.
* gnulib/import/fd-safer-flag.c: Update.
* gnulib/import/fd-safer.c: Update.
* gnulib/import/fdopendir.c: Update.
* gnulib/import/filename.h: Update.
* gnulib/import/filenamecat-lgpl.c: Update.
* gnulib/import/filenamecat.h: Update.
* gnulib/import/flexmember.h: Update.
* gnulib/import/float+.h: Update.
* gnulib/import/float.c: Update.
* gnulib/import/float.in.h: Update.
* gnulib/import/fnmatch.c: Update.
* gnulib/import/fnmatch.in.h: Update.
* gnulib/import/fnmatch_loop.c: Update.
* gnulib/import/fpucw.h: Update.
* gnulib/import/frexp.c: Update.
* gnulib/import/frexpl.c: Update.
* gnulib/import/fstat.c: Update.
* gnulib/import/fstatat.c: Update.
* gnulib/import/getcwd-lgpl.c: Update.
* gnulib/import/getcwd.c: Update.
* gnulib/import/getdtablesize.c: Update.
* gnulib/import/getlogin_r.c: Update.
* gnulib/import/getprogname.c: Update.
* gnulib/import/getprogname.h: Update.
* gnulib/import/gettext.h: Update.
* gnulib/import/gettimeofday.c: Update.
* gnulib/import/glob-libc.h: Update.
* gnulib/import/glob.c: Update.
* gnulib/import/glob.in.h: Update.
* gnulib/import/glob_internal.h: Update.
* gnulib/import/glob_pattern_p.c: Update.
* gnulib/import/globfree.c: Update.
* gnulib/import/hard-locale.c: Update.
* gnulib/import/hard-locale.h: Update.
* gnulib/import/intprops.h: Update.
* gnulib/import/inttypes.in.h: Update.
* gnulib/import/isnan.c: Update.
* gnulib/import/isnand-nolibm.h: Update.
* gnulib/import/isnand.c: Update.
* gnulib/import/isnanl-nolibm.h: Update.
* gnulib/import/isnanl.c: Update.
* gnulib/import/itold.c: Update.
* gnulib/import/libc-config.h: Update.
* gnulib/import/limits.in.h: Update.
* gnulib/import/localcharset.c: Update.
* gnulib/import/localcharset.h: Update.
* gnulib/import/localtime-buffer.c: Update.
* gnulib/import/localtime-buffer.h: Update.
* gnulib/import/lstat.c: Update.
* gnulib/import/m4/00gnulib.m4: Update.
* gnulib/import/m4/__inline.m4: Update.
* gnulib/import/m4/absolute-header.m4: Update.
* gnulib/import/m4/alloca.m4: Update.
* gnulib/import/m4/builtin-expect.m4: Update.
* gnulib/import/m4/canonicalize.m4: Update.
* gnulib/import/m4/chdir-long.m4: Update.
* gnulib/import/m4/close.m4: Update.
* gnulib/import/m4/closedir.m4: Update.
* gnulib/import/m4/configmake.m4: Update.
* gnulib/import/m4/d-ino.m4: Update.
* gnulib/import/m4/d-type.m4: Update.
* gnulib/import/m4/dirent_h.m4: Update.
* gnulib/import/m4/dirfd.m4: Update.
* gnulib/import/m4/dirname.m4: Update.
* gnulib/import/m4/double-slash-root.m4: Update.
* gnulib/import/m4/dup.m4: Update.
* gnulib/import/m4/dup2.m4: Update.
* gnulib/import/m4/eealloc.m4: Update.
* gnulib/import/m4/environ.m4: Update.
* gnulib/import/m4/errno_h.m4: Update.
* gnulib/import/m4/error.m4: Update.
* gnulib/import/m4/exponentd.m4: Update.
* gnulib/import/m4/exponentl.m4: Update.
* gnulib/import/m4/extensions.m4: Update.
* gnulib/import/m4/extern-inline.m4: Update.
* gnulib/import/m4/fchdir.m4: Update.
* gnulib/import/m4/fcntl-o.m4: Update.
* gnulib/import/m4/fcntl.m4: Update.
* gnulib/import/m4/fcntl_h.m4: Update.
* gnulib/import/m4/fdopendir.m4: Update.
* gnulib/import/m4/filenamecat.m4: Update.
* gnulib/import/m4/flexmember.m4: Update.
* gnulib/import/m4/float_h.m4: Update.
* gnulib/import/m4/fnmatch.m4: Update.
* gnulib/import/m4/fnmatch_h.m4: Update.
* gnulib/import/m4/fpieee.m4: Update.
* gnulib/import/m4/frexp.m4: Update.
* gnulib/import/m4/frexpl.m4: Update.
* gnulib/import/m4/fstat.m4: Update.
* gnulib/import/m4/fstatat.m4: Update.
* gnulib/import/m4/getcwd-abort-bug.m4: Update.
* gnulib/import/m4/getcwd-path-max.m4: Update.
* gnulib/import/m4/getcwd.m4: Update.
* gnulib/import/m4/getdtablesize.m4: Update.
* gnulib/import/m4/getlogin.m4: Update.
* gnulib/import/m4/getlogin_r.m4: Update.
* gnulib/import/m4/getpagesize.m4: Update.
* gnulib/import/m4/getprogname.m4: Update.
* gnulib/import/m4/gettimeofday.m4: Update.
* gnulib/import/m4/glibc21.m4: Update.
* gnulib/import/m4/glob.m4: Update.
* gnulib/import/m4/glob_h.m4: Update.
* gnulib/import/m4/gnulib-cache.m4: Update.
* gnulib/import/m4/gnulib-common.m4: Update.
* gnulib/import/m4/gnulib-comp.m4: Update.
* gnulib/import/m4/gnulib-tool.m4: Update.
* gnulib/import/m4/hard-locale.m4: Update.
* gnulib/import/m4/include_next.m4: Update.
* gnulib/import/m4/inttypes-pri.m4: Update.
* gnulib/import/m4/inttypes.m4: Update.
* gnulib/import/m4/isnand.m4: Update.
* gnulib/import/m4/isnanl.m4: Update.
* gnulib/import/m4/largefile.m4: Update.
* gnulib/import/m4/limits-h.m4: Update.
* gnulib/import/m4/localcharset.m4: Update.
* gnulib/import/m4/locale-fr.m4: Update.
* gnulib/import/m4/locale-ja.m4: Update.
* gnulib/import/m4/locale-zh.m4: Update.
* gnulib/import/m4/localtime-buffer.m4: Update.
* gnulib/import/m4/longlong.m4: Update.
* gnulib/import/m4/lstat.m4: Update.
* gnulib/import/m4/malloc.m4: Update.
* gnulib/import/m4/malloca.m4: Update.
* gnulib/import/m4/math_h.m4: Update.
* gnulib/import/m4/mbrtowc.m4: Update.
* gnulib/import/m4/mbsinit.m4: Update.
* gnulib/import/m4/mbsrtowcs.m4: Update.
* gnulib/import/m4/mbstate_t.m4: Update.
* gnulib/import/m4/memchr.m4: Update.
* gnulib/import/m4/memmem.m4: Update.
* gnulib/import/m4/mempcpy.m4: Update.
* gnulib/import/m4/memrchr.m4: Update.
* gnulib/import/m4/mkdir.m4: Update.
* gnulib/import/m4/mkstemp.m4: Update.
* gnulib/import/m4/mmap-anon.m4: Update.
* gnulib/import/m4/mode_t.m4: Update.
* gnulib/import/m4/msvc-inval.m4: Update.
* gnulib/import/m4/msvc-nothrow.m4: Update.
* gnulib/import/m4/multiarch.m4: Update.
* gnulib/import/m4/nocrash.m4: Update.
* gnulib/import/m4/off_t.m4: Update.
* gnulib/import/m4/onceonly.m4: Update.
* gnulib/import/m4/open-cloexec.m4: Update.
* gnulib/import/m4/open.m4: Update.
* gnulib/import/m4/openat.m4: Update.
* gnulib/import/m4/opendir.m4: Update.
* gnulib/import/m4/pathmax.m4: Update.
* gnulib/import/m4/rawmemchr.m4: Update.
* gnulib/import/m4/readdir.m4: Update.
* gnulib/import/m4/readlink.m4: Update.
* gnulib/import/m4/realloc.m4: Update.
* gnulib/import/m4/rename.m4: Update.
* gnulib/import/m4/rewinddir.m4: Update.
* gnulib/import/m4/rmdir.m4: Update.
* gnulib/import/m4/save-cwd.m4: Update.
* gnulib/import/m4/secure_getenv.m4: Update.
* gnulib/import/m4/setenv.m4: Update.
* gnulib/import/m4/signal_h.m4: Update.
* gnulib/import/m4/ssize_t.m4: Update.
* gnulib/import/m4/stat-time.m4: Update.
* gnulib/import/m4/stat.m4: Update.
* gnulib/import/m4/std-gnu11.m4: Update.
* gnulib/import/m4/stdbool.m4: Update.
* gnulib/import/m4/stddef_h.m4: Update.
* gnulib/import/m4/stdint.m4: Update.
* gnulib/import/m4/stdio_h.m4: Update.
* gnulib/import/m4/stdlib_h.m4: Update.
* gnulib/import/m4/strchrnul.m4: Update.
* gnulib/import/m4/strdup.m4: Update.
* gnulib/import/m4/strerror.m4: Update.
* gnulib/import/m4/string_h.m4: Update.
* gnulib/import/m4/strstr.m4: Update.
* gnulib/import/m4/strtok_r.m4: Update.
* gnulib/import/m4/sys_socket_h.m4: Update.
* gnulib/import/m4/sys_stat_h.m4: Update.
* gnulib/import/m4/sys_time_h.m4: Update.
* gnulib/import/m4/sys_types_h.m4: Update.
* gnulib/import/m4/tempname.m4: Update.
* gnulib/import/m4/time_h.m4: Update.
* gnulib/import/m4/unistd-safer.m4: Update.
* gnulib/import/m4/unistd_h.m4: Update.
* gnulib/import/m4/warn-on-use.m4: Update.
* gnulib/import/m4/wchar_h.m4: Update.
* gnulib/import/m4/wchar_t.m4: Update.
* gnulib/import/m4/wctype_h.m4: Update.
* gnulib/import/m4/wint_t.m4: Update.
* gnulib/import/malloc.c: Update.
* gnulib/import/malloc/scratch_buffer.h: Update.
* gnulib/import/malloc/scratch_buffer_grow.c: Update.
* gnulib/import/malloc/scratch_buffer_grow_preserve.c: Update.
* gnulib/import/malloc/scratch_buffer_set_array_size.c: Update.
* gnulib/import/malloca.c: Update.
* gnulib/import/malloca.h: Update.
* gnulib/import/malloca.valgrind: Update.
* gnulib/import/math.in.h: Update.
* gnulib/import/mbrtowc.c: Update.
* gnulib/import/mbsinit.c: Update.
* gnulib/import/mbsrtowcs-impl.h: Update.
* gnulib/import/mbsrtowcs-state.c: Update.
* gnulib/import/mbsrtowcs.c: Update.
* gnulib/import/memchr.c: Update.
* gnulib/import/memmem.c: Update.
* gnulib/import/mempcpy.c: Update.
* gnulib/import/memrchr.c: Update.
* gnulib/import/mkdir.c: Update.
* gnulib/import/mkstemp.c: Update.
* gnulib/import/msvc-inval.c: Update.
* gnulib/import/msvc-inval.h: Update.
* gnulib/import/msvc-nothrow.c: Update.
* gnulib/import/msvc-nothrow.h: Update.
* gnulib/import/open.c: Update.
* gnulib/import/openat-die.c: Update.
* gnulib/import/openat-priv.h: Update.
* gnulib/import/openat-proc.c: Update.
* gnulib/import/openat.c: Update.
* gnulib/import/openat.h: Update.
* gnulib/import/opendir.c: Update.
* gnulib/import/pathmax.h: Update.
* gnulib/import/pipe-safer.c: Update.
* gnulib/import/rawmemchr.c: Update.
* gnulib/import/readdir.c: Update.
* gnulib/import/readlink.c: Update.
* gnulib/import/realloc.c: Update.
* gnulib/import/ref-add.sin: Update.
* gnulib/import/ref-del.sin: Update.
* gnulib/import/rename.c: Update.
* gnulib/import/rewinddir.c: Update.
* gnulib/import/rmdir.c: Update.
* gnulib/import/same-inode.h: Update.
* gnulib/import/save-cwd.c: Update.
* gnulib/import/save-cwd.h: Update.
* gnulib/import/scratch_buffer.h: Update.
* gnulib/import/secure_getenv.c: Update.
* gnulib/import/setenv.c: Update.
* gnulib/import/signal.in.h: Update.
* gnulib/import/stat-time.c: Update.
* gnulib/import/stat-time.h: Update.
* gnulib/import/stat-w32.c: Update.
* gnulib/import/stat-w32.h: Update.
* gnulib/import/stat.c: Update.
* gnulib/import/stdbool.in.h: Update.
* gnulib/import/stddef.in.h: Update.
* gnulib/import/stdint.in.h: Update.
* gnulib/import/stdio.in.h: Update.
* gnulib/import/stdlib.in.h: Update.
* gnulib/import/str-two-way.h: Update.
* gnulib/import/strchrnul.c: Update.
* gnulib/import/strdup.c: Update.
* gnulib/import/streq.h: Update.
* gnulib/import/strerror-override.c: Update.
* gnulib/import/strerror-override.h: Update.
* gnulib/import/strerror.c: Update.
* gnulib/import/string.in.h: Update.
* gnulib/import/stripslash.c: Update.
* gnulib/import/strnlen1.c: Update.
* gnulib/import/strnlen1.h: Update.
* gnulib/import/strstr.c: Update.
* gnulib/import/strtok_r.c: Update.
* gnulib/import/sys_stat.in.h: Update.
* gnulib/import/sys_time.in.h: Update.
* gnulib/import/sys_types.in.h: Update.
* gnulib/import/tempname.c: Update.
* gnulib/import/tempname.h: Update.
* gnulib/import/time.in.h: Update.
* gnulib/import/unistd--.h: Update.
* gnulib/import/unistd-safer.h: Update.
* gnulib/import/unistd.in.h: Update.
* gnulib/import/unsetenv.c: Update.
* gnulib/import/verify.h: Update.
* gnulib/import/extra/snippet/warn-on-use.h: Update.
* gnulib/import/wchar.in.h: Update.
* gnulib/import/wctype.in.h: Update.
* gnulib/import/xalloc-oversized.h: Update.
* gnulib/update-gnulib.sh (GNULIB_COMMIT_SHA1): Set to
"53e2c179f26a890fa6685af4b6c1397ee370433b".
268 lines
8.7 KiB
C
268 lines
8.7 KiB
C
/* A GNU-like <dirent.h>.
|
|
Copyright (C) 2006-2016 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 <http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef _@GUARD_PREFIX@_DIRENT_H
|
|
|
|
#if __GNUC__ >= 3
|
|
@PRAGMA_SYSTEM_HEADER@
|
|
#endif
|
|
@PRAGMA_COLUMNS@
|
|
|
|
/* The include_next requires a split double-inclusion guard. */
|
|
#if @HAVE_DIRENT_H@
|
|
# @INCLUDE_NEXT@ @NEXT_DIRENT_H@
|
|
#endif
|
|
|
|
#ifndef _@GUARD_PREFIX@_DIRENT_H
|
|
#define _@GUARD_PREFIX@_DIRENT_H
|
|
|
|
/* Get ino_t. Needed on some systems, including glibc 2.8. */
|
|
#include <sys/types.h>
|
|
|
|
#if !@HAVE_DIRENT_H@
|
|
/* Define types DIR and 'struct dirent'. */
|
|
# if !GNULIB_defined_struct_dirent
|
|
struct dirent
|
|
{
|
|
char d_type;
|
|
char d_name[1];
|
|
};
|
|
/* Possible values for 'd_type'. */
|
|
# define DT_UNKNOWN 0
|
|
# define DT_FIFO 1 /* FIFO */
|
|
# define DT_CHR 2 /* character device */
|
|
# define DT_DIR 4 /* directory */
|
|
# define DT_BLK 6 /* block device */
|
|
# define DT_REG 8 /* regular file */
|
|
# define DT_LNK 10 /* symbolic link */
|
|
# define DT_SOCK 12 /* socket */
|
|
# define DT_WHT 14 /* whiteout */
|
|
typedef struct gl_directory DIR;
|
|
# define GNULIB_defined_struct_dirent 1
|
|
# endif
|
|
#endif
|
|
|
|
/* The __attribute__ feature is available in gcc versions 2.5 and later.
|
|
The attribute __pure__ was added in gcc 2.96. */
|
|
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
|
# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
|
|
#else
|
|
# define _GL_ATTRIBUTE_PURE /* empty */
|
|
#endif
|
|
|
|
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
|
|
|
|
/* The definition of _GL_ARG_NONNULL is copied here. */
|
|
|
|
/* The definition of _GL_WARN_ON_USE is copied here. */
|
|
|
|
|
|
/* Declare overridden functions. */
|
|
|
|
#if @GNULIB_OPENDIR@
|
|
# if @REPLACE_OPENDIR@
|
|
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
|
# undef opendir
|
|
# define opendir rpl_opendir
|
|
# define GNULIB_defined_opendir 1
|
|
# endif
|
|
_GL_FUNCDECL_RPL (opendir, DIR *, (const char *dir_name) _GL_ARG_NONNULL ((1)));
|
|
_GL_CXXALIAS_RPL (opendir, DIR *, (const char *dir_name));
|
|
# else
|
|
# if !@HAVE_OPENDIR@
|
|
_GL_FUNCDECL_SYS (opendir, DIR *, (const char *dir_name) _GL_ARG_NONNULL ((1)));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (opendir, DIR *, (const char *dir_name));
|
|
# endif
|
|
_GL_CXXALIASWARN (opendir);
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef opendir
|
|
# if HAVE_RAW_DECL_OPENDIR
|
|
_GL_WARN_ON_USE (opendir, "opendir is not portable - "
|
|
"use gnulib module opendir for portability");
|
|
# endif
|
|
#endif
|
|
|
|
#if @GNULIB_READDIR@
|
|
# if !@HAVE_READDIR@
|
|
_GL_FUNCDECL_SYS (readdir, struct dirent *, (DIR *dirp) _GL_ARG_NONNULL ((1)));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (readdir, struct dirent *, (DIR *dirp));
|
|
_GL_CXXALIASWARN (readdir);
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef readdir
|
|
# if HAVE_RAW_DECL_READDIR
|
|
_GL_WARN_ON_USE (readdir, "readdir is not portable - "
|
|
"use gnulib module readdir for portability");
|
|
# endif
|
|
#endif
|
|
|
|
#if @GNULIB_REWINDDIR@
|
|
# if !@HAVE_REWINDDIR@
|
|
_GL_FUNCDECL_SYS (rewinddir, void, (DIR *dirp) _GL_ARG_NONNULL ((1)));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (rewinddir, void, (DIR *dirp));
|
|
_GL_CXXALIASWARN (rewinddir);
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef rewinddir
|
|
# if HAVE_RAW_DECL_REWINDDIR
|
|
_GL_WARN_ON_USE (rewinddir, "rewinddir is not portable - "
|
|
"use gnulib module rewinddir for portability");
|
|
# endif
|
|
#endif
|
|
|
|
#if @GNULIB_CLOSEDIR@
|
|
# if @REPLACE_CLOSEDIR@
|
|
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
|
# undef closedir
|
|
# define closedir rpl_closedir
|
|
# define GNULIB_defined_closedir 1
|
|
# endif
|
|
_GL_FUNCDECL_RPL (closedir, int, (DIR *dirp) _GL_ARG_NONNULL ((1)));
|
|
_GL_CXXALIAS_RPL (closedir, int, (DIR *dirp));
|
|
# else
|
|
# if !@HAVE_CLOSEDIR@
|
|
_GL_FUNCDECL_SYS (closedir, int, (DIR *dirp) _GL_ARG_NONNULL ((1)));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (closedir, int, (DIR *dirp));
|
|
# endif
|
|
_GL_CXXALIASWARN (closedir);
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef closedir
|
|
# if HAVE_RAW_DECL_CLOSEDIR
|
|
_GL_WARN_ON_USE (closedir, "closedir is not portable - "
|
|
"use gnulib module closedir for portability");
|
|
# endif
|
|
#endif
|
|
|
|
#if @GNULIB_DIRFD@
|
|
/* Return the file descriptor associated with the given directory stream,
|
|
or -1 if none exists. */
|
|
# if @REPLACE_DIRFD@
|
|
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
|
# undef dirfd
|
|
# define dirfd rpl_dirfd
|
|
# endif
|
|
_GL_FUNCDECL_RPL (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1)));
|
|
_GL_CXXALIAS_RPL (dirfd, int, (DIR *));
|
|
|
|
# ifdef __KLIBC__
|
|
/* Gnulib internal hooks needed to maintain the dirfd metadata. */
|
|
_GL_EXTERN_C int _gl_register_dirp_fd (int fd, DIR *dirp)
|
|
_GL_ARG_NONNULL ((2));
|
|
_GL_EXTERN_C void _gl_unregister_dirp_fd (int fd);
|
|
# endif
|
|
# else
|
|
# if defined __cplusplus && defined GNULIB_NAMESPACE && defined dirfd
|
|
/* dirfd is defined as a macro and not as a function.
|
|
Turn it into a function and get rid of the macro. */
|
|
static inline int (dirfd) (DIR *dp) { return dirfd (dp); }
|
|
# undef dirfd
|
|
# endif
|
|
# if !(@HAVE_DECL_DIRFD@ || defined dirfd)
|
|
_GL_FUNCDECL_SYS (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1)));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (dirfd, int, (DIR *));
|
|
# endif
|
|
_GL_CXXALIASWARN (dirfd);
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef dirfd
|
|
# if HAVE_RAW_DECL_DIRFD
|
|
_GL_WARN_ON_USE (dirfd, "dirfd is unportable - "
|
|
"use gnulib module dirfd for portability");
|
|
# endif
|
|
#endif
|
|
|
|
#if @GNULIB_FDOPENDIR@
|
|
/* Open a directory stream visiting the given directory file
|
|
descriptor. Return NULL and set errno if fd is not visiting a
|
|
directory. On success, this function consumes fd (it will be
|
|
implicitly closed either by this function or by a subsequent
|
|
closedir). */
|
|
# if @REPLACE_FDOPENDIR@
|
|
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
|
# undef fdopendir
|
|
# define fdopendir rpl_fdopendir
|
|
# endif
|
|
_GL_FUNCDECL_RPL (fdopendir, DIR *, (int fd));
|
|
_GL_CXXALIAS_RPL (fdopendir, DIR *, (int fd));
|
|
# else
|
|
# if !@HAVE_FDOPENDIR@ || !@HAVE_DECL_FDOPENDIR@
|
|
_GL_FUNCDECL_SYS (fdopendir, DIR *, (int fd));
|
|
# endif
|
|
_GL_CXXALIAS_SYS (fdopendir, DIR *, (int fd));
|
|
# endif
|
|
_GL_CXXALIASWARN (fdopendir);
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef fdopendir
|
|
# if HAVE_RAW_DECL_FDOPENDIR
|
|
_GL_WARN_ON_USE (fdopendir, "fdopendir is unportable - "
|
|
"use gnulib module fdopendir for portability");
|
|
# endif
|
|
#endif
|
|
|
|
#if @GNULIB_SCANDIR@
|
|
/* Scan the directory DIR, calling FILTER on each directory entry.
|
|
Entries for which FILTER returns nonzero are individually malloc'd,
|
|
sorted using qsort with CMP, and collected in a malloc'd array in
|
|
*NAMELIST. Returns the number of entries selected, or -1 on error. */
|
|
# if !@HAVE_SCANDIR@
|
|
_GL_FUNCDECL_SYS (scandir, int,
|
|
(const char *dir, struct dirent ***namelist,
|
|
int (*filter) (const struct dirent *),
|
|
int (*cmp) (const struct dirent **, const struct dirent **))
|
|
_GL_ARG_NONNULL ((1, 2, 4)));
|
|
# endif
|
|
/* Need to cast, because on glibc systems, the fourth parameter is
|
|
int (*cmp) (const void *, const void *). */
|
|
_GL_CXXALIAS_SYS_CAST (scandir, int,
|
|
(const char *dir, struct dirent ***namelist,
|
|
int (*filter) (const struct dirent *),
|
|
int (*cmp) (const struct dirent **, const struct dirent **)));
|
|
_GL_CXXALIASWARN (scandir);
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef scandir
|
|
# if HAVE_RAW_DECL_SCANDIR
|
|
_GL_WARN_ON_USE (scandir, "scandir is unportable - "
|
|
"use gnulib module scandir for portability");
|
|
# endif
|
|
#endif
|
|
|
|
#if @GNULIB_ALPHASORT@
|
|
/* Compare two 'struct dirent' entries alphabetically. */
|
|
# if !@HAVE_ALPHASORT@
|
|
_GL_FUNCDECL_SYS (alphasort, int,
|
|
(const struct dirent **, const struct dirent **)
|
|
_GL_ATTRIBUTE_PURE
|
|
_GL_ARG_NONNULL ((1, 2)));
|
|
# endif
|
|
/* Need to cast, because on glibc systems, the parameters are
|
|
(const void *, const void *). */
|
|
_GL_CXXALIAS_SYS_CAST (alphasort, int,
|
|
(const struct dirent **, const struct dirent **));
|
|
_GL_CXXALIASWARN (alphasort);
|
|
#elif defined GNULIB_POSIXCHECK
|
|
# undef alphasort
|
|
# if HAVE_RAW_DECL_ALPHASORT
|
|
_GL_WARN_ON_USE (alphasort, "alphasort is unportable - "
|
|
"use gnulib module alphasort for portability");
|
|
# endif
|
|
#endif
|
|
|
|
|
|
#endif /* _@GUARD_PREFIX@_DIRENT_H */
|
|
#endif /* _@GUARD_PREFIX@_DIRENT_H */
|