]> git.ipfire.org Git - thirdparty/bash.git/blame - include/posixdir.h
Bash-4.3 distribution sources and documentation
[thirdparty/bash.git] / include / posixdir.h
CommitLineData
ccc6cda3
JA
1/* posixdir.h -- Posix directory reading includes and defines. */
2
ac50fbac 3/* Copyright (C) 1987,1991,2012 Free Software Foundation, Inc.
ccc6cda3
JA
4
5 This file is part of GNU Bash, the Bourne Again SHell.
6
3185942a
JA
7 Bash is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
ccc6cda3 11
3185942a
JA
12 Bash is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
ccc6cda3
JA
16
17 You should have received a copy of the GNU General Public License
3185942a
JA
18 along with Bash. If not, see <http://www.gnu.org/licenses/>.
19*/
ccc6cda3
JA
20
21/* This file should be included instead of <dirent.h> or <sys/dir.h>. */
22
23#if !defined (_POSIXDIR_H_)
24#define _POSIXDIR_H_
25
26#if defined (HAVE_DIRENT_H)
27# include <dirent.h>
b80f6443
JA
28# if defined (HAVE_STRUCT_DIRENT_D_NAMLEN)
29# define D_NAMLEN(d) ((d)->d_namlen)
30# else
31# define D_NAMLEN(d) (strlen ((d)->d_name))
32# endif /* !HAVE_STRUCT_DIRENT_D_NAMLEN */
ccc6cda3
JA
33#else
34# if defined (HAVE_SYS_NDIR_H)
35# include <sys/ndir.h>
36# endif
37# if defined (HAVE_SYS_DIR_H)
38# include <sys/dir.h>
39# endif
40# if defined (HAVE_NDIR_H)
41# include <ndir.h>
42# endif
43# if !defined (dirent)
44# define dirent direct
45# endif /* !dirent */
46# define D_NAMLEN(d) ((d)->d_namlen)
47#endif /* !HAVE_DIRENT_H */
48
ac50fbac 49/* The bash code fairly consistenly uses d_fileno; make sure it's available */
b80f6443 50#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (HAVE_STRUCT_DIRENT_D_FILENO)
ccc6cda3
JA
51# define d_fileno d_ino
52#endif
53
7117c2d2
JA
54/* Posix does not require that the d_ino field be present, and some
55 systems do not provide it. */
ac50fbac 56#if !defined (HAVE_STRUCT_DIRENT_D_INO) || defined (BROKEN_DIRENT_D_INO)
7117c2d2
JA
57# define REAL_DIR_ENTRY(dp) 1
58#else
59# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0)
60#endif /* _POSIX_SOURCE */
61
ac50fbac
CR
62#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (BROKEN_DIRENT_D_INO)
63# define D_INO_AVAILABLE
64#endif
65
66/* Signal the rest of the code that it can safely use dirent.d_fileno */
67#if defined (D_INO_AVAILABLE) || defined (HAVE_STRUCT_DIRENT_D_FILENO)
68# define D_FILENO_AVAILABLE 1
69#endif
70
ccc6cda3 71#endif /* !_POSIXDIR_H_ */