mirror of
https://github.com/apache/httpd.git
synced 2025-08-08 15:02:10 +03:00
Added function to get all entries of a directory.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1476601 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -1192,6 +1192,46 @@ static int lua_ap_set_document_root(lua_State *L)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* lua_ap_getdir; r:get_direntries(directory) - Gets all entries of a
|
||||||
|
* directory and returns the directory info as a table
|
||||||
|
*/
|
||||||
|
static int lua_ap_getdir(lua_State *L)
|
||||||
|
{
|
||||||
|
request_rec *r;
|
||||||
|
apr_dir_t *thedir;
|
||||||
|
apr_finfo_t file_info;
|
||||||
|
apr_status_t status;
|
||||||
|
const char *directory;
|
||||||
|
|
||||||
|
luaL_checktype(L, 1, LUA_TUSERDATA);
|
||||||
|
luaL_checktype(L, 2, LUA_TSTRING);
|
||||||
|
r = ap_lua_check_request_rec(L, 1);
|
||||||
|
directory = lua_tostring(L, 2);
|
||||||
|
if (apr_dir_open(&thedir, directory, r->pool) == APR_SUCCESS) {
|
||||||
|
int i = 0;
|
||||||
|
lua_newtable(L);
|
||||||
|
do {
|
||||||
|
status = apr_dir_read(&file_info, APR_FINFO_NAME, thedir);
|
||||||
|
if (APR_STATUS_IS_INCOMPLETE(status)) {
|
||||||
|
continue; /* ignore un-stat()able files */
|
||||||
|
}
|
||||||
|
else if (status != APR_SUCCESS) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
lua_pushinteger(L, ++i);
|
||||||
|
lua_pushstring(L, file_info.name);
|
||||||
|
lua_settable(L, -3);
|
||||||
|
|
||||||
|
} while (1);
|
||||||
|
apr_dir_close(thedir);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* lua_ap_stat; r:stat(filename) - Runs stat on a file and returns the file
|
* lua_ap_stat; r:stat(filename) - Runs stat on a file and returns the file
|
||||||
* info as a table
|
* info as a table
|
||||||
@@ -1985,6 +2025,8 @@ AP_LUA_DECLARE(void) ap_lua_load_request_lmodule(lua_State *L, apr_pool_t *p)
|
|||||||
makefun(&lua_db_acquire, APL_REQ_FUNTYPE_LUACFUN, p));
|
makefun(&lua_db_acquire, APL_REQ_FUNTYPE_LUACFUN, p));
|
||||||
apr_hash_set(dispatch, "stat", APR_HASH_KEY_STRING,
|
apr_hash_set(dispatch, "stat", APR_HASH_KEY_STRING,
|
||||||
makefun(&lua_ap_stat, APL_REQ_FUNTYPE_LUACFUN, p));
|
makefun(&lua_ap_stat, APL_REQ_FUNTYPE_LUACFUN, p));
|
||||||
|
apr_hash_set(dispatch, "get_direntries", APR_HASH_KEY_STRING,
|
||||||
|
makefun(&lua_ap_getdir, APL_REQ_FUNTYPE_LUACFUN, p));
|
||||||
apr_hash_set(dispatch, "regex", APR_HASH_KEY_STRING,
|
apr_hash_set(dispatch, "regex", APR_HASH_KEY_STRING,
|
||||||
makefun(&lua_ap_regex, APL_REQ_FUNTYPE_LUACFUN, p));
|
makefun(&lua_ap_regex, APL_REQ_FUNTYPE_LUACFUN, p));
|
||||||
apr_hash_set(dispatch, "sleep", APR_HASH_KEY_STRING,
|
apr_hash_set(dispatch, "sleep", APR_HASH_KEY_STRING,
|
||||||
|
Reference in New Issue
Block a user