Added support for directory symbolic links

This commit is contained in:
Richard van Zon committed 2012-02-29 13:13:31 +01:00
1 parent 87cc62d1d8
commit ee190d07c5
1 file changed
+22 -2
+22 -2
View File
@@ -125,8 +125,8 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification
return;
[self stopEventStream];
NSArray *pathsToWatch = [NSArray arrayWithObject:aPath];
NSMutableArray *pathsToWatch = [NSMutableArray arrayWithObject:aPath];
void *appPointer = (void *)self;
FSEventStreamContext context = {0, appPointer, NULL, NULL, NULL};
CFTimeInterval latency = 2.0;
@@ -143,6 +143,26 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification
flags = kFSEventStreamCreateFlagUseCFTypes;
}
// add symlinked directories
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *fileList = [fileManager contentsOfDirectoryAtPath:aPath error:&error];
for (NSString *node in fileList)
{
NSDictionary *attributes = [fileManager attributesOfItemAtPath:aPath error:&error];
if ([[attributes objectForKey:@"NSFileType"] isEqualTo:NSFileTypeDirectory])
{
NSString *subDirectoryPath = [aPath stringByAppendingPathComponent:node];
NSString *symlinkDestination = [fileManager destinationOfSymbolicLinkAtPath:subDirectoryPath error:&error];
if (symlinkDestination)
{
[pathsToWatch addObject:subDirectoryPath];
}
}
}
stream = FSEventStreamCreate(NULL, &fsevents_callback, &context, (CFArrayRef) pathsToWatch,
[lastEventId unsignedLongLongValue], latency, flags);