xref: /aosp_15_r20/bionic/libc/include/dirent.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * Copyright (C) 2008 The Android Open Source Project
3*8d67ca89SAndroid Build Coastguard Worker  * All rights reserved.
4*8d67ca89SAndroid Build Coastguard Worker  *
5*8d67ca89SAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
6*8d67ca89SAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions
7*8d67ca89SAndroid Build Coastguard Worker  * are met:
8*8d67ca89SAndroid Build Coastguard Worker  *  * Redistributions of source code must retain the above copyright
9*8d67ca89SAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer.
10*8d67ca89SAndroid Build Coastguard Worker  *  * Redistributions in binary form must reproduce the above copyright
11*8d67ca89SAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer in
12*8d67ca89SAndroid Build Coastguard Worker  *    the documentation and/or other materials provided with the
13*8d67ca89SAndroid Build Coastguard Worker  *    distribution.
14*8d67ca89SAndroid Build Coastguard Worker  *
15*8d67ca89SAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16*8d67ca89SAndroid Build Coastguard Worker  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17*8d67ca89SAndroid Build Coastguard Worker  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18*8d67ca89SAndroid Build Coastguard Worker  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19*8d67ca89SAndroid Build Coastguard Worker  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20*8d67ca89SAndroid Build Coastguard Worker  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21*8d67ca89SAndroid Build Coastguard Worker  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22*8d67ca89SAndroid Build Coastguard Worker  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23*8d67ca89SAndroid Build Coastguard Worker  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24*8d67ca89SAndroid Build Coastguard Worker  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25*8d67ca89SAndroid Build Coastguard Worker  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26*8d67ca89SAndroid Build Coastguard Worker  * SUCH DAMAGE.
27*8d67ca89SAndroid Build Coastguard Worker  */
28*8d67ca89SAndroid Build Coastguard Worker 
29*8d67ca89SAndroid Build Coastguard Worker #pragma once
30*8d67ca89SAndroid Build Coastguard Worker 
31*8d67ca89SAndroid Build Coastguard Worker /**
32*8d67ca89SAndroid Build Coastguard Worker  * @file dirent.h
33*8d67ca89SAndroid Build Coastguard Worker  * @brief Directory entry iteration.
34*8d67ca89SAndroid Build Coastguard Worker  */
35*8d67ca89SAndroid Build Coastguard Worker 
36*8d67ca89SAndroid Build Coastguard Worker #include <sys/cdefs.h>
37*8d67ca89SAndroid Build Coastguard Worker 
38*8d67ca89SAndroid Build Coastguard Worker #include <stdint.h>
39*8d67ca89SAndroid Build Coastguard Worker #include <sys/types.h>
40*8d67ca89SAndroid Build Coastguard Worker 
41*8d67ca89SAndroid Build Coastguard Worker __BEGIN_DECLS
42*8d67ca89SAndroid Build Coastguard Worker 
43*8d67ca89SAndroid Build Coastguard Worker /** d_type value when the type is not known. */
44*8d67ca89SAndroid Build Coastguard Worker #define DT_UNKNOWN 0
45*8d67ca89SAndroid Build Coastguard Worker /** d_type value for a FIFO. */
46*8d67ca89SAndroid Build Coastguard Worker #define DT_FIFO 1
47*8d67ca89SAndroid Build Coastguard Worker /** d_type value for a character device. */
48*8d67ca89SAndroid Build Coastguard Worker #define DT_CHR 2
49*8d67ca89SAndroid Build Coastguard Worker /** d_type value for a directory. */
50*8d67ca89SAndroid Build Coastguard Worker #define DT_DIR 4
51*8d67ca89SAndroid Build Coastguard Worker /** d_type value for a block device. */
52*8d67ca89SAndroid Build Coastguard Worker #define DT_BLK 6
53*8d67ca89SAndroid Build Coastguard Worker /** d_type value for a regular file. */
54*8d67ca89SAndroid Build Coastguard Worker #define DT_REG 8
55*8d67ca89SAndroid Build Coastguard Worker /** d_type value for a symbolic link. */
56*8d67ca89SAndroid Build Coastguard Worker #define DT_LNK 10
57*8d67ca89SAndroid Build Coastguard Worker /** d_type value for a socket. */
58*8d67ca89SAndroid Build Coastguard Worker #define DT_SOCK 12
59*8d67ca89SAndroid Build Coastguard Worker #define DT_WHT 14
60*8d67ca89SAndroid Build Coastguard Worker 
61*8d67ca89SAndroid Build Coastguard Worker #if defined(__LP64__)
62*8d67ca89SAndroid Build Coastguard Worker #define __DIRENT64_INO_T ino_t
63*8d67ca89SAndroid Build Coastguard Worker #else
64*8d67ca89SAndroid Build Coastguard Worker #define __DIRENT64_INO_T uint64_t /* Historical accident. */
65*8d67ca89SAndroid Build Coastguard Worker #endif
66*8d67ca89SAndroid Build Coastguard Worker 
67*8d67ca89SAndroid Build Coastguard Worker #define __DIRENT64_BODY \
68*8d67ca89SAndroid Build Coastguard Worker     __DIRENT64_INO_T d_ino; \
69*8d67ca89SAndroid Build Coastguard Worker     off64_t d_off; \
70*8d67ca89SAndroid Build Coastguard Worker     unsigned short d_reclen; \
71*8d67ca89SAndroid Build Coastguard Worker     unsigned char d_type; \
72*8d67ca89SAndroid Build Coastguard Worker     char d_name[256]; \
73*8d67ca89SAndroid Build Coastguard Worker 
74*8d67ca89SAndroid Build Coastguard Worker /** The structure returned by readdir(). Identical to dirent64 on Android. */
75*8d67ca89SAndroid Build Coastguard Worker struct dirent { __DIRENT64_BODY };
76*8d67ca89SAndroid Build Coastguard Worker /** The structure returned by readdir64(). Identical to dirent on Android. */
77*8d67ca89SAndroid Build Coastguard Worker struct dirent64 { __DIRENT64_BODY };
78*8d67ca89SAndroid Build Coastguard Worker 
79*8d67ca89SAndroid Build Coastguard Worker #undef __DIRENT64_BODY
80*8d67ca89SAndroid Build Coastguard Worker #undef __DIRENT64_INO_T
81*8d67ca89SAndroid Build Coastguard Worker 
82*8d67ca89SAndroid Build Coastguard Worker /* glibc compatibility. */
83*8d67ca89SAndroid Build Coastguard Worker #undef _DIRENT_HAVE_D_NAMLEN /* Linux doesn't have a d_namlen field. */
84*8d67ca89SAndroid Build Coastguard Worker #define _DIRENT_HAVE_D_RECLEN
85*8d67ca89SAndroid Build Coastguard Worker #define _DIRENT_HAVE_D_OFF
86*8d67ca89SAndroid Build Coastguard Worker #define _DIRENT_HAVE_D_TYPE
87*8d67ca89SAndroid Build Coastguard Worker 
88*8d67ca89SAndroid Build Coastguard Worker #define d_fileno d_ino
89*8d67ca89SAndroid Build Coastguard Worker 
90*8d67ca89SAndroid Build Coastguard Worker /** The structure returned by opendir()/fopendir(). */
91*8d67ca89SAndroid Build Coastguard Worker typedef struct DIR DIR;
92*8d67ca89SAndroid Build Coastguard Worker 
93*8d67ca89SAndroid Build Coastguard Worker /**
94*8d67ca89SAndroid Build Coastguard Worker  * [opendir(3)](https://man7.org/linux/man-pages/man3/opendir.3.html)
95*8d67ca89SAndroid Build Coastguard Worker  * opens a directory stream for the directory at `__path`.
96*8d67ca89SAndroid Build Coastguard Worker  *
97*8d67ca89SAndroid Build Coastguard Worker  * Returns null and sets `errno` on failure.
98*8d67ca89SAndroid Build Coastguard Worker  */
99*8d67ca89SAndroid Build Coastguard Worker DIR* _Nullable opendir(const char* _Nonnull __path);
100*8d67ca89SAndroid Build Coastguard Worker 
101*8d67ca89SAndroid Build Coastguard Worker /**
102*8d67ca89SAndroid Build Coastguard Worker  * [fopendir(3)](https://man7.org/linux/man-pages/man3/opendir.3.html)
103*8d67ca89SAndroid Build Coastguard Worker  * opens a directory stream for the directory at `__dir_fd`.
104*8d67ca89SAndroid Build Coastguard Worker  *
105*8d67ca89SAndroid Build Coastguard Worker  * Returns null and sets `errno` on failure.
106*8d67ca89SAndroid Build Coastguard Worker  */
107*8d67ca89SAndroid Build Coastguard Worker DIR* _Nullable fdopendir(int __dir_fd);
108*8d67ca89SAndroid Build Coastguard Worker 
109*8d67ca89SAndroid Build Coastguard Worker /**
110*8d67ca89SAndroid Build Coastguard Worker  * [readdir(3)](https://man7.org/linux/man-pages/man3/readdir.3.html)
111*8d67ca89SAndroid Build Coastguard Worker  * returns the next directory entry in the given directory.
112*8d67ca89SAndroid Build Coastguard Worker  *
113*8d67ca89SAndroid Build Coastguard Worker  * Returns a pointer to a directory entry on success,
114*8d67ca89SAndroid Build Coastguard Worker  * or returns null and leaves `errno` unchanged at the end of the directory,
115*8d67ca89SAndroid Build Coastguard Worker  * or returns null and sets `errno` on failure.
116*8d67ca89SAndroid Build Coastguard Worker  */
117*8d67ca89SAndroid Build Coastguard Worker struct dirent* _Nullable readdir(DIR* _Nonnull __dir);
118*8d67ca89SAndroid Build Coastguard Worker 
119*8d67ca89SAndroid Build Coastguard Worker /**
120*8d67ca89SAndroid Build Coastguard Worker  * [readdir64(3)](https://man7.org/linux/man-pages/man3/readdir.3.html)
121*8d67ca89SAndroid Build Coastguard Worker  * returns the next directory entry in the given directory.
122*8d67ca89SAndroid Build Coastguard Worker  *
123*8d67ca89SAndroid Build Coastguard Worker  * Returns a pointer to a directory entry on success,
124*8d67ca89SAndroid Build Coastguard Worker  * or returns null and leaves `errno` unchanged at the end of the directory,
125*8d67ca89SAndroid Build Coastguard Worker  * or returns null and sets `errno` on failure.
126*8d67ca89SAndroid Build Coastguard Worker  */
127*8d67ca89SAndroid Build Coastguard Worker struct dirent64* _Nullable readdir64(DIR* _Nonnull __dir);
128*8d67ca89SAndroid Build Coastguard Worker 
129*8d67ca89SAndroid Build Coastguard Worker int readdir_r(DIR* _Nonnull __dir, struct dirent* _Nonnull __entry, struct dirent* _Nullable * _Nonnull __buffer) __attribute__((__deprecated__("readdir_r is deprecated; use readdir instead")));
130*8d67ca89SAndroid Build Coastguard Worker int readdir64_r(DIR* _Nonnull __dir, struct dirent64* _Nonnull __entry, struct dirent64* _Nullable * _Nonnull __buffer) __attribute__((__deprecated__("readdir64_r is deprecated; use readdir64 instead")));
131*8d67ca89SAndroid Build Coastguard Worker 
132*8d67ca89SAndroid Build Coastguard Worker /**
133*8d67ca89SAndroid Build Coastguard Worker  * [closedir(3)](https://man7.org/linux/man-pages/man3/closedir.3.html)
134*8d67ca89SAndroid Build Coastguard Worker  * closes a directory stream.
135*8d67ca89SAndroid Build Coastguard Worker  *
136*8d67ca89SAndroid Build Coastguard Worker  * Returns 0 on success and returns -1 and sets `errno` on failure.
137*8d67ca89SAndroid Build Coastguard Worker  */
138*8d67ca89SAndroid Build Coastguard Worker int closedir(DIR* _Nonnull __dir);
139*8d67ca89SAndroid Build Coastguard Worker 
140*8d67ca89SAndroid Build Coastguard Worker /**
141*8d67ca89SAndroid Build Coastguard Worker  * [rewinddir(3)](https://man7.org/linux/man-pages/man3/rewinddir.3.html)
142*8d67ca89SAndroid Build Coastguard Worker  * rewinds a directory stream to the first entry.
143*8d67ca89SAndroid Build Coastguard Worker  */
144*8d67ca89SAndroid Build Coastguard Worker void rewinddir(DIR* _Nonnull __dir);
145*8d67ca89SAndroid Build Coastguard Worker 
146*8d67ca89SAndroid Build Coastguard Worker /**
147*8d67ca89SAndroid Build Coastguard Worker  * [seekdir(3)](https://man7.org/linux/man-pages/man3/seekdir.3.html)
148*8d67ca89SAndroid Build Coastguard Worker  * seeks a directory stream to the given entry, which must be a value returned
149*8d67ca89SAndroid Build Coastguard Worker  * by telldir().
150*8d67ca89SAndroid Build Coastguard Worker  *
151*8d67ca89SAndroid Build Coastguard Worker  * Available since API level 23.
152*8d67ca89SAndroid Build Coastguard Worker  */
153*8d67ca89SAndroid Build Coastguard Worker 
154*8d67ca89SAndroid Build Coastguard Worker #if __BIONIC_AVAILABILITY_GUARD(23)
155*8d67ca89SAndroid Build Coastguard Worker void seekdir(DIR* _Nonnull __dir, long __location) __INTRODUCED_IN(23);
156*8d67ca89SAndroid Build Coastguard Worker 
157*8d67ca89SAndroid Build Coastguard Worker /**
158*8d67ca89SAndroid Build Coastguard Worker  * [telldir(3)](https://man7.org/linux/man-pages/man3/telldir.3.html)
159*8d67ca89SAndroid Build Coastguard Worker  * returns a value representing the current position in the directory
160*8d67ca89SAndroid Build Coastguard Worker  * for use with seekdir().
161*8d67ca89SAndroid Build Coastguard Worker  *
162*8d67ca89SAndroid Build Coastguard Worker  * Returns the current position on success and returns -1 and sets `errno` on failure.
163*8d67ca89SAndroid Build Coastguard Worker  *
164*8d67ca89SAndroid Build Coastguard Worker  * Available since API level 23.
165*8d67ca89SAndroid Build Coastguard Worker  */
166*8d67ca89SAndroid Build Coastguard Worker long telldir(DIR* _Nonnull __dir) __INTRODUCED_IN(23);
167*8d67ca89SAndroid Build Coastguard Worker #endif /* __BIONIC_AVAILABILITY_GUARD(23) */
168*8d67ca89SAndroid Build Coastguard Worker 
169*8d67ca89SAndroid Build Coastguard Worker 
170*8d67ca89SAndroid Build Coastguard Worker /**
171*8d67ca89SAndroid Build Coastguard Worker  * [dirfd(3)](https://man7.org/linux/man-pages/man3/dirfd.3.html)
172*8d67ca89SAndroid Build Coastguard Worker  * returns the file descriptor backing the given directory stream.
173*8d67ca89SAndroid Build Coastguard Worker  *
174*8d67ca89SAndroid Build Coastguard Worker  * Returns a file descriptor on success and returns -1 and sets `errno` on failure.
175*8d67ca89SAndroid Build Coastguard Worker  */
176*8d67ca89SAndroid Build Coastguard Worker int dirfd(DIR* _Nonnull __dir);
177*8d67ca89SAndroid Build Coastguard Worker 
178*8d67ca89SAndroid Build Coastguard Worker /**
179*8d67ca89SAndroid Build Coastguard Worker  * [alphasort](https://man7.org/linux/man-pages/man3/alphasort.3.html) is a
180*8d67ca89SAndroid Build Coastguard Worker  * comparator for use with scandir() that uses strcoll().
181*8d67ca89SAndroid Build Coastguard Worker  */
182*8d67ca89SAndroid Build Coastguard Worker int alphasort(const struct dirent* _Nonnull * _Nonnull __lhs, const struct dirent* _Nonnull * _Nonnull __rhs);
183*8d67ca89SAndroid Build Coastguard Worker 
184*8d67ca89SAndroid Build Coastguard Worker /**
185*8d67ca89SAndroid Build Coastguard Worker  * [alphasort64](https://man7.org/linux/man-pages/man3/alphasort.3.html) is a
186*8d67ca89SAndroid Build Coastguard Worker  * comparator for use with scandir64() that uses strcmp().
187*8d67ca89SAndroid Build Coastguard Worker  */
188*8d67ca89SAndroid Build Coastguard Worker int alphasort64(const struct dirent64* _Nonnull * _Nonnull __lhs, const struct dirent64* _Nonnull * _Nonnull __rhs);
189*8d67ca89SAndroid Build Coastguard Worker 
190*8d67ca89SAndroid Build Coastguard Worker /**
191*8d67ca89SAndroid Build Coastguard Worker  * [scandir(3)](https://man7.org/linux/man-pages/man3/scandir.3.html)
192*8d67ca89SAndroid Build Coastguard Worker  * scans all the directory `__path`, filtering entries with `__filter` and
193*8d67ca89SAndroid Build Coastguard Worker  * sorting them with qsort() using the given `__comparator`, and storing them
194*8d67ca89SAndroid Build Coastguard Worker  * into `__name_list`. Passing NULL as the filter accepts all entries.
195*8d67ca89SAndroid Build Coastguard Worker  * Passing NULL as the comparator skips sorting.
196*8d67ca89SAndroid Build Coastguard Worker  *
197*8d67ca89SAndroid Build Coastguard Worker  * Returns the number of entries returned in the list on success,
198*8d67ca89SAndroid Build Coastguard Worker  * and returns -1 and sets `errno` on failure.
199*8d67ca89SAndroid Build Coastguard Worker  */
200*8d67ca89SAndroid Build Coastguard Worker int scandir(const char* _Nonnull __path, struct dirent* _Nonnull * _Nonnull * _Nonnull __name_list, int (* _Nullable __filter)(const struct dirent* _Nonnull), int (* _Nullable __comparator)(const struct dirent* _Nonnull * _Nonnull, const struct dirent* _Nonnull * _Nonnull));
201*8d67ca89SAndroid Build Coastguard Worker 
202*8d67ca89SAndroid Build Coastguard Worker /**
203*8d67ca89SAndroid Build Coastguard Worker  * [scandir64(3)](https://man7.org/linux/man-pages/man3/scandir.3.html)
204*8d67ca89SAndroid Build Coastguard Worker  * scans all the directory `__path`, filtering entries with `__filter` and
205*8d67ca89SAndroid Build Coastguard Worker  * sorting them with qsort() using the given `__comparator`, and storing them
206*8d67ca89SAndroid Build Coastguard Worker  * into `__name_list`. Passing NULL as the filter accepts all entries.
207*8d67ca89SAndroid Build Coastguard Worker  * Passing NULL as the comparator skips sorting.
208*8d67ca89SAndroid Build Coastguard Worker  *
209*8d67ca89SAndroid Build Coastguard Worker  * Returns the number of entries returned in the list on success,
210*8d67ca89SAndroid Build Coastguard Worker  * and returns -1 and sets `errno` on failure.
211*8d67ca89SAndroid Build Coastguard Worker  */
212*8d67ca89SAndroid Build Coastguard Worker int scandir64(const char* _Nonnull __path, struct dirent64* _Nonnull * _Nonnull * _Nonnull __name_list, int (* _Nullable __filter)(const struct dirent64* _Nonnull), int (* _Nullable __comparator)(const struct dirent64* _Nonnull * _Nonnull, const struct dirent64* _Nonnull * _Nonnull));
213*8d67ca89SAndroid Build Coastguard Worker 
214*8d67ca89SAndroid Build Coastguard Worker #if defined(__USE_GNU)
215*8d67ca89SAndroid Build Coastguard Worker 
216*8d67ca89SAndroid Build Coastguard Worker /**
217*8d67ca89SAndroid Build Coastguard Worker  * [scandirat64(3)](https://man7.org/linux/man-pages/man3/scandirat.3.html)
218*8d67ca89SAndroid Build Coastguard Worker  * scans all the directory referenced by the pair of `__dir_fd` and `__path`,
219*8d67ca89SAndroid Build Coastguard Worker  * filtering entries with `__filter` and sorting them with qsort() using the
220*8d67ca89SAndroid Build Coastguard Worker  * given `__comparator`, and storing them into `__name_list`. Passing NULL as
221*8d67ca89SAndroid Build Coastguard Worker  * the filter accepts all entries.
222*8d67ca89SAndroid Build Coastguard Worker  * Passing NULL as the comparator skips sorting.
223*8d67ca89SAndroid Build Coastguard Worker  *
224*8d67ca89SAndroid Build Coastguard Worker  * Returns the number of entries returned in the list on success,
225*8d67ca89SAndroid Build Coastguard Worker  * and returns -1 and sets `errno` on failure.
226*8d67ca89SAndroid Build Coastguard Worker  *
227*8d67ca89SAndroid Build Coastguard Worker  * Available since API level 24.
228*8d67ca89SAndroid Build Coastguard Worker  */
229*8d67ca89SAndroid Build Coastguard Worker 
230*8d67ca89SAndroid Build Coastguard Worker #if __BIONIC_AVAILABILITY_GUARD(24)
231*8d67ca89SAndroid Build Coastguard Worker int scandirat64(int __dir_fd, const char* _Nonnull __path, struct dirent64* _Nonnull * _Nonnull * _Nonnull __name_list, int (* _Nullable __filter)(const struct dirent64* _Nonnull), int (* _Nullable __comparator)(const struct dirent64* _Nonnull * _Nonnull, const struct dirent64* _Nonnull * _Nonnull)) __INTRODUCED_IN(24);
232*8d67ca89SAndroid Build Coastguard Worker 
233*8d67ca89SAndroid Build Coastguard Worker /**
234*8d67ca89SAndroid Build Coastguard Worker  * [scandirat(3)](https://man7.org/linux/man-pages/man3/scandirat.3.html)
235*8d67ca89SAndroid Build Coastguard Worker  * scans all the directory referenced by the pair of `__dir_fd` and `__path`,
236*8d67ca89SAndroid Build Coastguard Worker  * filtering entries with `__filter` and sorting them with qsort() using the
237*8d67ca89SAndroid Build Coastguard Worker  * given `__comparator`, and storing them into `__name_list`. Passing NULL as
238*8d67ca89SAndroid Build Coastguard Worker  * the filter accepts all entries.
239*8d67ca89SAndroid Build Coastguard Worker  * Passing NULL as the comparator skips sorting.
240*8d67ca89SAndroid Build Coastguard Worker  *
241*8d67ca89SAndroid Build Coastguard Worker  * Returns the number of entries returned in the list on success,
242*8d67ca89SAndroid Build Coastguard Worker  * and returns -1 and sets `errno` on failure.
243*8d67ca89SAndroid Build Coastguard Worker  *
244*8d67ca89SAndroid Build Coastguard Worker  * Available since API level 24.
245*8d67ca89SAndroid Build Coastguard Worker  */
246*8d67ca89SAndroid Build Coastguard Worker int scandirat(int __dir_fd, const char* _Nonnull __path, struct dirent* _Nonnull * _Nonnull * _Nonnull __name_list, int (* _Nullable __filter)(const struct dirent* _Nonnull), int (* _Nullable __comparator)(const struct dirent* _Nonnull * _Nonnull, const struct dirent* _Nonnull * _Nonnull)) __INTRODUCED_IN(24);
247*8d67ca89SAndroid Build Coastguard Worker #endif /* __BIONIC_AVAILABILITY_GUARD(24) */
248*8d67ca89SAndroid Build Coastguard Worker 
249*8d67ca89SAndroid Build Coastguard Worker 
250*8d67ca89SAndroid Build Coastguard Worker #endif
251*8d67ca89SAndroid Build Coastguard Worker 
252*8d67ca89SAndroid Build Coastguard Worker __END_DECLS
253