Lines Matching refs:p
73 static handler_ctx * handler_ctx_init(plugin_data *p, log_error_st *errh) { in handler_ctx_init() argument
76 hctx->timefmt = &p->timefmt; in handler_ctx_init()
77 hctx->stat_fn = &p->stat_fn; in handler_ctx_init()
78 hctx->ssi_vars = p->ssi_vars; in handler_ctx_init()
79 hctx->ssi_cgi_env = p->ssi_cgi_env; in handler_ctx_init()
80 memcpy(&hctx->conf, &p->conf, sizeof(plugin_config)); in handler_ctx_init()
93 plugin_data * const p = ck_calloc(1, sizeof(*p)); in INIT_FUNC() local
94 p->ssi_vars = array_init(8); in INIT_FUNC()
95 p->ssi_cgi_env = array_init(32); in INIT_FUNC()
96 return p; in INIT_FUNC()
100 plugin_data *p = p_d; in FREE_FUNC() local
101 array_free(p->ssi_vars); in FREE_FUNC()
102 array_free(p->ssi_cgi_env); in FREE_FUNC()
103 free(p->timefmt.ptr); in FREE_FUNC()
104 free(p->stat_fn.ptr); in FREE_FUNC()
135 static void mod_ssi_patch_config(request_st * const r, plugin_data * const p) { in mod_ssi_patch_config() argument
136 memcpy(&p->conf, &p->defaults, sizeof(plugin_config)); in mod_ssi_patch_config()
137 for (int i = 1, used = p->nconfig; i < used; ++i) { in mod_ssi_patch_config()
138 if (config_check_cond(r, (uint32_t)p->cvlist[i].k_id)) in mod_ssi_patch_config()
139 mod_ssi_merge_config(&p->conf, p->cvlist + p->cvlist[i].v.u2[0]); in mod_ssi_patch_config()
165 plugin_data * const p = p_d; in SETDEFAULTS_FUNC() local
166 if (!config_plugin_values_init(srv, p, cpk, "mod_ssi")) in SETDEFAULTS_FUNC()
171 for (int i = !p->cvlist[0].v.u2[1]; i < p->nconfig; ++i) { in SETDEFAULTS_FUNC()
172 config_plugin_value_t *cpv = p->cvlist + p->cvlist[i].v.u2[0]; in SETDEFAULTS_FUNC()
191 p->defaults.ssi_exec = 1; in SETDEFAULTS_FUNC()
194 if (p->nconfig > 0 && p->cvlist->v.u2[1]) { in SETDEFAULTS_FUNC()
195 const config_plugin_value_t *cpv = p->cvlist + p->cvlist->v.u2[0]; in SETDEFAULTS_FUNC()
197 mod_ssi_merge_config(&p->defaults, cpv); in SETDEFAULTS_FUNC()
225 handler_ctx *p; member
280 log_error(t->p->errh, __FILE__, __LINE__, in ssi_expr_tokenizer()
326 log_error(t->p->errh, __FILE__, __LINE__, in ssi_expr_tokenizer()
336 log_error(t->p->errh, __FILE__, __LINE__, in ssi_expr_tokenizer()
359 log_error(t->p->errh, __FILE__, __LINE__, in ssi_expr_tokenizer()
371 log_error(t->p->errh, __FILE__, __LINE__, in ssi_expr_tokenizer()
389 array_get_element_klen(t->p->ssi_cgi_env, var, varlen)) in ssi_expr_tokenizer()
391 array_get_element_klen(t->p->ssi_vars, var, varlen))) in ssi_expr_tokenizer()
484 log_error(t->p->errh, __FILE__, __LINE__, in ssi_eval_expr_loop()
519 static int ssi_eval_expr(handler_ctx *p, const char *expr) { in ssi_eval_expr() argument
526 t.p = p; in ssi_eval_expr()
546 static int build_ssi_cgi_vars(request_st * const r, handler_ctx * const p) { in build_ssi_cgi_vars() argument
557 array_reset_data_strings(p->ssi_cgi_env); in build_ssi_cgi_vars()
559 if (0 != http_cgi_headers(r, &opts, ssi_env_add, p->ssi_cgi_env)) { in build_ssi_cgi_vars()
583 static int mod_ssi_process_file(request_st *r, handler_ctx *p, struct stat *st);
585 static int process_ssi_stmt(request_st * const r, handler_ctx * const p, const char ** const l, siz… in process_ssi_stmt() argument
679 chunkqueue * const cq = &p->wq; in process_ssi_stmt()
756 if (p->if_is_false) break; in process_ssi_stmt()
786 mod_ssi_timefmt(tb, p->timefmt, in process_ssi_stmt()
832 …if (NULL != (ds = (const data_string *)array_get_element_klen(p->ssi_cgi_env, var_val, strlen(var_… in process_ssi_stmt()
833 …NULL != (ds = (const data_string *)array_get_element_klen(p->ssi_vars, var_val, strlen(var_val))))… in process_ssi_stmt()
874 if (p->if_is_false) break; in process_ssi_stmt()
890 buffer_copy_path_len2(p->stat_fn, in process_ssi_stmt()
948 buffer_copy_path_len2(p->stat_fn, in process_ssi_stmt()
956 buffer_copy_path_len2(p->stat_fn, in process_ssi_stmt()
963 && 0 != stat_cache_path_contains_symlink(p->stat_fn, r->conf.errh)) { in process_ssi_stmt()
967 int fd = stat_cache_open_rdonly_fstat(p->stat_fn, &stb, r->conf.follow_symlink); in process_ssi_stmt()
972 if (p->sizefmt) { in process_ssi_stmt()
989 mod_ssi_timefmt(tb, p->timefmt, stb.st_mtime, 1); in process_ssi_stmt()
997 if (file_path || 0 == p->conf.ssi_recursion_max) { in process_ssi_stmt()
999 chunkqueue_append_file_fd(cq, p->stat_fn, fd, 0, stb.st_size); in process_ssi_stmt()
1005 if (p->ssi_recursion_depth >= p->conf.ssi_recursion_max) { in process_ssi_stmt()
1011 if (buffer_is_equal(&r->physical.path, p->stat_fn)) { in process_ssi_stmt()
1025 r->physical.path = *p->stat_fn; in process_ssi_stmt()
1026 memset(p->stat_fn, 0, sizeof(buffer)); in process_ssi_stmt()
1036 ++p->ssi_recursion_depth; in process_ssi_stmt()
1037 mod_ssi_process_file(r, p, &stb); in process_ssi_stmt()
1038 --p->ssi_recursion_depth; in process_ssi_stmt()
1044 free(p->stat_fn->ptr); in process_ssi_stmt()
1045 *p->stat_fn = r->physical.path; in process_ssi_stmt()
1055 "ssi: stating %s failed", p->stat_fn->ptr); in process_ssi_stmt()
1072 if (p->if_is_false) break; in process_ssi_stmt()
1075 array_set_key_value(p->ssi_vars, key, strlen(key), val, strlen(val)); in process_ssi_stmt()
1086 if (p->if_is_false) break; in process_ssi_stmt()
1090 buffer_copy_string(p->timefmt, l[i+1]); in process_ssi_stmt()
1093 p->sizefmt = 1; in process_ssi_stmt()
1095 p->sizefmt = 0; in process_ssi_stmt()
1108 if (p->if_is_false) break; in process_ssi_stmt()
1112 for (i = 0; i < p->ssi_vars->used; i++) { in process_ssi_stmt()
1113 data_string *ds = (data_string *)p->ssi_vars->sorted[i]; in process_ssi_stmt()
1119 for (i = 0; i < p->ssi_cgi_env->used; i++) { in process_ssi_stmt()
1120 data_string *ds = (data_string *)p->ssi_cgi_env->sorted[i]; in process_ssi_stmt()
1133 log_error_st *errh = p->errh; in process_ssi_stmt()
1135 if (!p->conf.ssi_exec) { /* <!--#exec ... --> disabled by config */ in process_ssi_stmt()
1148 if (p->if_is_false) break; in process_ssi_stmt()
1209 if ((!p->if_is_false) && in process_ssi_stmt()
1210 ((p->if_is_false_level == 0) || in process_ssi_stmt()
1211 (p->if_level < p->if_is_false_level))) { in process_ssi_stmt()
1212 switch (ssi_eval_expr(p, expr)) { in process_ssi_stmt()
1215 p->if_is_false = 1; in process_ssi_stmt()
1216 p->if_is_false_level = p->if_level; in process_ssi_stmt()
1219 p->if_is_false = 0; in process_ssi_stmt()
1224 p->if_level++; in process_ssi_stmt()
1229 p->if_level--; in process_ssi_stmt()
1231 if (p->if_is_false) { in process_ssi_stmt()
1232 if ((p->if_level == p->if_is_false_level) && in process_ssi_stmt()
1233 (p->if_is_false_endif == 0)) { in process_ssi_stmt()
1234 p->if_is_false = 0; in process_ssi_stmt()
1237 p->if_is_false = 1; in process_ssi_stmt()
1239 p->if_is_false_level = p->if_level; in process_ssi_stmt()
1241 p->if_level++; in process_ssi_stmt()
1261 p->if_level--; in process_ssi_stmt()
1263 if (p->if_level == p->if_is_false_level) { in process_ssi_stmt()
1264 if ((p->if_is_false) && in process_ssi_stmt()
1265 (p->if_is_false_endif == 0)) { in process_ssi_stmt()
1266 switch (ssi_eval_expr(p, expr)) { in process_ssi_stmt()
1269 p->if_is_false = 1; in process_ssi_stmt()
1270 p->if_is_false_level = p->if_level; in process_ssi_stmt()
1273 p->if_is_false = 0; in process_ssi_stmt()
1277 p->if_is_false = 1; in process_ssi_stmt()
1278 p->if_is_false_level = p->if_level; in process_ssi_stmt()
1279 p->if_is_false_endif = 1; in process_ssi_stmt()
1283 p->if_level++; in process_ssi_stmt()
1288 p->if_level--; in process_ssi_stmt()
1290 if (p->if_level == p->if_is_false_level) { in process_ssi_stmt()
1291 p->if_is_false = 0; in process_ssi_stmt()
1292 p->if_is_false_endif = 0; in process_ssi_stmt()
1383 static void mod_ssi_parse_ssi_stmt(request_st * const r, handler_ctx * const p, char * const s, int… in mod_ssi_parse_ssi_stmt() argument
1400 chunkqueue_append_mem(&p->wq, s, len); /* append stmt as-is */ in mod_ssi_parse_ssi_stmt()
1428 process_ssi_stmt(r, p, (const char **)l, 1+(n>>1), st); in mod_ssi_parse_ssi_stmt()
1459 static void mod_ssi_read_fd(request_st * const r, handler_ctx * const p, struct stat * const st, in… in mod_ssi_read_fd() argument
1464 chunkqueue * const cq = &p->wq; in mod_ssi_read_fd()
1480 if (prelen - pretag && !p->if_is_false) { in mod_ssi_read_fd()
1486 mod_ssi_parse_ssi_stmt(r, p, buf+prelen, len, st); in mod_ssi_read_fd()
1512 if (prelen - pretag && !p->if_is_false) { in mod_ssi_read_fd()
1522 if (!p->if_is_false) { in mod_ssi_read_fd()
1544 if (!p->if_is_false) { in mod_ssi_read_fd()
1556 static int mod_ssi_process_file(request_st * const r, handler_ctx * const p, struct stat * const st… in mod_ssi_process_file() argument
1564 mod_ssi_read_fd(r, p, st, fd); in mod_ssi_process_file()
1571 static int mod_ssi_handle_request(request_st * const r, handler_ctx * const p) { in mod_ssi_handle_request() argument
1576 buffer_clear(p->timefmt); in mod_ssi_handle_request()
1577 array_reset_data_strings(p->ssi_vars); in mod_ssi_handle_request()
1578 array_reset_data_strings(p->ssi_cgi_env); in mod_ssi_handle_request()
1579 build_ssi_cgi_vars(r, p); in mod_ssi_handle_request()
1584 if (mod_ssi_process_file(r, p, &st)) return -1; in mod_ssi_handle_request()
1589 if (!p->conf.content_type) { in mod_ssi_handle_request()
1592 …set(r, HTTP_HEADER_CONTENT_TYPE, CONST_STR_LEN("Content-Type"), BUF_PTR_LEN(p->conf.content_type)); in mod_ssi_handle_request()
1595 if (p->conf.conditional_requests) { in mod_ssi_handle_request()
1621 plugin_data *p = p_d; in URIHANDLER_FUNC() local
1627 mod_ssi_patch_config(r, p); in URIHANDLER_FUNC()
1628 if (NULL == p->conf.ssi_extension) return HANDLER_GO_ON; in URIHANDLER_FUNC()
1630 if (array_match_value_suffix(p->conf.ssi_extension, &r->physical.path)) { in URIHANDLER_FUNC()
1631 r->plugin_ctx[p->id] = handler_ctx_init(p, r->conf.errh); in URIHANDLER_FUNC()
1632 r->handler_module = p->self; in URIHANDLER_FUNC()
1639 plugin_data *p = p_d; in SUBREQUEST_FUNC() local
1640 handler_ctx *hctx = r->plugin_ctx[p->id]; in SUBREQUEST_FUNC()
1660 plugin_data *p = p_d; in mod_ssi_handle_request_reset() local
1661 handler_ctx *hctx = r->plugin_ctx[p->id]; in mod_ssi_handle_request_reset()
1664 r->plugin_ctx[p->id] = NULL; in mod_ssi_handle_request_reset()
1672 int mod_ssi_plugin_init(plugin *p);
1673 int mod_ssi_plugin_init(plugin *p) { in mod_ssi_plugin_init() argument
1674 p->version = LIGHTTPD_VERSION_ID; in mod_ssi_plugin_init()
1675 p->name = "ssi"; in mod_ssi_plugin_init()
1677 p->init = mod_ssi_init; in mod_ssi_plugin_init()
1678 p->handle_subrequest_start = mod_ssi_physical_path; in mod_ssi_plugin_init()
1679 p->handle_subrequest = mod_ssi_handle_subrequest; in mod_ssi_plugin_init()
1680 p->handle_request_reset = mod_ssi_handle_request_reset; in mod_ssi_plugin_init()
1681 p->set_defaults = mod_ssi_set_defaults; in mod_ssi_plugin_init()
1682 p->cleanup = mod_ssi_free; in mod_ssi_plugin_init()