Created
June 5, 2015 16:16
-
-
Save sl0ki/927e60a697f6d2a92072 to your computer and use it in GitHub Desktop.
fs_event.c
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <errno.h> // for errno | |
#include <fcntl.h> // for O_RDONLY | |
#include <stdio.h> // for fprintf() | |
#include <stdlib.h> // for EXIT_SUCCESS | |
#include <string.h> // for strerror() | |
#include <sys/event.h> // for kqueue() etc. | |
#include <unistd.h> // for close() | |
#include <CoreServices/CoreServices.h> | |
void mycallback( | |
ConstFSEventStreamRef streamRef, | |
void *clientCallBackInfo, | |
size_t numEvents, | |
void *eventPaths, | |
const FSEventStreamEventFlags eventFlags[], | |
const FSEventStreamEventId eventIds[]) | |
{ | |
int i; | |
char **paths = eventPaths; | |
// printf("Callback called\n"); | |
for (i=0; i<numEvents; i++) { | |
int count; | |
/* flags are unsigned long, IDs are uint64_t */ | |
printf("Change %llu in %s, flags %lu\n", eventIds[i], paths[i], eventFlags[i]); | |
} | |
} | |
int main (int argc, const char *argv[]) | |
{ | |
/* Define variables and create a CFArray object containing | |
CFString objects containing paths to watch. | |
*/ | |
CFStringRef mypath = CFSTR("/path/to/scan"); | |
CFArrayRef pathsToWatch = CFArrayCreate(NULL, (const void **)&mypath, 1, NULL); | |
void *callbackInfo = NULL; // could put stream-specific data here. | |
FSEventStreamRef stream; | |
CFAbsoluteTime latency = 3.0; /* Latency in seconds */ | |
/* Create the stream, passing in a callback */ | |
stream = FSEventStreamCreate(NULL, | |
&mycallback, | |
callbackInfo, | |
pathsToWatch, | |
kFSEventStreamEventIdSinceNow, /* Or a previous event ID */ | |
latency, | |
kFSEventStreamCreateFlagNone /* Flags explained in reference */ | |
); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment