blob: 370886aa708e06001474314ebcf5311a52655af3 [file] [log] [blame]
yuezonghe824eb0c2024-06-27 02:32:26 -07001/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
2This file is part of the GNU C Library.
3
4The GNU C Library is free software; you can redistribute it and/or
5modify it under the terms of the GNU Library General Public License as
6published by the Free Software Foundation; either version 2 of the
7License, or (at your option) any later version.
8
9The GNU C Library is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12Library General Public License for more details.
13
14You should have received a copy of the GNU Library General Public
15License along with the GNU C Library; see the file COPYING.LIB. If
16not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
17Cambridge, MA 02139, USA. */
18
19/*
20 * POSIX Standard: 5.1.2 Directory Operations <dirent.h>
21 */
22
23#ifndef _DIRSTREAM_H
24
25#define _DIRSTREAM_H 1
26
27#include <features.h>
28#include <sys/types.h>
29
30#include <bits/uClibc_mutex.h>
31
32/* For now, syscall readdir () only supports one entry at a time. It
33 * will be changed in the future.
34#define NUMENT 3
35*/
36#ifndef NUMENT
37#define NUMENT 1
38#endif
39
40#define SINGLE_READDIR 11
41#define MULTI_READDIR 12
42#define NEW_READDIR 13
43
44/* Directory stream type. */
45struct __dirstream {
46 /* file descriptor */
47 int dd_fd;
48
49 /* offset of the next dir entry in buffer */
50 size_t dd_nextloc;
51
52 /* bytes of valid entries in buffer */
53 size_t dd_size;
54
55 /* -> directory buffer */
56 void *dd_buf;
57
58 /* offset of the next dir entry in directory. */
59 off_t dd_nextoff;
60
61 /* total size of buffer */
62 size_t dd_max;
63
64 /* lock */
65 __UCLIBC_MUTEX(dd_lock);
66}; /* stream data from opendir() */
67
68
69extern ssize_t __getdents(int fd, char *buf, size_t count) attribute_hidden;
70#ifdef __UCLIBC_HAS_LFS__
71extern ssize_t __getdents64 (int fd, char *buf, size_t count) attribute_hidden;
72#endif
73
74#endif /* dirent.h */