#include <mach/doubleagent_types.h> not included by <mach/mach.h> — include it explicitly
mach/doubleagent_types.h
macroDA_XATTR_MAXNAMELEN
#define DA_XATTR_MAXNAMELEN 127
Must match the 'XATTR_MAXNAMELEN' in <sys/xattr.h>.
macroDA_XATTR_FINDERINFO_NAME
#define DA_XATTR_FINDERINFO_NAME "com.apple.FinderInfo"
Copy of XATTR_FINDERINFO_NAME in <sys/xattr.h>.
macroDA_XATTR_RESOURCEFORK_NAME
#define DA_XATTR_RESOURCEFORK_NAME "com.apple.ResourceFork"
Copy of DA_XATTR_RESOURCEFORK_NAME in <sys/xattr.h>.
macroMAX_NUM_OF_XATTRS
#define MAX_NUM_OF_XATTRS 256
macroLISTXATTR_RESULT_MAX_NAMES_LEN
#define LISTXATTR_RESULT_MAX_NAMES_LEN (sizeof(DA_XATTR_RESOURCEFORK_NAME) + sizeof(DA_XATTR_FINDERINFO_NAME) + (MAX_NUM_OF_XATTRS * ((DA_XATTR_MAXNAMELEN + 1))))
macroLISTXATTR_RESULT_MAX_HINTS_LEN
#define LISTXATTR_RESULT_MAX_HINTS_LEN (MAX_NUM_OF_XATTRS * 2 * sizeof(uint32_t))
hint = offset + length (per xattr).
macroLISTXATTR_RESULT_MAX_SIZE
#define LISTXATTR_RESULT_MAX_SIZE (LISTXATTR_RESULT_MAX_NAMES_LEN + LISTXATTR_RESULT_MAX_HINTS_LEN)
typedefxattrname
typedef char xattrname[DA_XATTR_MAXNAMELEN + 1]
structlist_xattrs_result
| uint64_t | finderInfoOffset | header =0 if not present |
| uint64_t | resourceForkOffset | =0 if not present |
| uint64_t | resourceForkLength | Don't care if resourceForkOffset = 0 |
| uint64_t | numOfXattrs | |
| uint64_t | dataLength | data: (1) names (separated with '\0') (2) ranges: offset + lengths (for caching) (dataLength = namesLength + rangesLength) |
| uint64_t | namesLength | |
| uint64_t | rangesLength | |
| uint8_t[34860] | data |
typedeflistxattrs_result_t
typedef struct list_xattrs_result listxattrs_result_t;