Lines Matching refs:p

139 static handler_ctx * mod_dirlisting_handler_ctx_init (plugin_data * const p) {  in mod_dirlisting_handler_ctx_init()  argument
141 memcpy(&hctx->conf, &p->conf, sizeof(plugin_config)); in mod_dirlisting_handler_ctx_init()
267 plugin_data * const p = p_d; in FREE_FUNC() local
268 if (NULL == p->cvlist) return; in FREE_FUNC()
270 for (int i = !p->cvlist[0].v.u2[1], used = p->nconfig; i < used; ++i) { in FREE_FUNC()
271 config_plugin_value_t *cpv = p->cvlist + p->cvlist[i].v.u2[0]; in FREE_FUNC()
350 static void mod_dirlisting_patch_config(request_st * const r, plugin_data * const p) { in mod_dirlisting_patch_config() argument
351 memcpy(&p->conf, &p->defaults, sizeof(plugin_config)); in mod_dirlisting_patch_config()
352 for (int i = 1, used = p->nconfig; i < used; ++i) { in mod_dirlisting_patch_config()
353 if (config_check_cond(r, (uint32_t)p->cvlist[i].k_id)) in mod_dirlisting_patch_config()
354 mod_dirlisting_merge_config(&p->conf, p->cvlist + p->cvlist[i].v.u2[0]); in mod_dirlisting_patch_config()
413 plugin_data * const p = p_d; in SETDEFAULTS_FUNC() local
414 if (!config_plugin_values_init(srv, p, cpk, "mod_dirlisting")) in SETDEFAULTS_FUNC()
419 for (int i = !p->cvlist[0].v.u2[1]; i < p->nconfig; ++i) { in SETDEFAULTS_FUNC()
420 config_plugin_value_t *cpv = p->cvlist + p->cvlist[i].v.u2[0]; in SETDEFAULTS_FUNC()
493 p->defaults.dir_listing = 0; in SETDEFAULTS_FUNC()
494 p->defaults.json = 0; in SETDEFAULTS_FUNC()
495 p->defaults.hide_dot_files = 1; in SETDEFAULTS_FUNC()
496 p->defaults.hide_readme_file = 0; in SETDEFAULTS_FUNC()
497 p->defaults.hide_header_file = 0; in SETDEFAULTS_FUNC()
498 p->defaults.encode_readme = 1; in SETDEFAULTS_FUNC()
499 p->defaults.encode_header = 1; in SETDEFAULTS_FUNC()
500 p->defaults.auto_layout = 1; in SETDEFAULTS_FUNC()
503 if (p->nconfig > 0 && p->cvlist->v.u2[1]) { in SETDEFAULTS_FUNC()
504 const config_plugin_value_t *cpv = p->cvlist + p->cvlist->v.u2[0]; in SETDEFAULTS_FUNC()
506 mod_dirlisting_merge_config(&p->defaults, cpv); in SETDEFAULTS_FUNC()
576 static void http_list_directory_include_file(request_st * const r, const handler_ctx * const p, int… in http_list_directory_include_file() argument
580 path = p->conf.show_header; in http_list_directory_include_file()
581 encode = p->conf.encode_header; in http_list_directory_include_file()
584 path = p->conf.show_readme; in http_list_directory_include_file()
585 encode = p->conf.encode_readme; in http_list_directory_include_file()
844 static void http_list_directory_header(request_st * const r, const handler_ctx * const p) { in http_list_directory_header() argument
847 if (p->conf.auto_layout) { in http_list_directory_header()
854 if (p->conf.encoding) { in http_list_directory_header()
857 BUF_PTR_LEN(p->conf.encoding), in http_list_directory_header()
864 if (p->conf.external_css) { in http_list_directory_header()
868 BUF_PTR_LEN(p->conf.external_css), in http_list_directory_header()
910 if (p->conf.show_header) { in http_list_directory_header()
911 http_list_directory_include_file(r, p, 1);/*0 for readme; 1 for header*/ in http_list_directory_header()
944 static void http_list_directory_footer(request_st * const r, const handler_ctx * const p) { in http_list_directory_footer() argument
953 if (p->conf.show_readme) { in http_list_directory_footer()
954 http_list_directory_include_file(r, p, 0);/*0 for readme; 1 for header*/ in http_list_directory_footer()
957 if (p->conf.auto_layout) { in http_list_directory_footer()
960 p->conf.set_footer in http_list_directory_footer()
961 ? p->conf.set_footer in http_list_directory_footer()
971 if (p->conf.external_js) in http_list_directory_footer()
974 BUF_PTR_LEN(p->conf.external_js), in http_list_directory_footer()
1032 static int http_read_directory(handler_ctx * const p) { in http_read_directory() argument
1034 const int hide_dotfiles = p->conf.hide_dot_files; in http_read_directory()
1035 const uint32_t name_max = p->name_max; in http_read_directory()
1038 while (++count < DIRLIST_BATCH && (dent = readdir(p->dp)) != NULL) { in http_read_directory()
1050 if (p->conf.hide_readme_file in http_read_directory()
1051 && p->conf.show_readme in http_read_directory()
1052 && buffer_eq_slen(p->conf.show_readme, d_name, dsz)) in http_read_directory()
1054 if (p->conf.hide_header_file in http_read_directory()
1055 && p->conf.show_header in http_read_directory()
1056 && buffer_eq_slen(p->conf.show_header, d_name, dsz)) in http_read_directory()
1062 if (p->conf.excludes in http_read_directory()
1063 && mod_dirlisting_exclude(p->conf.excludes, d_name, dsz)) in http_read_directory()
1078 memcpy(p->path_file, d_name, dsz + 1); in http_read_directory()
1079 if (stat(p->path, &st) != 0) in http_read_directory()
1083 if (0 != fstatat(p->dfd, d_name, &st, 0)) in http_read_directory()
1087 if (p->jb) { /* json output */ in http_read_directory()
1088 if (__builtin_expect( (p->jcomma), 1))/*(to avoid excess comma)*/ in http_read_directory()
1089 buffer_append_string_len(p->jb, CONST_STR_LEN(",{\"name\":\"")); in http_read_directory()
1091 p->jcomma = 1; in http_read_directory()
1092 buffer_append_string_len(p->jb, CONST_STR_LEN( "{\"name\":\"")); in http_read_directory()
1094 buffer_append_bs_escaped_json(p->jb, d_name, dsz); in http_read_directory()
1115 buffer_append_iovec(p->jb, iov, sizeof(iov)/sizeof(*iov)); in http_read_directory()
1119 dirls_list_t * const list = !S_ISDIR(st.st_mode) ? &p->files : &p->dirs; in http_read_directory()
1132 closedir(p->dp); in http_read_directory()
1133 p->dp = NULL; in http_read_directory()
1301 static handler_t mod_dirlisting_cache_check (request_st * const r, plugin_data * const p);
1311 plugin_data *p = p_d; in URIHANDLER_FUNC() local
1319 mod_dirlisting_patch_config(r, p); in URIHANDLER_FUNC()
1321 if (!p->conf.dir_listing) return HANDLER_GO_ON; in URIHANDLER_FUNC()
1347 p->conf.json = (vb && strstr(vb->ptr, "application/json")); /*(coarse)*/ in URIHANDLER_FUNC()
1350 if (p->conf.cache) { in URIHANDLER_FUNC()
1351 handler_t rc = mod_dirlisting_cache_check(r, p); in URIHANDLER_FUNC()
1360 if (p->processing == dirlist_max_in_progress) { in URIHANDLER_FUNC()
1368 handler_ctx * const hctx = mod_dirlisting_handler_ctx_init(p); in URIHANDLER_FUNC()
1389 ++p->processing; in URIHANDLER_FUNC()
1391 if (p->conf.json) { in URIHANDLER_FUNC()
1395 if (p->conf.cache) in URIHANDLER_FUNC()
1404 r->plugin_ctx[p->id] = hctx; in URIHANDLER_FUNC()
1405 r->handler_module = p->self; in URIHANDLER_FUNC()
1406 return mod_dirlisting_subrequest(r, p); in URIHANDLER_FUNC()
1411 plugin_data * const p = p_d; in SUBREQUEST_FUNC() local
1412 handler_ctx * const hctx = r->plugin_ctx[p->id]; in SUBREQUEST_FUNC()
1429 mod_dirlisting_reset(r, p); /*(release resources, including hctx)*/ in SUBREQUEST_FUNC()
1466 static handler_t mod_dirlisting_cache_check (request_st * const r, plugin_data * const p) { in mod_dirlisting_cache_check() argument
1470 buffer_copy_path_len2(tb, BUF_PTR_LEN(p->conf.cache->path), in mod_dirlisting_cache_check()
1472 buffer_append_string_len(tb, p->conf.json ? "dirlist.json" : "dirlist.html", in mod_dirlisting_cache_check()
1478 TIME64_CAST(sce->st.st_mtime) + p->conf.cache->max_age - log_epoch_secs; in mod_dirlisting_cache_check()
1482 !p->conf.json in mod_dirlisting_cache_check()
1483 ? mod_dirlisting_content_type(r, p->conf.encoding) in mod_dirlisting_cache_check()
1555 char *p = dir+off; in mkdir_recursive() local
1556 if (*p != '/') { in mkdir_recursive()
1557 if (off && p[-1] == '/') in mkdir_recursive()
1558 --p; in mkdir_recursive()
1565 *p = '\0'; in mkdir_recursive()
1567 *p = '/'; in mkdir_recursive()
1569 } while ((p = strchr(p+1, '/')) != NULL); in mkdir_recursive()
1658 int mod_dirlisting_plugin_init(plugin *p);
1659 int mod_dirlisting_plugin_init(plugin *p) { in mod_dirlisting_plugin_init() argument
1660 p->version = LIGHTTPD_VERSION_ID; in mod_dirlisting_plugin_init()
1661 p->name = "dirlisting"; in mod_dirlisting_plugin_init()
1663 p->init = mod_dirlisting_init; in mod_dirlisting_plugin_init()
1664 p->handle_subrequest_start = mod_dirlisting_subrequest_start; in mod_dirlisting_plugin_init()
1665 p->handle_subrequest = mod_dirlisting_subrequest; in mod_dirlisting_plugin_init()
1666 p->handle_request_reset = mod_dirlisting_reset; in mod_dirlisting_plugin_init()
1667 p->set_defaults = mod_dirlisting_set_defaults; in mod_dirlisting_plugin_init()
1668 p->cleanup = mod_dirlisting_free; in mod_dirlisting_plugin_init()