Lines Matching refs:sc
13 script *sc; in script_init() local
15 sc = calloc(1, sizeof(*sc)); in script_init()
16 sc->name = buffer_init(); in script_init()
17 sc->etag = buffer_init(); in script_init()
19 return sc; in script_init()
22 static void script_free(script *sc) { in script_free() argument
23 if (!sc) return; in script_free()
25 lua_pop(sc->L, 1); /* the function copy */ in script_free()
27 buffer_free(sc->name); in script_free()
28 buffer_free(sc->etag); in script_free()
30 lua_close(sc->L); in script_free()
32 free(sc); in script_free()
59 script *sc = NULL; in script_cache_get_script() local
63 sc = cache->ptr[i]; in script_cache_get_script()
65 if (buffer_is_equal(name, sc->name)) { in script_cache_get_script()
66 sc->last_used = time(NULL); in script_cache_get_script()
70 if (lua_gettop(sc->L) == 0) break; in script_cache_get_script()
72 if (HANDLER_ERROR == stat_cache_get_entry(srv, con, sc->name, &sce)) { in script_cache_get_script()
73 lua_pop(sc->L, 1); /* pop the old function */ in script_cache_get_script()
77 if (!buffer_is_equal(sce->etag, sc->etag)) { in script_cache_get_script()
79 lua_pop(sc->L, 1); in script_cache_get_script()
83 assert(lua_isfunction(sc->L, -1)); in script_cache_get_script()
84 lua_pushvalue(sc->L, -1); /* copy the function-reference */ in script_cache_get_script()
86 return sc->L; in script_cache_get_script()
89 sc = NULL; in script_cache_get_script()
94 if (sc == NULL) { in script_cache_get_script()
95 sc = script_init(); in script_cache_get_script()
105 cache->ptr[cache->used++] = sc; in script_cache_get_script()
107 buffer_copy_string_buffer(sc->name, name); in script_cache_get_script()
109 sc->L = luaL_newstate(); in script_cache_get_script()
110 luaL_openlibs(sc->L); in script_cache_get_script()
113 sc->last_used = time(NULL); in script_cache_get_script()
115 if (0 != luaL_loadfile(sc->L, name->ptr)) { in script_cache_get_script()
118 return sc->L; in script_cache_get_script()
121 if (HANDLER_GO_ON == stat_cache_get_entry(srv, con, sc->name, &sce)) { in script_cache_get_script()
122 buffer_copy_string_buffer(sc->etag, sce->etag); in script_cache_get_script()
131 assert(lua_isfunction(sc->L, -1)); in script_cache_get_script()
132 lua_pushvalue(sc->L, -1); /* copy the function-reference */ in script_cache_get_script()
134 return sc->L; in script_cache_get_script()