X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/5b2abdfbf4211b6592cdd02b9507555a0ecbb04b..1f2f436a38f7ae2d39a943ad2898d8fed4ed2e58:/include/dirent.h?ds=sidebyside diff --git a/include/dirent.h b/include/dirent.h index 1a67741..0d76134 100644 --- a/include/dirent.h +++ b/include/dirent.h @@ -1,21 +1,22 @@ /* - * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000, 2002-2008 Apple Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * - * The contents of this file constitute Original Code as defined in and - * are subject to the Apple Public Source License Version 1.1 (the - * "License"). You may not use this file except in compliance with the - * License. Please obtain a copy of the License at - * http://www.apple.com/publicsource and read it before using this file. + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. * - * This Original Code and all software distributed under the License are - * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the - * License for the specific language governing rights and limitations - * under the License. + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. * * @APPLE_LICENSE_HEADER_END@ */ @@ -58,33 +59,33 @@ #define _DIRENT_H_ /* - * The kernel defines the format of directory entries returned by - * the getdirentries(2) system call. + * The kernel defines the format of directory entries */ +#include <_types.h> #include +#include -#ifdef _POSIX_SOURCE -typedef void * DIR; -#else +struct _telldir; /* forward reference */ -#define d_ino d_fileno /* backward compatibility */ +/* structure describing an open directory. */ +typedef struct { + int __dd_fd; /* file descriptor associated with directory */ + long __dd_loc; /* offset in current buffer */ + long __dd_size; /* amount of data returned */ + char *__dd_buf; /* data buffer */ + int __dd_len; /* size of data buffer */ + long __dd_seek; /* magic cookie returned */ + long __dd_rewind; /* magic cookie for rewinding */ + int __dd_flags; /* flags for readdir */ + __darwin_pthread_mutex_t __dd_lock; /* for thread locking */ + struct _telldir *__dd_td; /* telldir position recording */ +} DIR; +#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) /* definitions for library routines operating on directories. */ #define DIRBLKSIZ 1024 -/* structure describing an open directory. */ -typedef struct _dirdesc { - int dd_fd; /* file descriptor associated with directory */ - long dd_loc; /* offset in current buffer */ - long dd_size; /* amount of data returned by getdirentries */ - char *dd_buf; /* data buffer */ - int dd_len; /* size of data buffer */ - long dd_seek; /* magic cookie returned by getdirentries */ - long dd_rewind; /* magic cookie for rewinding */ - int dd_flags; /* flags for readdir */ -} DIR; - -#define dirfd(dirp) ((dirp)->dd_fd) +#define dirfd(dirp) ((dirp)->__dd_fd) /* flags for opendir2 */ #define DTF_HIDEW 0x0001 /* hide whiteout entries */ @@ -92,31 +93,101 @@ typedef struct _dirdesc { #define DTF_REWIND 0x0004 /* rewind after reading union stack */ #define __DTF_READALL 0x0008 /* everything has been read */ -#ifndef NULL -#define NULL 0 -#endif - -#endif /* _POSIX_SOURCE */ +#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ #ifndef KERNEL #include __BEGIN_DECLS -DIR *opendir __P((const char *)); -struct dirent *readdir __P((DIR *)); -void rewinddir __P((DIR *)); -int closedir __P((DIR *)); -#ifndef _POSIX_SOURCE -DIR *__opendir2 __P((const char *, int)); -long telldir __P((const DIR *)); -void seekdir __P((DIR *, long)); -int scandir __P((const char *, struct dirent ***, - int (*)(struct dirent *), int (*)(const void *, const void *))); -int alphasort __P((const void *, const void *)); -int getdirentries __P((int, char *, int, long *)); -int readdir_r __P((DIR *, struct dirent *, struct dirent **)); +#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) +int alphasort(const void *, const void *) __DARWIN_INODE64(alphasort); +#endif /* not POSIX */ +//Begin-Libc +#ifndef LIBC_ALIAS_CLOSEDIR +//End-Libc +int closedir(DIR *) __DARWIN_ALIAS(closedir); +//Begin-Libc +#else /* LIBC_ALIAS_CLOSEDIR */ +int closedir(DIR *) LIBC_ALIAS(closedir); +#endif /* !LIBC_ALIAS_CLOSEDIR */ +//End-Libc +#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) +int getdirentries(int, char *, int, long *) +//Begin-Libc +#ifndef __LIBC__ +//End-Libc +#if __DARWIN_64_BIT_INO_T +/* + * getdirentries() doesn't work when 64-bit inodes is in effect, so we + * generate a link error. + */ + __asm("_getdirentries_is_not_available_when_64_bit_inodes_are_in_effect") +#else /* !__DARWIN_64_BIT_INO_T */ + __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6, __IPHONE_2_0,__IPHONE_2_0) +#endif /* __DARWIN_64_BIT_INO_T */ +//Begin-Libc +#endif /* !__LIBC__ */ +//End-Libc +; +#endif /* not POSIX */ +//Begin-Libc +#ifndef LIBC_ALIAS_OPENDIR +//End-Libc +DIR *opendir(const char *) __DARWIN_ALIAS_I(opendir); +//Begin-Libc +#else /* LIBC_ALIAS_OPENDIR */ +DIR *opendir(const char *) LIBC_ALIAS_I(opendir); +#endif /* !LIBC_ALIAS_OPENDIR */ +//End-Libc +#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) +//Begin-Libc +#ifndef LIBC_ALIAS___OPENDIR2 +//End-Libc +DIR *__opendir2(const char *, int) __DARWIN_ALIAS_I(__opendir2); +//Begin-Libc +#else /* LIBC_ALIAS___OPENDIR2 */ +DIR *__opendir2(const char *, int) LIBC_ALIAS_I(__opendir2); +#endif /* !LIBC_ALIAS___OPENDIR2 */ +//End-Libc +#endif /* not POSIX */ +struct dirent *readdir(DIR *) __DARWIN_INODE64(readdir); +int readdir_r(DIR *, struct dirent *, struct dirent **) __DARWIN_INODE64(readdir_r); +//Begin-Libc +#ifndef LIBC_ALIAS_REWINDDIR +//End-Libc +void rewinddir(DIR *) __DARWIN_ALIAS_I(rewinddir); +//Begin-Libc +#else /* LIBC_ALIAS_REWINDDIR */ +void rewinddir(DIR *) LIBC_ALIAS_I(rewinddir); +#endif /* !LIBC_ALIAS_REWINDDIR */ +//End-Libc +#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) +int scandir(const char *, struct dirent ***, + int (*)(struct dirent *), int (*)(const void *, const void *)) __DARWIN_INODE64(scandir); +#ifdef __BLOCKS__ +int scandir_b(const char *, struct dirent ***, + int (^)(struct dirent *), int (^)(const void *, const void *)) __DARWIN_INODE64(scandir_b) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2); +#endif /* __BLOCKS__ */ #endif /* not POSIX */ +//Begin-Libc +#ifndef LIBC_ALIAS_SEEKDIR +//End-Libc +void seekdir(DIR *, long) __DARWIN_ALIAS_I(seekdir); +//Begin-Libc +#else /* LIBC_ALIAS_SEEKDIR */ +void seekdir(DIR *, long) LIBC_ALIAS_I(seekdir); +#endif /* !LIBC_ALIAS_SEEKDIR */ +//End-Libc +//Begin-Libc +#ifndef LIBC_ALIAS_TELLDIR +//End-Libc +long telldir(DIR *) __DARWIN_ALIAS_I(telldir); +//Begin-Libc +#else /* LIBC_ALIAS_TELLDIR */ +long telldir(DIR *) LIBC_ALIAS_I(telldir); +#endif /* !LIBC_ALIAS_TELLDIR */ +//End-Libc __END_DECLS #endif /* !KERNEL */