Loading...
--- Libc/Libc-763.13/include/fts.h
+++ Libc/Libc-1534.40.2/include/fts.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2003-2006, 2008 Apple Inc. All rights reserved.
+ * Copyright (c) 2000, 2003-2006, 2008, 2012 Apple Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
@@ -59,21 +59,14 @@
 #define	_FTS_H_
 
 #include <sys/_types.h>
-
-#ifndef _DEV_T
-typedef	__darwin_dev_t		dev_t;		/* device number */
-#define _DEV_T
-#endif
-
-#ifndef	_INO_T
-typedef	__darwin_ino_t	ino_t;		/* inode number */
-#define _INO_T
-#endif
-
-#ifndef _NLINK_T
-typedef	__uint16_t		nlink_t;	/* link count */
-#define	_NLINK_T
-#endif
+#include <sys/_types/_dev_t.h>
+#include <sys/_types/_ino_t.h>
+#include <sys/_types/_nlink_t.h>
+
+#include <Availability.h>
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wstrict-prototypes"
 
 typedef struct {
 	struct _ftsent *fts_cur;	/* current node */
@@ -100,9 +93,14 @@
 #define	FTS_PHYSICAL	0x010		/* physical walk */
 #define	FTS_SEEDOT	0x020		/* return dot and dot-dot */
 #define	FTS_XDEV	0x040		/* don't cross devices */
-#define	FTS_WHITEOUT	0x080		/* return whiteout information */
+#define	FTS_WHITEOUT	0x080		/* (no longer supported) return whiteout information */
 #define	FTS_COMFOLLOWDIR 0x400		/* (non-std) follow command line symlinks for directories only */
+#if (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 1090) || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 70000)
 #define	FTS_OPTIONMASK	0x4ff		/* valid user option mask */
+#else
+#define	FTS_NOSTAT_TYPE	0x800		/* (non-std) no stat, but use d_type in struct dirent when available */
+#define	FTS_OPTIONMASK	0xcff		/* valid user option mask */
+#endif
 
 #define	FTS_NAMEONLY	0x100		/* (private) child names only */
 #define	FTS_STOP	0x200		/* (private) unrecoverable error */
@@ -121,7 +119,7 @@
 	char *fts_accpath;		/* access path */
 	char *fts_path;			/* root path */
 	int fts_errno;			/* errno for this node */
-	int fts_symfd;			/* fd for symlink */
+	int fts_symfd;			/* fd for symlink or chdir */
 	unsigned short fts_pathlen;	/* strlen(fts_path) */
 	unsigned short fts_namelen;	/* strlen(fts_name) */
 
@@ -131,6 +129,7 @@
 
 #define	FTS_ROOTPARENTLEVEL	-1
 #define	FTS_ROOTLEVEL		 0
+#define	FTS_MAXLEVEL		 0x7fffffff
 	short fts_level;		/* depth (-1 to N) */
 
 #define	FTS_D		 1		/* preorder directory */
@@ -152,6 +151,7 @@
 #define	FTS_DONTCHDIR	 0x01		/* don't chdir .. to the parent */
 #define	FTS_SYMFOLLOW	 0x02		/* followed a symlink to get here */
 #define	FTS_ISW		 0x04		/* this is a whiteout object */
+#define	FTS_CHDIRFD 0x08 /* indicates the fts_symfd field was set for chdir */
 	unsigned short fts_flags;	/* private flags for FTSENT structure */
 
 #define	FTS_AGAIN	 1		/* read node again */
@@ -198,15 +198,22 @@
 #endif /* !LIBC_ALIAS_FTS_OPEN */
 //End-Libc
 #ifdef __BLOCKS__
+#if __has_attribute(noescape)
+#define __fts_noescape __attribute__((__noescape__))
+#else
+#define __fts_noescape
+#endif
 //Begin-Libc
 #ifndef LIBC_ALIAS_FTS_OPEN_B
 //End-Libc
 FTS	*fts_open_b(char * const *, int,
-	    int (^)(const FTSENT **, const FTSENT **)) __DARWIN_INODE64(fts_open_b) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
+	    int (^)(const FTSENT **, const FTSENT **) __fts_noescape)
+	    __DARWIN_INODE64(fts_open_b) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
 //Begin-Libc
 #else /* LIBC_ALIAS_FTS_OPEN */
 FTS	*fts_open_b(char * const *, int,
-	    int (^)(const FTSENT **, const FTSENT **)) LIBC_INODE64(fts_open_b);
+	    int (^)(const FTSENT **, const FTSENT **) __fts_noescape)
+	    LIBC_INODE64(fts_open_b);
 #endif /* !LIBC_ALIAS_FTS_OPEN */
 //End-Libc
 #endif /* __BLOCKS__ */
@@ -230,4 +237,6 @@
 //End-Libc
 __END_DECLS
 
+#pragma clang diagnostic pop
 #endif /* !_FTS_H_ */
+