93 lines
3.8 KiB
C
93 lines
3.8 KiB
C
|
#ifndef FSM_DARWIN_GCC_H
|
||
|
#define FSM_DARWIN_GCC_H
|
||
|
|
||
|
#ifndef __clang__
|
||
|
/*
|
||
|
* It is possible to #include CoreFoundation/CoreFoundation.h when compiling
|
||
|
* with clang, but not with GCC as of time of writing.
|
||
|
*
|
||
|
* See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93082 for details.
|
||
|
*/
|
||
|
typedef unsigned int FSEventStreamCreateFlags;
|
||
|
#define kFSEventStreamEventFlagNone 0x00000000
|
||
|
#define kFSEventStreamEventFlagMustScanSubDirs 0x00000001
|
||
|
#define kFSEventStreamEventFlagUserDropped 0x00000002
|
||
|
#define kFSEventStreamEventFlagKernelDropped 0x00000004
|
||
|
#define kFSEventStreamEventFlagEventIdsWrapped 0x00000008
|
||
|
#define kFSEventStreamEventFlagHistoryDone 0x00000010
|
||
|
#define kFSEventStreamEventFlagRootChanged 0x00000020
|
||
|
#define kFSEventStreamEventFlagMount 0x00000040
|
||
|
#define kFSEventStreamEventFlagUnmount 0x00000080
|
||
|
#define kFSEventStreamEventFlagItemCreated 0x00000100
|
||
|
#define kFSEventStreamEventFlagItemRemoved 0x00000200
|
||
|
#define kFSEventStreamEventFlagItemInodeMetaMod 0x00000400
|
||
|
#define kFSEventStreamEventFlagItemRenamed 0x00000800
|
||
|
#define kFSEventStreamEventFlagItemModified 0x00001000
|
||
|
#define kFSEventStreamEventFlagItemFinderInfoMod 0x00002000
|
||
|
#define kFSEventStreamEventFlagItemChangeOwner 0x00004000
|
||
|
#define kFSEventStreamEventFlagItemXattrMod 0x00008000
|
||
|
#define kFSEventStreamEventFlagItemIsFile 0x00010000
|
||
|
#define kFSEventStreamEventFlagItemIsDir 0x00020000
|
||
|
#define kFSEventStreamEventFlagItemIsSymlink 0x00040000
|
||
|
#define kFSEventStreamEventFlagOwnEvent 0x00080000
|
||
|
#define kFSEventStreamEventFlagItemIsHardlink 0x00100000
|
||
|
#define kFSEventStreamEventFlagItemIsLastHardlink 0x00200000
|
||
|
#define kFSEventStreamEventFlagItemCloned 0x00400000
|
||
|
|
||
|
typedef struct __FSEventStream *FSEventStreamRef;
|
||
|
typedef const FSEventStreamRef ConstFSEventStreamRef;
|
||
|
|
||
|
typedef unsigned int CFStringEncoding;
|
||
|
#define kCFStringEncodingUTF8 0x08000100
|
||
|
|
||
|
typedef const struct __CFString *CFStringRef;
|
||
|
typedef const struct __CFArray *CFArrayRef;
|
||
|
typedef const struct __CFRunLoop *CFRunLoopRef;
|
||
|
|
||
|
struct FSEventStreamContext {
|
||
|
long long version;
|
||
|
void *cb_data, *retain, *release, *copy_description;
|
||
|
};
|
||
|
|
||
|
typedef struct FSEventStreamContext FSEventStreamContext;
|
||
|
typedef unsigned int FSEventStreamEventFlags;
|
||
|
#define kFSEventStreamCreateFlagNoDefer 0x02
|
||
|
#define kFSEventStreamCreateFlagWatchRoot 0x04
|
||
|
#define kFSEventStreamCreateFlagFileEvents 0x10
|
||
|
|
||
|
typedef unsigned long long FSEventStreamEventId;
|
||
|
#define kFSEventStreamEventIdSinceNow 0xFFFFFFFFFFFFFFFFULL
|
||
|
|
||
|
typedef void (*FSEventStreamCallback)(ConstFSEventStreamRef streamRef,
|
||
|
void *context,
|
||
|
__SIZE_TYPE__ num_of_events,
|
||
|
void *event_paths,
|
||
|
const FSEventStreamEventFlags event_flags[],
|
||
|
const FSEventStreamEventId event_ids[]);
|
||
|
typedef double CFTimeInterval;
|
||
|
FSEventStreamRef FSEventStreamCreate(void *allocator,
|
||
|
FSEventStreamCallback callback,
|
||
|
FSEventStreamContext *context,
|
||
|
CFArrayRef paths_to_watch,
|
||
|
FSEventStreamEventId since_when,
|
||
|
CFTimeInterval latency,
|
||
|
FSEventStreamCreateFlags flags);
|
||
|
CFStringRef CFStringCreateWithCString(void *allocator, const char *string,
|
||
|
CFStringEncoding encoding);
|
||
|
CFArrayRef CFArrayCreate(void *allocator, const void **items, long long count,
|
||
|
void *callbacks);
|
||
|
void CFRunLoopRun(void);
|
||
|
void CFRunLoopStop(CFRunLoopRef run_loop);
|
||
|
CFRunLoopRef CFRunLoopGetCurrent(void);
|
||
|
extern CFStringRef kCFRunLoopDefaultMode;
|
||
|
void FSEventStreamScheduleWithRunLoop(FSEventStreamRef stream,
|
||
|
CFRunLoopRef run_loop,
|
||
|
CFStringRef run_loop_mode);
|
||
|
unsigned char FSEventStreamStart(FSEventStreamRef stream);
|
||
|
void FSEventStreamStop(FSEventStreamRef stream);
|
||
|
void FSEventStreamInvalidate(FSEventStreamRef stream);
|
||
|
void FSEventStreamRelease(FSEventStreamRef stream);
|
||
|
|
||
|
#endif /* !clang */
|
||
|
#endif /* FSM_DARWIN_GCC_H */
|