/* * Copyright (C) Yichun Zhang (agentzh) */ #include "ddebug.h" #include "ngx_http_lua_common.h" #include "api/ngx_http_lua_api.h" #include "ngx_http_lua_util.h" lua_State * ngx_http_lua_get_global_state(ngx_conf_t *cf) { ngx_http_lua_main_conf_t *lmcf; lmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_lua_module); return lmcf->lua; } ngx_http_request_t * ngx_http_lua_get_request(lua_State *L) { return ngx_http_lua_get_req(L); } ngx_int_t ngx_http_lua_add_package_preload(ngx_conf_t *cf, const char *package, lua_CFunction func) { lua_State *L; ngx_http_lua_main_conf_t *lmcf; ngx_http_lua_preload_hook_t *hook; lmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_lua_module); L = lmcf->lua; if (L) { lua_getglobal(L, "package"); lua_getfield(L, -1, "preload"); lua_pushcfunction(L, func); lua_setfield(L, -2, package); lua_pop(L, 2); return NGX_OK; } /* L == NULL */ if (lmcf->preload_hooks == NULL) { lmcf->preload_hooks = ngx_array_create(cf->pool, 4, sizeof(ngx_http_lua_preload_hook_t)); if (lmcf->preload_hooks == NULL) { return NGX_ERROR; } } hook = ngx_array_push(lmcf->preload_hooks); if (hook == NULL) { return NGX_ERROR; } hook->package = (u_char *) package; hook->loader = func; return NGX_OK; } /* vi:set ft=c ts=4 sw=4 et fdm=marker: */