Согласно документации Apple , в обратном вызове FSEvents
,
/* These flags are only set if you specified the FileEvents */
/* flags when creating the stream. */
kFSEventStreamEventFlagItemCreated = 0x00000100,
kFSEventStreamEventFlagItemRemoved = 0x00000200,
kFSEventStreamEventFlagItemInodeMetaMod = 0x00000400,
kFSEventStreamEventFlagItemRenamed = 0x00000800,
kFSEventStreamEventFlagItemModified = 0x00001000,
kFSEventStreamEventFlagItemFinderInfoMod = 0x00002000,
kFSEventStreamEventFlagItemChangeOwner = 0x00004000,
kFSEventStreamEventFlagItemXattrMod = 0x00008000,
kFSEventStreamEventFlagItemIsFile = 0x00010000,
kFSEventStreamEventFlagItemIsDir = 0x00020000,
kFSEventStreamEventFlagItemIsSymlink = 0x00040000
Однако я трижды проверил, что флаг kFSEventStreamCreateFlagFileEvents
не используется устанавливается при вызове
FSEventStreamRef FSEventStreamCreate(
CFAllocatorRef allocator,
FSEventStreamCallback callback,
FSEventStreamContext *context,
CFArrayRef pathsToWatch,
FSEventStreamEventId sinceWhen,
CFTimeInterval latency,
FSEventStreamCreateFlags flags);
. Но что бы я ни делал, флаги kFSEventStreamEventFlagItem *
все еще устанавливаются, когда события передаются мне из FSEvents
API. Я подозреваю, что это ошибка, но я не совсем уверен. Я использую OS X Lion 10.7.2
Образец кода можно найти здесь. http://stuconnolly.com/downloads/scevents/
ИЗМЕНИТЬ
Вопрос:
Кто-нибудь еще испытал такие же результаты?
Могу ли я полагаться на это поведение при проверке флагов событий файлов?