]> git.saurik.com Git - apple/libc.git/blobdiff - include/fts.h
Libc-1353.100.2.tar.gz
[apple/libc.git] / include / fts.h
index dc14cc2374d4a7d3c5077c234e494dcd06590ff2..325613704a24736c9bf2772b8e7935487b45e54c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000, 2003-2006, 2008, 2012 Apple Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
 #ifndef        _FTS_H_
 #define        _FTS_H_
 
+#include <sys/_types.h>
+#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 */
        struct _ftsent *fts_child;      /* linked list of children */
@@ -67,7 +77,14 @@ typedef struct {
        int fts_rfd;                    /* fd for root */
        int fts_pathlen;                /* sizeof(path) */
        int fts_nitems;                 /* elements in the sort array */
-       int (*fts_compar)();            /* compare function */
+#ifdef __BLOCKS__
+       union {
+#endif /* __BLOCKS__ */
+           int (*fts_compar)();        /* compare function */
+#ifdef __BLOCKS__
+           int (^fts_compar_b)();      /* compare block */
+       };
+#endif /* __BLOCKS__ */
 
 #define        FTS_COMFOLLOW   0x001           /* follow command line symlinks */
 #define        FTS_LOGICAL     0x002           /* logical walk */
@@ -76,11 +93,20 @@ typedef struct {
 #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_OPTIONMASK  0x0ff           /* valid user option mask */
+#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 */
+#ifdef __BLOCKS__
+#define        FTS_BLOCK_COMPAR 0x80000000     /* fts_compar is a block */
+#endif /* __BLOCKS__ */
        int fts_options;                /* fts_open options, global flags */
 } FTS;
 
@@ -103,6 +129,7 @@ typedef struct _ftsent {
 
 #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 */
@@ -137,14 +164,78 @@ typedef struct _ftsent {
 } FTSENT;
 
 #include <sys/cdefs.h>
+#include <Availability.h>
 
 __BEGIN_DECLS
-FTSENT *fts_children(FTS *, int);
-int     fts_close(FTS *);
+//Begin-Libc
+#ifndef LIBC_ALIAS_FTS_CHILDREN
+//End-Libc
+FTSENT *fts_children(FTS *, int) __DARWIN_INODE64(fts_children);
+//Begin-Libc
+#else /* LIBC_ALIAS_FTS_CHILDREN */
+FTSENT *fts_children(FTS *, int) LIBC_INODE64(fts_children);
+#endif /* !LIBC_ALIAS_FTS_CHILDREN */
+//End-Libc
+//Begin-Libc
+#ifndef LIBC_ALIAS_FTS_CLOSE
+//End-Libc
+int     fts_close(FTS *) __DARWIN_INODE64(fts_close);
+//Begin-Libc
+#else /* LIBC_ALIAS_FTS_CLOSE */
+int     fts_close(FTS *) LIBC_INODE64(fts_close);
+#endif /* !LIBC_ALIAS_FTS_CLOSE */
+//End-Libc
+//Begin-Libc
+#ifndef LIBC_ALIAS_FTS_OPEN
+//End-Libc
 FTS    *fts_open(char * const *, int,
-           int (*)(const FTSENT **, const FTSENT **));
-FTSENT *fts_read(FTS *);
-int     fts_set(FTS *, FTSENT *, int);
+           int (*)(const FTSENT **, const FTSENT **)) __DARWIN_INODE64(fts_open);
+//Begin-Libc
+#else /* LIBC_ALIAS_FTS_OPEN */
+FTS    *fts_open(char * const *, int,
+           int (*)(const FTSENT **, const FTSENT **)) LIBC_INODE64(fts_open);
+#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 **) __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 **) __fts_noescape)
+           LIBC_INODE64(fts_open_b);
+#endif /* !LIBC_ALIAS_FTS_OPEN */
+//End-Libc
+#endif /* __BLOCKS__ */
+//Begin-Libc
+#ifndef LIBC_ALIAS_FTS_READ
+//End-Libc
+FTSENT *fts_read(FTS *) __DARWIN_INODE64(fts_read);
+//Begin-Libc
+#else /* LIBC_ALIAS_FTS_READ */
+FTSENT *fts_read(FTS *) LIBC_INODE64(fts_read);
+#endif /* !LIBC_ALIAS_FTS_READ */
+//End-Libc
+//Begin-Libc
+#ifndef LIBC_ALIAS_FTS_SET
+//End-Libc
+int     fts_set(FTS *, FTSENT *, int) __DARWIN_INODE64(fts_set);
+//Begin-Libc
+#else /* LIBC_ALIAS_FTS_SET */
+int     fts_set(FTS *, FTSENT *, int) LIBC_INODE64(fts_set);
+#endif /* !LIBC_ALIAS_FTS_SET */
+//End-Libc
 __END_DECLS
 
+#pragma clang diagnostic pop
 #endif /* !_FTS_H_ */
+