mirror of
https://github.com/octoleo/lsyncd.git
synced 2024-12-13 14:43:09 +00:00
added inotifyMode
This commit is contained in:
parent
fb87176f7e
commit
a71edbbd29
32
inotify.c
32
inotify.c
@ -54,24 +54,52 @@ static const char * MOVE = "Move";
|
|||||||
static int inotify_fd = -1;
|
static int inotify_fd = -1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO allow configure.
|
* Standard inotify events to listen to.
|
||||||
*/
|
*/
|
||||||
static const uint32_t standard_event_mask =
|
static const uint32_t standard_event_mask =
|
||||||
IN_ATTRIB | IN_CLOSE_WRITE | IN_CREATE |
|
IN_ATTRIB | IN_CLOSE_WRITE | IN_CREATE |
|
||||||
IN_DELETE | IN_DELETE_SELF | IN_MOVED_FROM |
|
IN_DELETE | IN_DELETE_SELF | IN_MOVED_FROM |
|
||||||
IN_MOVED_TO | IN_DONT_FOLLOW | IN_ONLYDIR;
|
IN_MOVED_TO | IN_DONT_FOLLOW | IN_ONLYDIR;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds an inotify watch
|
* Adds an inotify watch
|
||||||
*
|
*
|
||||||
* @param dir (Lua stack) path to directory
|
* @param dir (Lua stack) path to directory
|
||||||
|
* @param inotifyMode (Lua stack) path to directory
|
||||||
* @return (Lua stack) numeric watch descriptor
|
* @return (Lua stack) numeric watch descriptor
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
l_addwatch(lua_State *L)
|
l_addwatch(lua_State *L)
|
||||||
{
|
{
|
||||||
const char *path = luaL_checkstring(L, 1);
|
const char *path = luaL_checkstring(L, 1);
|
||||||
int wd = inotify_add_watch(inotify_fd, path, standard_event_mask);
|
const char *imode = luaL_checkstring(L, 2);
|
||||||
|
uint32_t mask = standard_event_mask;
|
||||||
|
if (*imode) {
|
||||||
|
if (!strcmp(imode, "Modify")) {
|
||||||
|
/* act on modify instead of closeWrite */
|
||||||
|
mask |= IN_MODIFY;
|
||||||
|
mask &= ~IN_CLOSE_WRITE;
|
||||||
|
} else if (!strcmp(imode, "CloseWrite")) {
|
||||||
|
/* default */
|
||||||
|
} else if (!strcmp(imode, "CloseWrite or Modify")) {
|
||||||
|
/* acts on modify and closeWrite */
|
||||||
|
mask |= IN_MODIFY;
|
||||||
|
} else if (!strcmp(imode, "CloseWrite after Modify")) {
|
||||||
|
/* might be done in future */
|
||||||
|
printlogf(L, "Error",
|
||||||
|
"'CloseWrite after Modify' not implemented.");
|
||||||
|
exit(-1); // ERRNO
|
||||||
|
} else {
|
||||||
|
/* will be done in future */
|
||||||
|
printlogf(L, "Error",
|
||||||
|
"'%s' not a valid inotfiyMode.", imode);
|
||||||
|
exit(-1); // ERRNO
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int wd = inotify_add_watch(inotify_fd, path, mask);
|
||||||
if (wd < 0) {
|
if (wd < 0) {
|
||||||
printlogf(L, "Inotify", "addwatch(%s)->%d; err=%d:%s", path, wd,
|
printlogf(L, "Inotify", "addwatch(%s)->%d; err=%d:%s", path, wd,
|
||||||
errno, strerror(errno));
|
errno, strerror(errno));
|
||||||
|
@ -1824,7 +1824,8 @@ local Inotify = (function()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- lets the core registers watch with the kernel
|
-- lets the core registers watch with the kernel
|
||||||
local wd = lsyncd.inotify.addwatch(path);
|
local wd = lsyncd.inotify.addwatch(path,
|
||||||
|
(settings and settings.inotifyMode) or "");
|
||||||
if wd < 0 then
|
if wd < 0 then
|
||||||
log("Inotify","Unable to add watch '",path,"'")
|
log("Inotify","Unable to add watch '",path,"'")
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user