| Commit | Line | Data |
|---|---|---|
| 984263bc MD |
1 | /*- |
| 2 | * Copyright (c) 1989, 1993 | |
| 3 | * The Regents of the University of California. All rights reserved. | |
| 4 | * | |
| 5 | * Redistribution and use in source and binary forms, with or without | |
| 6 | * modification, are permitted provided that the following conditions | |
| 7 | * are met: | |
| 8 | * 1. Redistributions of source code must retain the above copyright | |
| 9 | * notice, this list of conditions and the following disclaimer. | |
| 10 | * 2. Redistributions in binary form must reproduce the above copyright | |
| 11 | * notice, this list of conditions and the following disclaimer in the | |
| 12 | * documentation and/or other materials provided with the distribution. | |
| 13 | * 3. All advertising materials mentioning features or use of this software | |
| 14 | * must display the following acknowledgement: | |
| 15 | * This product includes software developed by the University of | |
| 16 | * California, Berkeley and its contributors. | |
| 17 | * 4. Neither the name of the University nor the names of its contributors | |
| 18 | * may be used to endorse or promote products derived from this software | |
| 19 | * without specific prior written permission. | |
| 20 | * | |
| 21 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |
| 22 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| 23 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| 24 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
| 25 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| 26 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
| 27 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| 28 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| 29 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
| 30 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| 31 | * SUCH DAMAGE. | |
| 32 | * | |
| 33 | * @(#)dirent.h 8.2 (Berkeley) 7/28/94 | |
| 34 | * $FreeBSD: src/include/dirent.h,v 1.7 1999/12/29 05:01:20 peter Exp $ | |
| e4dcda4d | 35 | * $DragonFly: src/include/dirent.h,v 1.10 2008/06/05 17:53:10 swildner Exp $ |
| 984263bc MD |
36 | */ |
| 37 | ||
| 38 | #ifndef _DIRENT_H_ | |
| 39 | #define _DIRENT_H_ | |
| 40 | ||
| 41 | /* | |
| 42 | * The kernel defines the format of directory entries returned by | |
| 43 | * the getdirentries(2) system call. | |
| 44 | */ | |
| 45 | #include <sys/dirent.h> | |
| 46 | ||
| 47 | #ifdef _POSIX_SOURCE | |
| 48 | typedef void * DIR; | |
| 49 | #else | |
| 50 | ||
| 984263bc MD |
51 | /* definitions for library routines operating on directories. */ |
| 52 | #define DIRBLKSIZ 1024 | |
| 53 | ||
| 54 | /* structure describing an open directory. */ | |
| 55 | typedef struct _dirdesc { | |
| 56 | int dd_fd; /* file descriptor associated with directory */ | |
| 57 | long dd_loc; /* offset in current buffer */ | |
| 58 | long dd_size; /* amount of data returned by getdirentries */ | |
| 59 | char *dd_buf; /* data buffer */ | |
| 60 | int dd_len; /* size of data buffer */ | |
| 9d7ae7ac | 61 | long dd_lastseek; /* last seek index */ |
| 984263bc MD |
62 | long dd_rewind; /* magic cookie for rewinding */ |
| 63 | int dd_flags; /* flags for readdir */ | |
| 17ea2221 | 64 | void *dd_lock; /* hack to avoid include <pthread.h> */ |
| 84009d92 | 65 | off_t dd_seek; /* new magic cookie returned by getdirentries */ |
| 984263bc MD |
66 | } DIR; |
| 67 | ||
| 68 | #define dirfd(dirp) ((dirp)->dd_fd) | |
| 69 | ||
| 70 | /* flags for opendir2 */ | |
| 71 | #define DTF_HIDEW 0x0001 /* hide whiteout entries */ | |
| 72 | #define DTF_NODUP 0x0002 /* don't return duplicate names */ | |
| 73 | #define DTF_REWIND 0x0004 /* rewind after reading union stack */ | |
| 74 | #define __DTF_READALL 0x0008 /* everything has been read */ | |
| 9d7ae7ac | 75 | #define __DTF_SKIPME 0x0010 /* next entry to read not current entry */ |
| 984263bc | 76 | |
| e4dcda4d | 77 | #include <sys/_null.h> |
| 984263bc MD |
78 | |
| 79 | #endif /* _POSIX_SOURCE */ | |
| 80 | ||
| 81 | #ifndef _KERNEL | |
| 82 | ||
| 83 | #include <sys/cdefs.h> | |
| 84 | ||
| 85 | __BEGIN_DECLS | |
| 7c4af8e1 | 86 | DIR *opendir (const char *); |
| 7385abbc | 87 | DIR *fdopendir (int); |
| 7c4af8e1 MD |
88 | struct dirent *readdir (DIR *); |
| 89 | void rewinddir (DIR *); | |
| 90 | int closedir (DIR *); | |
| 984263bc | 91 | #ifndef _POSIX_SOURCE |
| 7c4af8e1 | 92 | DIR *__opendir2 (const char *, int); |
| 7385abbc | 93 | DIR *__fdopendir2 (int, int); |
| 7c4af8e1 | 94 | long telldir (const DIR *); |
| 8276f8bc | 95 | struct dirent *_readdir_unlocked(DIR *, int); |
| 75862a90 | 96 | void seekdir(DIR *, long); |
| 17ea2221 MD |
97 | void _reclaim_telldir(DIR *); |
| 98 | void _seekdir (DIR *, long); | |
| 7c4af8e1 MD |
99 | int scandir (const char *, struct dirent ***, |
| 100 | int (*)(struct dirent *), int (*)(const void *, const void *)); | |
| 101 | int alphasort (const void *, const void *); | |
| 102 | int getdents (int, char *, int); | |
| 103 | int getdirentries (int, char *, int, long *); | |
| 104 | int readdir_r (DIR *, struct dirent *, struct dirent **); | |
| 984263bc MD |
105 | #endif /* not POSIX */ |
| 106 | __END_DECLS | |
| 107 | ||
| 108 | #endif /* !_KERNEL */ | |
| 109 | ||
| 110 | #endif /* !_DIRENT_H_ */ |