2012-02-05 20 views
6

Theo Apple documentation, trong callback để FSEvents,FSEvents cờ tập tin được thiết lập không phụ thuộc tùy chọn tạo dòng sự kiện

/* 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 

Tuy nhiên, tôi triple kiểm tra rằng cờ kFSEventStreamCreateFlagFileEvents không được thiết lập khi gọi

FSEventStreamRef FSEventStreamCreate( 
    CFAllocatorRef allocator, 
    FSEventStreamCallback callback, 
    FSEventStreamContext *context, 
    CFArrayRef pathsToWatch, 
    FSEventStreamEventId sinceWhen, 
    CFTimeInterval latency, 
    FSEventStreamCreateFlags flags); 

Nhưng bất kể tôi làm gì, cờ kFSEventStreamEventFlagItem* vẫn đang được đặt khi các sự kiện được chuyển cho tôi từ API FSEvents. Tôi nghi ngờ đây là một lỗi, nhưng tôi không hoàn toàn chắc chắn. Tôi đang sử dụng OS X Lion 10.7.2

Mã mẫu có thể được tìm thấy tại đây. http://stuconnolly.com/downloads/scevents/

EDIT

Câu hỏi đặt ra là:
Có ai khác có kinh nghiệm kết quả tương tự?
Đây có phải là hành vi mà tôi có thể dựa vào để kiểm tra các cờ sự kiện tệp không?

+0

Vậy câu hỏi là gì? –

+0

oops, đã thêm câu hỏi. cảm ơn vì đã chỉ ra – Tony

+0

Thấy điều tương tự. OS 10.8.2 tại đây. Nó chắc chắn không hoạt động theo cách mà tài liệu gợi ý. –

Trả lời

0

Thực tế, các cờ này được đặt bình thường mặc dù cờ có vẻ sai.

Ví dụ: bạn có cờ 133120.Đó là 0x20800. Vì vậy, bạn nên lưu ý "kFSEventStreamEventFlagItemRenamed = 0x00000800" và "kFSEventStreamEventFlagItemIsDir = 0x00020000".

Tức là, kFSEventStreamEventFlagItemRenamed & kFSEventStreamEventFlagItemIsDir là những gì bạn muốn.