-#ifndef _FD_SET
-#define _FD_SET
-/*
- * Select uses bit masks of file descriptors in longs. These macros
- * manipulate such bit fields (the filesystem macros use chars). The
- * extra protection here is to permit application redefinition above
- * the default size.
- */
-#ifdef FD_SETSIZE
-#define __DARWIN_FD_SETSIZE FD_SETSIZE
-#else /* !FD_SETSIZE */
-#define __DARWIN_FD_SETSIZE 1024
-#endif /* FD_SETSIZE */
-#define __DARWIN_NBBY 8 /* bits in a byte */
-#define __DARWIN_NFDBITS (sizeof(__int32_t) * __DARWIN_NBBY) /* bits per mask */
-#define __DARWIN_howmany(x, y) (((x) + ((y) - 1)) / (y)) /* # y's == x bits? */
-
-__BEGIN_DECLS
-typedef struct fd_set {
- __int32_t fds_bits[__DARWIN_howmany(__DARWIN_FD_SETSIZE, __DARWIN_NFDBITS)];
-} fd_set;
-__END_DECLS
-
-/* This inline avoids argument side-effect issues with FD_ISSET() */
-static __inline int
-__darwin_fd_isset(int _n, struct fd_set *_p)
-{
- return (_p->fds_bits[_n/__DARWIN_NFDBITS] & (1<<(_n % __DARWIN_NFDBITS)));
-}
-
-#define __DARWIN_FD_SET(n, p) do { int __fd = (n); ((p)->fds_bits[__fd/__DARWIN_NFDBITS] |= (1<<(__fd % __DARWIN_NFDBITS))); } while(0)
-#define __DARWIN_FD_CLR(n, p) do { int __fd = (n); ((p)->fds_bits[__fd/__DARWIN_NFDBITS] &= ~(1<<(__fd % __DARWIN_NFDBITS))); } while(0)
-#define __DARWIN_FD_ISSET(n, p) __darwin_fd_isset((n), (p))
-
-#if __GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ >= 3
-/*
- * Use the built-in bzero function instead of the library version so that
- * we do not pollute the namespace or introduce prototype warnings.
- */
-#define __DARWIN_FD_ZERO(p) __builtin_bzero(p, sizeof(*(p)))
-#else
-#define __DARWIN_FD_ZERO(p) bzero(p, sizeof(*(p)))
-#endif
-
-#define __DARWIN_FD_COPY(f, t) bcopy(f, t, sizeof(*(f)))
-#endif /* _FD_SET */