mirror of
https://github.com/octoleo/lsyncd.git
synced 2024-09-21 11:39:02 +00:00
This commit is contained in:
parent
2529d36c3f
commit
1137db829f
51
lsyncd.c
51
lsyncd.c
@ -184,25 +184,25 @@ l_real_dir(lua_State *L)
|
|||||||
* Dumps the LUA stack. For debugging purposes.
|
* Dumps the LUA stack. For debugging purposes.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
l_stackdump(lua_State* l)
|
l_stackdump(lua_State* L)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int top = lua_gettop(l);
|
int top = lua_gettop(L);
|
||||||
printf("total in stack %d\n",top);
|
printf("total in stack %d\n",top);
|
||||||
for (i = 1; i <= top; i++) {
|
for (i = 1; i <= top; i++) {
|
||||||
int t = lua_type(l, i);
|
int t = lua_type(L, i);
|
||||||
switch (t) {
|
switch (t) {
|
||||||
case LUA_TSTRING:
|
case LUA_TSTRING:
|
||||||
printf("%d string: '%s'\n", i, lua_tostring(l, i));
|
printf("%d string: '%s'\n", i, lua_tostring(L, i));
|
||||||
break;
|
break;
|
||||||
case LUA_TBOOLEAN:
|
case LUA_TBOOLEAN:
|
||||||
printf("%d boolean %s\n", i, lua_toboolean(l, i) ? "true" : "false");
|
printf("%d boolean %s\n", i, lua_toboolean(L, i) ? "true" : "false");
|
||||||
break;
|
break;
|
||||||
case LUA_TNUMBER:
|
case LUA_TNUMBER:
|
||||||
printf("%d number: %g\n", i, lua_tonumber(l, i));
|
printf("%d number: %g\n", i, lua_tonumber(L, i));
|
||||||
break;
|
break;
|
||||||
default: /* other values */
|
default: /* other values */
|
||||||
printf("%d %s\n", i, lua_typename(l, t));
|
printf("%d %s\n", i, lua_typename(L, t));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -278,6 +278,36 @@ static const luaL_reg lsyncdlib[] = {
|
|||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Waits after startup for all children.
|
||||||
|
*
|
||||||
|
* @param (Lua stack) a table of the children pids.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
wait_startup(lua_State *L)
|
||||||
|
{
|
||||||
|
/* wait for all children spawned in startup */
|
||||||
|
int pidn, *pids, i;
|
||||||
|
if (lua_type(L, 1) == LUA_TNIL) {
|
||||||
|
printf("Lua function startup did not return a pidtable!\n");
|
||||||
|
exit(-1); // ERRNO
|
||||||
|
}
|
||||||
|
pidn = lua_objlen (L, -1);
|
||||||
|
if (pidn == 0) {
|
||||||
|
/* nothing to do on zero pids */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
pids = s_calloc(pidn, sizeof(int));
|
||||||
|
for(i = 0; i < pidn; i++) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
free(pids);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main
|
||||||
|
*/
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -288,6 +318,7 @@ main(int argc, char *argv[])
|
|||||||
L = lua_open();
|
L = lua_open();
|
||||||
luaL_openlibs(L);
|
luaL_openlibs(L);
|
||||||
luaL_register(L, "lsyncd", lsyncdlib);
|
luaL_register(L, "lsyncd", lsyncdlib);
|
||||||
|
lua_setglobal(L, "lysncd");
|
||||||
|
|
||||||
if (luaL_loadfile(L, "lsyncd.lua")) {
|
if (luaL_loadfile(L, "lsyncd.lua")) {
|
||||||
printf("error loading lsyncd.lua: %s\n", lua_tostring(L, -1));
|
printf("error loading lsyncd.lua: %s\n", lua_tostring(L, -1));
|
||||||
@ -310,7 +341,7 @@ main(int argc, char *argv[])
|
|||||||
/* open inotify */
|
/* open inotify */
|
||||||
inotify_fd = inotify_init();
|
inotify_fd = inotify_init();
|
||||||
if (inotify_fd == -1) {
|
if (inotify_fd == -1) {
|
||||||
printf("Cannot create inotify instance! (%d:%s)", errno, strerror(errno));
|
printf("Cannot create inotify instance! (%d:%s)\n", errno, strerror(errno));
|
||||||
return -1; // ERRNO
|
return -1; // ERRNO
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -322,8 +353,8 @@ main(int argc, char *argv[])
|
|||||||
/* startup */
|
/* startup */
|
||||||
/* lua code will perform startup calls like recursive rsync */
|
/* lua code will perform startup calls like recursive rsync */
|
||||||
lua_getglobal(L, "startup");
|
lua_getglobal(L, "startup");
|
||||||
lua_call(L, 0, 0);
|
lua_call(L, 0, 1);
|
||||||
l_stackdump(L);
|
wait_startup(L);
|
||||||
|
|
||||||
/* cleanup */
|
/* cleanup */
|
||||||
close(inotify_fd);
|
close(inotify_fd);
|
||||||
|
Loading…
Reference in New Issue
Block a user