rastrear a renomeação / exclusão de arquivos com FSEvents no Lion

Estou tentando usar o FSEvents para detectar quando arquivos foram adicionados / removidos de uma pasta específica. No momento, implementei um invólucro simples em torno do FSEvents e funciona bem: recebo todos os evento

Mas o problema que tenho agora é que, quando renomeio um arquivo no Finder, pego 2 eventos distintos: o primeiro do tipo "renomeado" com o nome do arquivo antigo e outro com "renomeado" e o novo nome do arquivo. Os IDs de evento são diferentes entre as duas chamadas.

Então, como vou saber qual evento "renomeado" contém o nome antigo e qual evento contém o antigo? Tentei procurar na documentação, mas, infelizmente, o kFSEventStreamEventFlagItemRenamed não está documentado ... parece novo no Lion.

PS: a única maneira que eu conseguia pensar era: em um evento renomeado, verifico minha interface do usuário para ver se tenho um item correspondente ao caminho do evento. Nesse caso, eu o sinalizo para renomear. Caso contrário, verifico se um item foi sinalizado para renomear e, se sim, renomeio para o novo caminho do evento. Mas eu realmente não gosto dessa idéia ...

Edit: Ok, eu imulei algo na linha do meu "PS": notei que, ao renomear algo, os IDs dos 2 eventos são consecutivos, de modo que, com o ID do evento que contém o novo nome, posso obter o evento contendo o nome antigo. Simplesmente uso um pouco de descrição na minha interface para armazenar IDs e caminhos associados no caso de um evento "renomeado".

e qualquer forma, agora posso capturar eventos de renomeação e até mover eventos: quando você move um arquivo, é um evento "renomeado" que é capturado pelo FSEventStream ...

Mas ainda tenho um último problema: excluir. Quando excluo algo, ele é movido para a lixeira: recebo um evento "renomeado". Mas o problema é que não recebo o segundo evento de renomeação. Somente um evento "modificado" no arquivo .DS_Store. Acho que esse arquivo é usado pelo Finder para saber quais arquivos estão na lixeira, etc. Assim, eu poderia verificar a modificação desse arquivo e obter o último evento "renomeado" para detectar que um arquivo foi enviado à lixeira. Mas estou usando o TotalFinder, que usa Asepsis, que modifica a maneira como o Finder armazena arquivos .DS_Store: não recebo mais "modificado" nisso. Para resumir: não consigo detectar quando um arquivo é enviado para a lixeira ...

Alguma idéia de como eu posso fazer isso? Talvez use algo diferente de FSEvents para capturar apenas este evento?

questionAnswers(2)

yourAnswerToTheQuestion