X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/3d9156a7a519a5e3aa1b92e9d9d4b991f1aed7ff..fc56b708803d28b949a9181528bb0da4d25b3b7b:/include/fts.h diff --git a/include/fts.h b/include/fts.h index dc14cc2..3256137 100644 --- a/include/fts.h +++ b/include/fts.h @@ -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@ * @@ -58,6 +58,16 @@ #ifndef _FTS_H_ #define _FTS_H_ +#include +#include +#include +#include + +#include + +#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 +#include __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_ */ +