iNotify

Create new INotify struct

iNotify
()

Examples

import std.process, std.stdio : writeln, writefln;

auto monitor = iNotify();
executeShell("rm -rf tmp");
executeShell("mkdir tmp");
// literals are zero-terminated
monitor.add("tmp".ptr, IN_CREATE | IN_DELETE);
ubyte[] data = [1, 2, 3, 4];
executeShell("touch tmp/killme");
auto events = monitor.read();
assert(events[0].mask == IN_CREATE);
assert(events[0].name == "killme");

executeShell("rm -rf tmp/killme");
events = monitor.read();
assert(events[0].mask == IN_DELETE);

// Note: watched directory doesn't track events in sub-directories
executeShell("mkdir tmp/some-dir");
executeShell("touch tmp/some-dir/victim");
events = monitor.read();
assert(events.length == 1);
assert(events[0].mask == (IN_ISDIR | IN_CREATE));
assert(events[0].name == "some-dir");

Meta