This is the first version of the Octopus Library, a C library providing advanced file system crawling and monitoring capabilities on top of GLib’s GIO. This library, released under the LGPLv3+, is a full rewrite of some of the features provided by Gnome Tracker‘s libtracker-miner library.
Online documentation is available in:
The sources can be downloaded from:
The mdsum is:
This release is also GPG signed. You can download the signature from:
Some of the features provided by this new library are:
* Recursive crawling on a set of configured directories. For example, it may be configured to recursively crawl /home and /media.
* Directories inside the tree to recurse can be set to be ignored. For example, it may be configured to recursively crawl /home/user but not /home/user/.private.
* Directories may be configured to be crawled, but not recursively. For example, /home may be configured to be non-recursively crawled.
* Any possible combination of crawled, recursively-crawled and ignored is supported, as long as the same path is not added with different options.
* For every file or directory found during the crawling operation, a new event will be notified to configured signal listeners.
* During the filesystem crawling, monitors may be enabled in directories.
* Event merging; so that multiple events of the same type on the same file are all combined in a single event. Event merging will also act on different event types, trying to combine them in the best possible way. For example, if a file is CREATED, UPDATED and then REMOVED no event will be notified.
* Real-Time event notification. Both merged or raw events can be set to be notified in real-time.
* On-Demand iteration of events. If enabled, the monitor will store all received events in a proper order, so that afterwards they can be iterated. You could for example, configure a timeout every 30 minutes to iterate all raw or merged events which happened since the last iteration.
* Proper order of events. When notifying or iterating events the order may not be exactly the same as the one in the original events, but it is assured that if followed all events in the order given by the Octopus Monitor, the result is exactly the same as if followed in the original order.
In the roadmap for next versions:
* Asynchronous API will be available in release 0.0.2.
* A ‘database’ of already crawled directories will be optional, storing mtimes of each found file, so that when the program starts and re-crawls a common directory structure, it will check if the files in the tree changed since the last time crawled. This will be available in release 0.0.3.
Please send bug reports and suggestions to aleksander (at) gnu.org or aleksander (at) lanedo.com