2
0
Fork 0

Fix lua api for vr:stat(filename)

This commit is contained in:
Stefan Bühler 2009-11-12 22:02:55 +01:00
parent dbfad84946
commit 4e6e5e54c5
1 changed files with 16 additions and 5 deletions

View File

@ -202,6 +202,12 @@ static int lua_vrequest_debug(lua_State *L) {
return 0;
}
/* st, res, errno, msg = vr:stat(filename)
* st: stat data (nil if not available (yet))
* res: error code (HANDLE_GO_ON if successful)
* errno: errno returned by stat() (only for HANDLER_ERROR)
* msg: error message for errno
*/
static int lua_vrequest_stat(lua_State *L) {
liVRequest *vr;
GString *path;
@ -228,19 +234,24 @@ static int lua_vrequest_stat(lua_State *L) {
res = li_stat_cache_get(vr, path, &st, &err, NULL);
switch (res) {
case LI_HANDLER_GO_ON:
return li_lua_push_stat(L, &st);
case LI_HANDLER_WAIT_FOR_EVENT:
li_lua_push_stat(L, &st);
lua_pushinteger(L, res);
return 1;
return 2;
case LI_HANDLER_WAIT_FOR_EVENT:
lua_pushnil(L);
lua_pushinteger(L, res);
return 2;
case LI_HANDLER_ERROR:
lua_pushnil(L);
lua_pushinteger(L, res);
lua_pushinteger(L, err);
lua_pushstring(L, g_strerror(err));
return 3;
return 4;
case LI_HANDLER_COMEBACK:
VR_ERROR(vr, "%s", "Unexpected return value from li_stat_cache_get: LI_HANDLER_COMEBACK");
lua_pushnil(L);
lua_pushinteger(L, LI_HANDLER_ERROR);
return 1;
return 2;
}
return 0;