diff options
Diffstat (limited to 'libc/misc/dirent/dirstream.h')
-rw-r--r-- | libc/misc/dirent/dirstream.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/libc/misc/dirent/dirstream.h b/libc/misc/dirent/dirstream.h new file mode 100644 index 000000000..2b06b1501 --- /dev/null +++ b/libc/misc/dirent/dirstream.h @@ -0,0 +1,75 @@ +/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +/* + * POSIX Standard: 5.1.2 Directory Operations <dirent.h> + */ + +#ifndef _DIRSTREAM_H + +#define _DIRSTREAM_H 1 + +#include <sys/types.h> +#include <dirent.h> +#ifdef _POSIX_THREADS +#include <pthread.h> +#endif + +/* For now, syscall readdir () only supports one entry at a time. It + * will be changed in the future. +#define NUMENT 3 +*/ +#ifndef NUMENT +#define NUMENT 1 +#endif + +#define SINGLE_READDIR 11 +#define MULTI_READDIR 12 +#define NEW_READDIR 13 + +/* Directory stream type. */ +struct __dirstream { + /* file descriptor */ + int dd_fd; + + /* offset of the next dir entry in buffer */ + off_t dd_nextloc; + + /* bytes of valid entries in buffer */ + size_t dd_size; + + /* -> directory buffer */ + struct dirent *dd_buf; + + /* offset of the next dir entry in directory. */ + off_t dd_nextoff; + + /* total size of buffer */ + size_t dd_max; + + enum {unknown, have_getdents, no_getdents} dd_getdents; + + /* lock */ +#ifdef _POSIX_THREADS + pthread_mutex_t *dd_lock; +#else + void *dd_lock; +#endif +}; /* stream data from opendir() */ + +#endif /* dirent.h */ |