2012-02-05 7 views
6

Según Apple documentation, en la devolución de llamada a FSEvents,FSEvents banderas archivos se configuran independientemente de las opciones de creación de flujo de eventos

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

Sin embargo, el triple comprobar que la bandera kFSEventStreamCreateFlagFileEvents no está siendo ajustado al llamar

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

Pero no importa lo que hago, las banderas kFSEventStreamEventFlagItem* todavía se están estableciendo, cuando los eventos se pasan a mí desde la API FSEvents. Sospecho que esto es un error, pero no estoy seguro. Estoy usando OS X Lion 10.7.2

Código de ejemplo se puede encontrar aquí. http://stuconnolly.com/downloads/scevents/

EDITAR

La pregunta es:
alguien más ha experimentado los mismos resultados?
¿Es este un comportamiento en el que puedo confiar para verificar los indicadores de eventos de archivos?

+0

¿Cuál es la pregunta? –

+0

oops, agregó la pregunta. gracias por señalar – Tony

+0

Ver lo mismo. OS 10.8.2 aquí. Definitivamente no se está comportando de la manera que sugiere la documentación. –

Respuesta

0

De hecho, estas etiquetas están definidas normalmente aunque el indicador se ve mal.

Por ejemplo, usted tiene una bandera 133120.That es 0x20800. Por lo tanto, usted debe notar "kFSEventStreamEventFlagItemRenamed = 0x00000800" y "kFSEventStreamEventFlagItemIsDir = 0x00020000".

Es decir, kFSEventStreamEventFlagItemRenamed & kFSEventStreamEventFlagItemIsDir es lo que desea.

Cuestiones relacionadas