From: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> fixup! compat/fsmonitor/fsm-listen-darwin: add MacOS header files \ for FSEvent Split out GCC-specific MacOS declarations into separate file from the clang-specific header file includes to reduce visual noise. Eliminate unnecessary includes when using clang. Signed-off-by: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> --- compat/fsmonitor/fsm-darwin-gcc.h | 92 ++++++++++++++++++++++++++++ compat/fsmonitor/fsm-listen-darwin.c | 91 +-------------------------- 2 files changed, 93 insertions(+), 90 deletions(-) create mode 100644 compat/fsmonitor/fsm-darwin-gcc.h diff --git a/compat/fsmonitor/fsm-darwin-gcc.h b/compat/fsmonitor/fsm-darwin-gcc.h new file mode 100644 index 00000000000..1c75c3d48e7 --- /dev/null +++ b/compat/fsmonitor/fsm-darwin-gcc.h @@ -0,0 +1,92 @@ +#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 */ diff --git a/compat/fsmonitor/fsm-listen-darwin.c b/compat/fsmonitor/fsm-listen-darwin.c index 5c5de1ae702..9a73fb607d5 100644 --- a/compat/fsmonitor/fsm-listen-darwin.c +++ b/compat/fsmonitor/fsm-listen-darwin.c @@ -1,95 +1,6 @@ #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); +#include "fsm-darwin-gcc.h" #else -/* - * Let Apple's headers declare `isalnum()` first, before - * Git's headers override it via a constant - */ -#include <string.h> #include <CoreFoundation/CoreFoundation.h> #include <CoreServices/CoreServices.h> #endif -- gitgitgadget