----------------------------------- Notify API ----------------------------------- This API is here to provide an abstraction to the underlaying low-level filesystem notification mechanism to try to make applications portable but also throw away detail from client-code. Note that the design is only tested with inotify and may need to change in the future to support more subsystems that may have some limitations. -- Data structures notify_event: members: type - the type of event (NOTIFY_* constants) dir - non zero if event is triggered on a directory path - path of the triggered event filename - the filename event was triggered on types: NOTIFY_UNKNOWN Events that do occur but can't be mapped to a more relevant type ends up being marked as an unknown event, you can most likely only tell that "something" happened on the given path (so unless your application wants to know that "something" happened, ignore this) NOTIFY_CREATE A file/directory was created on the filesystem. NOTIFY_DELETE A file/directory was deleted from the filesystem, note that it is possible to get just one event for a directory that has files/subdirectorys, so when getting this event you should always make sure your actions does handle the possible recursion. NOTIFY_MOVE_FROM NOTIFY_MOVE_TO As of the time of writing no implementation support these types and uses create/delete types instead. A drastic design change to the 'notify_event' structure should be made before this type of events will be usefull. -- Functions notify_init(): instantiate notify. making it ready for further notify_* calls. returns a positive number if everything went OK. returns zero if notify has already been instantiated. And returns -1 and sets errno if an error occur. notify_add_watch(): tells notify to start listening on 'path'. one create event will be genereted for every file under 'path' and all subdirectorys will be watched. returns 1 if everything went ok and returns -1 and sets 'errno' if an error occure. notify_rm_watch(): 'path' will be removed from notify and all events triggered on this path will be ignored from now on. notify_read(): fetches and returns one event from the subsystem. A NULL pointer is returned if no events is available at the given moment. Note that the implementation may read and process the data from whatever source it has in this function, the only requirement is that the function never blocks. notify_exit(): free's all memory associated with notify and other cleanup routines. notify_event_new(): allocates memory and initilize values for a new 'notify_event' structure notify_event_clear(): free's all the memory and sets values back to default. notify_event_set_*(): use these functions to set members of the 'notify_event' structure. notify_event_del(): free's all the memory from the notify_event structure. notify_event_typetostr(): returns a string representation of a event's type. the pointer should not be free'ed, so its safe to be used like this: printf("type: %s\n", notify_event_typetostr(event));