Warmcat homepage andy@warmcat.com
libwebsockets
{"schema":"libjg2-1", "vpath":"/git/", "avatar":"/git/avatar/", "alang":"", "gen_ut":1745907717, "reponame":"cgit", "desc":"CGI gitweb", "owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://warmcat.com/repo/cgit", "f":3, "items": [ {"schema":"libjg2-1", "cid":"d302d83ffde743e4271a8d6b30d2df80", "commit": {"type":"commit", "time": 1530592973, "time_ofs": 480, "oid_tree": { "oid": "abd425c9bfa69367a5f017a084e69c0a0c60e78f", "alias": []}, "oid":{ "oid": "e4db7fe94c46784ba96336f70afa9286181b4dc7", "alias": []}, "msg": "about: remove all implementation and filter", "sig_commit": { "git_time": { "time": 1530592973, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }, "sig_author": { "git_time": { "time": 1530590922, "offset": 480 }, "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" }}, "body": "about: remove all implementation and filter\n\n\u0022about\u0022 was a special-cased attempt to do what the\ninline render stuff does generally.\n\nThere is no longer any need for an \u0022about page\u0022,\nits config or its filter.\n\nSigned-off-by: Andy Green \u003candy@warmcat.com\u003e" , "diff": "diff --git a/cgit.c b/cgit.c\nindex 5a7242e..e71911a 100644\n--- a/cgit.c\n+++ b/cgit.c\n@@ -101,9 +101,7 @@ static void repo_config(struct cgit_repo *repo, const char *name, const char *va\n \n \t\tstring_list_append(\u0026repo-\u003einline_readme, value);\n \t} else if (ctx.cfg.enable_filter_overrides) {\n-\t\tif (!strcmp(name, \u0022about-filter\u0022))\n-\t\t\trepo-\u003eabout_filter \u003d cgit_new_filter(value, ABOUT);\n-\t\telse if (!strcmp(name, \u0022commit-filter\u0022))\n+\t\tif (!strcmp(name, \u0022commit-filter\u0022))\n \t\t\trepo-\u003ecommit_filter \u003d cgit_new_filter(value, COMMIT);\n \t\telse if (!strcmp(name, \u0022source-filter\u0022))\n \t\t\trepo-\u003esource_filter \u003d cgit_new_filter(value, SOURCE);\n@@ -134,8 +132,6 @@ static void config_cb(const char *name, const char *value)\n \t\tctx.cfg.root_desc \u003d xstrdup(value);\n \telse if (!strcmp(name, \u0022root-desc-html\u0022))\n \t\tctx.cfg.root_desc_html \u003d xstrdup(value);\n-\telse if (!strcmp(name, \u0022root-readme\u0022))\n-\t\tctx.cfg.root_readme \u003d xstrdup(value);\n \telse if (!strcmp(name, \u0022css\u0022))\n \t\tstring_list_append(\u0026ctx.cfg.css, xstrdup(value));\n \telse if (!strcmp(name, \u0022js\u0022))\n@@ -210,14 +206,10 @@ static void config_cb(const char *name, const char *value)\n \t\tctx.cfg.cache_static_ttl \u003d atoi(value);\n \telse if (!strcmp(name, \u0022cache-dynamic-ttl\u0022))\n \t\tctx.cfg.cache_dynamic_ttl \u003d atoi(value);\n-\telse if (!strcmp(name, \u0022cache-about-ttl\u0022))\n-\t\tctx.cfg.cache_about_ttl \u003d atoi(value);\n \telse if (!strcmp(name, \u0022cache-snapshot-ttl\u0022))\n \t\tctx.cfg.cache_snapshot_ttl \u003d atoi(value);\n \telse if (!strcmp(name, \u0022case-sensitive-sort\u0022))\n \t\tctx.cfg.case_sensitive_sort \u003d atoi(value);\n-\telse if (!strcmp(name, \u0022about-filter\u0022))\n-\t\tctx.cfg.about_filter \u003d cgit_new_filter(value, ABOUT);\n \telse if (!strcmp(name, \u0022commit-filter\u0022))\n \t\tctx.cfg.commit_filter \u003d cgit_new_filter(value, COMMIT);\n \telse if (!strcmp(name, \u0022email-filter\u0022))\n@@ -369,7 +361,6 @@ static void prepare_context(void)\n \tctx.cfg.cache_size \u003d 0;\n \tctx.cfg.cache_max_create_time \u003d 5;\n \tctx.cfg.cache_root \u003d CGIT_CACHE_ROOT;\n-\tctx.cfg.cache_about_ttl \u003d 15;\n \tctx.cfg.cache_snapshot_ttl \u003d 5;\n \tctx.cfg.cache_repo_ttl \u003d 5;\n \tctx.cfg.cache_root_ttl \u003d 5;\n@@ -828,8 +819,6 @@ static void print_repo(FILE *f, struct cgit_repo *repo)\n \t repo-\u003eenable_log_filecount);\n \tfprintf(f, \u0022repo.enable-log-linecount\u003d%d\u005cn\u0022,\n \t repo-\u003eenable_log_linecount);\n-\tif (repo-\u003eabout_filter \u0026\u0026 repo-\u003eabout_filter !\u003d ctx.cfg.about_filter)\n-\t\tcgit_fprintf_filter(repo-\u003eabout_filter, f, \u0022repo.about-filter\u003d\u0022);\n \tif (repo-\u003ecommit_filter \u0026\u0026 repo-\u003ecommit_filter !\u003d ctx.cfg.commit_filter)\n \t\tcgit_fprintf_filter(repo-\u003ecommit_filter, f, \u0022repo.commit-filter\u003d\u0022);\n \tif (repo-\u003esource_filter \u0026\u0026 repo-\u003esource_filter !\u003d ctx.cfg.source_filter)\n@@ -1033,9 +1022,6 @@ static int calc_ttl(void)\n \tif (!ctx.qry.page)\n \t\treturn ctx.cfg.cache_repo_ttl;\n \n-\tif (!strcmp(ctx.qry.page, \u0022about\u0022))\n-\t\treturn ctx.cfg.cache_about_ttl;\n-\n \tif (!strcmp(ctx.qry.page, \u0022snapshot\u0022))\n \t\treturn ctx.cfg.cache_snapshot_ttl;\n \ndiff --git a/cgit.h b/cgit.h\nindex b00e4cd..d00199f 100644\n--- a/cgit.h\n+++ b/cgit.h\n@@ -58,7 +58,7 @@ typedef enum {\n } diff_type;\n \n typedef enum {\n-\tABOUT, COMMIT, SOURCE, EMAIL, AUTH, OWNER\n+\tCOMMIT, SOURCE, EMAIL, AUTH, OWNER\n } filter_type;\n \n struct cgit_filter {\n@@ -105,7 +105,6 @@ struct cgit_repo {\n \tint branch_sort;\n \tint commit_sort;\n \ttime_t mtime;\n-\tstruct cgit_filter *about_filter;\n \tstruct cgit_filter *commit_filter;\n \tstruct cgit_filter *source_filter;\n \tstruct cgit_filter *email_filter;\n@@ -210,7 +209,6 @@ struct cgit_config {\n \tchar *root_title;\n \tchar *root_desc;\n \tchar *root_desc_html;\n-\tchar *root_readme;\n \tchar *script_name;\n \tchar *section;\n \tchar *repository_sort;\n@@ -223,7 +221,6 @@ struct cgit_config {\n \tint cache_root_ttl;\n \tint cache_scanrc_ttl;\n \tint cache_static_ttl;\n-\tint cache_about_ttl;\n \tint cache_snapshot_ttl;\n \tint case_sensitive_sort;\n \tint clientside;\n@@ -269,7 +266,6 @@ struct cgit_config {\n \tstruct string_list mimetypes;\n \tstruct string_list inline_readme;\n \tstruct string_list js;\n-\tstruct cgit_filter *about_filter;\n \tstruct cgit_filter *commit_filter;\n \tstruct cgit_filter *source_filter;\n \tstruct cgit_filter *email_filter;\ndiff --git a/cgitrc.5.txt b/cgitrc.5.txt\nindex e1a85d7..aa19f64 100644\n--- a/cgitrc.5.txt\n+++ b/cgitrc.5.txt\n@@ -26,13 +26,6 @@ defined, use its value instead.\n \n GLOBAL SETTINGS\n ---------------\n-about-filter::\n-\tSpecifies a command which will be invoked to format the content of\n-\tabout pages (both top-level and for each repository). The command will\n-\tget the content of the about-file on its STDIN, the name of the file\n-\tas the first argument, and the STDOUT from the command will be\n-\tincluded verbatim on the about page. Default value: none. See\n-\talso: \u0022FILTER API\u0022.\n \n agefile::\n \tSpecifies a path, relative to each repository path, which can be used\n@@ -54,11 +47,6 @@ branch-sort::\n \tlist, and when set to \u0022name\u0022 enables ordering by branch name. Default\n \tvalue: \u0022name\u0022.\n \n-cache-about-ttl::\n-\tNumber which specifies the time-to-live, in minutes, for the cached\n-\tversion of the repository about page. See also: \u0022CACHE\u0022. Default\n-\tvalue: \u002215\u0022.\n-\n cache-dynamic-ttl::\n \tNumber which specifies the time-to-live, in minutes, for the cached\n \tversion of repository pages accessed without a fixed SHA1. See also:\n@@ -385,11 +373,6 @@ root-desc-html::\n \tOptional additional raw html to show in the header after root-desc.\n \tDefault value: none.\n \n-root-readme::\n-\tThe content of the file specified with this option will be included\n-\tverbatim below the \u0022about\u0022 link on the repository index page. Default\n-\tvalue: none.\n-\n root-title::\n \tText printed as heading on the repository index page. Default value:\n \t\u0022Git Repository Browser\u0022.\n@@ -478,9 +461,6 @@ virtual-root::\n \n REPOSITORY SETTINGS\n -------------------\n-repo.about-filter::\n-\tOverride the default about-filter. Default value: none. See also:\n-\t\u0022enable-filter-overrides\u0022. See also: \u0022FILTER API\u0022.\n \n repo.branch-sort::\n \tFlag which, when set to \u0022age\u0022, enables date ordering in the branch ref\n@@ -609,17 +589,6 @@ repo.path::\n \tAn absolute path to the repository directory. For non-bare repositories\n \tthis is the .git-directory. Default value: none.\n \n-repo.readme::\n-\tA path (relative to \u003crepo.path\u003e) which specifies a file to include\n-\tverbatim as the \u0022About\u0022 page for this repo. You may also specify a\n-\tgit refspec by head or by hash by prepending the refspec followed by\n-\ta colon. For example, \u0022master:docs/readme.mkd\u0022. If the value begins\n-\twith a colon, i.e. \u0022:docs/readme.rst\u0022, the default branch of the\n-\trepository will be used. Sharing any file will expose that entire\n-\tdirectory tree to the \u0022/about/PATH\u0022 endpoints, so be sure that there\n-\tare no non-public files located in the same directory as the readme\n-\tfile. Default value: \u003creadme\u003e.\n-\n repo.section::\n \tOverride the current section name for this repository. Default value:\n \tnone.\n@@ -701,13 +670,6 @@ specification with the relevant string; available values are:\n \n Parameters are provided to filters as follows.\n \n-about filter::\n-\tThis filter is given a single parameter: the filename of the source\n-\tfile to filter. The filter can use the filename to determine (for\n-\texample) the type of syntax to follow when formatting the readme file.\n-\tThe about text that is to be filtered is available on standard input\n-\tand the filtered text is expected on standard output.\n-\n auth filter::\n \tThe authentication filter receives 12 parameters:\n \t - filter action, explained below, which specifies which action the\n@@ -879,10 +841,6 @@ root-title\u003dexample.com git repositories\n root-desc\u003dtracking the foobar development\n \n \n-# Include some more info about example.com on the index page\n-root-readme\u003d/var/www/htdocs/about.html\n-\n-\n # Allow download of tar.gz, tar.bz2 and zip-files\n snapshots\u003dtar.gz tar.bz2 zip\n \n@@ -903,43 +861,6 @@ mimetype.svg\u003dimage/svg+xml\n # Highlight source code with python pygments-based highlighter\n source-filter\u003d/var/www/cgit/filters/syntax-highlighting.py\n \n-# Format markdown, restructuredtext, manpages, text files, and html files\n-# through the right converters\n-about-filter\u003d/var/www/cgit/filters/about-formatting.sh\n-\n-##\n-## Search for these files in the root of the default branch of repositories\n-## for coming up with the about page:\n-##\n-readme\u003d:README.md\n-readme\u003d:readme.md\n-readme\u003d:README.mkd\n-readme\u003d:readme.mkd\n-readme\u003d:README.rst\n-readme\u003d:readme.rst\n-readme\u003d:README.html\n-readme\u003d:readme.html\n-readme\u003d:README.htm\n-readme\u003d:readme.htm\n-readme\u003d:README.txt\n-readme\u003d:readme.txt\n-readme\u003d:README\n-readme\u003d:readme\n-readme\u003d:INSTALL.md\n-readme\u003d:install.md\n-readme\u003d:INSTALL.mkd\n-readme\u003d:install.mkd\n-readme\u003d:INSTALL.rst\n-readme\u003d:install.rst\n-readme\u003d:INSTALL.html\n-readme\u003d:install.html\n-readme\u003d:INSTALL.htm\n-readme\u003d:install.htm\n-readme\u003d:INSTALL.txt\n-readme\u003d:install.txt\n-readme\u003d:INSTALL\n-readme\u003d:install\n-\n \n ##\n ## List of repositories.\n@@ -955,14 +876,12 @@ repo.url\u003dfoo\n repo.path\u003d/pub/git/foo.git\n repo.desc\u003dthe master foo repository\n repo.owner\u003dfooman@example.com\n-repo.readme\u003dinfo/web/about.html\n \n \n repo.url\u003dbar\n repo.path\u003d/pub/git/bar.git\n repo.desc\u003dthe bars for your foo\n repo.owner\u003dbarman@example.com\n-repo.readme\u003dinfo/web/about.html\n \n \n # The next repositories will be displayed under the 'extras' heading\ndiff --git a/cmd.c b/cmd.c\nindex 63f0ae5..43ddaea 100644\n--- a/cmd.c\n+++ b/cmd.c\n@@ -37,33 +37,6 @@ static void atom_fn(void)\n \tcgit_print_atom(ctx.qry.head, ctx.qry.path, ctx.cfg.max_atom_items);\n }\n \n-static void about_fn(void)\n-{\n-\tif (ctx.repo) {\n-\t\tsize_t path_info_len \u003d ctx.env.path_info ? strlen(ctx.env.path_info) : 0;\n-\t\tif (!ctx.qry.path \u0026\u0026\n-\t\t ctx.qry.url[strlen(ctx.qry.url) - 1] !\u003d '/' \u0026\u0026\n-\t\t (!path_info_len || ctx.env.path_info[path_info_len - 1] !\u003d '/')) {\n-\t\t\tchar *currenturl \u003d cgit_currenturl();\n-\t\t\tchar *redirect \u003d fmtalloc(\u0022%s/\u0022, currenturl);\n-\t\t\tcgit_redirect(redirect, true);\n-\t\t\tfree(currenturl);\n-\t\t\tfree(redirect);\n-\t\t} else if (ctx.repo-\u003ereadme.nr)\n-\t\t\tcgit_print_repo_readme(ctx.qry.path);\n-\t\telse if (ctx.repo-\u003ehomepage)\n-\t\t\tcgit_redirect(ctx.repo-\u003ehomepage, false);\n-\t\telse {\n-\t\t\tchar *currenturl \u003d cgit_currenturl();\n-\t\t\tchar *redirect \u003d fmtalloc(\u0022%s../\u0022, currenturl);\n-\t\t\tcgit_redirect(redirect, false);\n-\t\t\tfree(currenturl);\n-\t\t\tfree(redirect);\n-\t\t}\n-\t} else\n-\t\tcgit_print_site_readme();\n-}\n-\n static void blame_fn(void)\n {\n \tif (ctx.cfg.enable_blame)\n@@ -172,7 +145,6 @@ struct cgit_cmd *cgit_get_cmd(void)\n \tstatic struct cgit_cmd cmds[] \u003d {\n \t\tdef_cmd(HEAD, 1, 0, 1),\n \t\tdef_cmd(atom, 1, 0, 0),\n-\t\tdef_cmd(about, 0, 0, 0),\n \t\tdef_cmd(blame, 1, 1, 0),\n \t\tdef_cmd(blob, 1, 0, 0),\n \t\tdef_cmd(commit, 1, 1, 0),\ndiff --git a/filter.c b/filter.c\nindex 70f5b74..65875c9 100644\n--- a/filter.c\n+++ b/filter.c\n@@ -24,14 +24,12 @@ static inline void reap_filter(struct cgit_filter *filter)\n void cgit_cleanup_filters(void)\n {\n \tint i;\n-\treap_filter(ctx.cfg.about_filter);\n \treap_filter(ctx.cfg.commit_filter);\n \treap_filter(ctx.cfg.source_filter);\n \treap_filter(ctx.cfg.email_filter);\n \treap_filter(ctx.cfg.owner_filter);\n \treap_filter(ctx.cfg.auth_filter);\n \tfor (i \u003d 0; i \u003c cgit_repolist.count; ++i) {\n-\t\treap_filter(cgit_repolist.repos[i].about_filter);\n \t\treap_filter(cgit_repolist.repos[i].commit_filter);\n \t\treap_filter(cgit_repolist.repos[i].source_filter);\n \t\treap_filter(cgit_repolist.repos[i].email_filter);\n@@ -433,7 +431,6 @@ struct cgit_filter *cgit_new_filter(const char *cmd, filter_type filtertype)\n \t\t\tbreak;\n \n \t\tcase SOURCE:\n-\t\tcase ABOUT:\n \t\t\targument_count \u003d 1;\n \t\t\tbreak;\n \ndiff --git a/filters/about-formatting.sh b/filters/about-formatting.sh\ndeleted file mode 100755\nindex 85daf9c..0000000\n--- a/filters/about-formatting.sh\n+++ /dev/null\n@@ -1,27 +0,0 @@\n-#!/bin/sh\n-\n-# This may be used with the about-filter or repo.about-filter setting in cgitrc.\n-# It passes formatting of about pages to differing programs, depending on the usage.\n-\n-# Markdown support requires python and markdown-python.\n-# RestructuredText support requires python and docutils.\n-# Man page support requires groff.\n-\n-# The following environment variables can be used to retrieve the configuration\n-# of the repository for which this script is called:\n-# CGIT_REPO_URL ( \u003d repo.url setting )\n-# CGIT_REPO_NAME ( \u003d repo.name setting )\n-# CGIT_REPO_PATH ( \u003d repo.path setting )\n-# CGIT_REPO_OWNER ( \u003d repo.owner setting )\n-# CGIT_REPO_DEFBRANCH ( \u003d repo.defbranch setting )\n-# CGIT_REPO_SECTION ( \u003d section setting )\n-# CGIT_REPO_CLONE_URL ( \u003d repo.clone-url setting )\n-\n-cd \u0022$(dirname $0)/html-converters/\u0022\n-case \u0022$(printf '%s' \u0022$1\u0022 | tr '[:upper:]' '[:lower:]')\u0022 in\n-\t*.markdown|*.mdown|*.md|*.mkd) exec ./md2html; ;;\n-\t*.rst) exec ./rst2html; ;;\n-\t*.[1-9]) exec ./man2html; ;;\n-\t*.htm|*.html) exec cat; ;;\n-\t*.txt|*) exec ./txt2html; ;;\n-esac\ndiff --git a/shared.c b/shared.c\nindex 8721a6f..c4ff377 100644\n--- a/shared.c\n+++ b/shared.c\n@@ -69,7 +69,6 @@ struct cgit_repo *cgit_add_repo(const char *url)\n \tret-\u003emodule_link \u003d ctx.cfg.module_link;\n \tret-\u003ereadme \u003d ctx.cfg.readme;\n \tret-\u003emtime \u003d -1;\n-\tret-\u003eabout_filter \u003d ctx.cfg.about_filter;\n \tret-\u003ecommit_filter \u003d ctx.cfg.commit_filter;\n \tret-\u003esource_filter \u003d ctx.cfg.source_filter;\n \tret-\u003eemail_filter \u003d ctx.cfg.email_filter;\ndiff --git a/tests/setup.sh b/tests/setup.sh\nindex 7590f04..1da4a70 100755\n--- a/tests/setup.sh\n+++ b/tests/setup.sh\n@@ -134,7 +134,6 @@ repo.desc\u003dspaced repo\n repo.url\u003dfilter-exec\n repo.path\u003d$PWD/repos/filter/.git\n repo.desc\u003dfiltered repo\n-repo.about-filter\u003dexec:$FILTER_DIRECTORY/dump.sh\n repo.commit-filter\u003dexec:$FILTER_DIRECTORY/dump.sh\n repo.email-filter\u003dexec:$FILTER_DIRECTORY/dump.sh\n repo.source-filter\u003dexec:$FILTER_DIRECTORY/dump.sh\n@@ -146,7 +145,6 @@ EOF\n repo.url\u003dfilter-lua\n repo.path\u003d$PWD/repos/filter/.git\n repo.desc\u003dfiltered repo\n-repo.about-filter\u003dlua:$FILTER_DIRECTORY/dump.lua\n repo.commit-filter\u003dlua:$FILTER_DIRECTORY/dump.lua\n repo.email-filter\u003dlua:$FILTER_DIRECTORY/dump.lua\n repo.source-filter\u003dlua:$FILTER_DIRECTORY/dump.lua\ndiff --git a/tests/t0111-filter.sh b/tests/t0111-filter.sh\nindex 2fdc366..36a5309 100755\n--- a/tests/t0111-filter.sh\n+++ b/tests/t0111-filter.sh\n@@ -18,14 +18,6 @@ do\n \t\tgrep \u0022\u003ccode\u003ea+b HELLO$\u0022 tmp\n \t'\n \n-\ttest_expect_success \u0022generate filter-$prefix/about/\u0022 \u0022\n-\t\tcgit_url 'filter-$prefix/about/' \u003etmp\n-\t\u0022\n-\n-\ttest_expect_success \u0022check whether the $prefix about filter works\u0022 '\n-\t\tgrep \u0022\u003cdiv id\u003d'\u0022'\u0022'summary'\u0022'\u0022'\u003ea+b HELLO$\u0022 tmp\n-\t'\n-\n \ttest_expect_success \u0022generate filter-$prefix/commit/\u0022 \u0022\n \t\tcgit_url 'filter-$prefix/commit/' \u003etmp\n \t\u0022\ndiff --git a/ui-repolist.c b/ui-repolist.c\nindex 41424c0..4f25374 100644\n--- a/ui-repolist.c\n+++ b/ui-repolist.c\n@@ -366,14 +366,3 @@ void cgit_print_repolist(void)\n \tcgit_print_docend();\n }\n \n-void cgit_print_site_readme(void)\n-{\n-\tcgit_print_layout_start();\n-\tif (!ctx.cfg.root_readme)\n-\t\tgoto done;\n-\tcgit_open_filter(ctx.cfg.about_filter, ctx.cfg.root_readme);\n-\thtml_include(ctx.cfg.root_readme);\n-\tcgit_close_filter(ctx.cfg.about_filter);\n-done:\n-\tcgit_print_layout_end();\n-}\ndiff --git a/ui-shared.c b/ui-shared.c\nindex 0075b60..292a519 100644\n--- a/ui-shared.c\n+++ b/ui-shared.c\n@@ -1073,10 +1073,6 @@ void cgit_print_pageheader(void)\n \t\t}\n \t\thtml(\u0022\u003ctd\u003e\u0022);\n \n-\t\tif (ctx.repo-\u003ereadme.nr)\n-\t\t\treporevlink(\u0022about\u0022, \u0022about\u0022, NULL,\n-\t\t\t\t hc(\u0022about\u0022), ctx.qry.head, NULL,\n-\t\t\t\t NULL);\n \t\tcgit_summary_link(\u0022summary\u0022, NULL, hc(\u0022summary\u0022),\n \t\t\t\t ctx.qry.head);\n \t\tcgit_refs_link(\u0022refs\u0022, NULL, hc(\u0022refs\u0022), ctx.qry.head,\n@@ -1128,9 +1124,6 @@ void cgit_print_pageheader(void)\n \n \t\thtml(\u0022\u003ctd\u003e\u0022);\n \t\tsite_link(NULL, \u0022index\u0022, NULL, hc(\u0022repolist\u0022), NULL, NULL, 0, 1);\n-\t\tif (ctx.cfg.root_readme)\n-\t\t\tsite_link(\u0022about\u0022, \u0022about\u0022, NULL, hc(\u0022about\u0022),\n-\t\t\t\t NULL, NULL, 0, 1);\n \t\thtml(\u0022\u003c/td\u003e\u003ctd class\u003d'form'\u003e\u0022);\n \t\thtml(\u0022\u003cform method\u003d'get' action\u003d'\u0022);\n \t\thtml_attr(currenturl);\ndiff --git a/ui-summary.c b/ui-summary.c\nindex 8e81ac4..5c3a6f1 100644\n--- a/ui-summary.c\n+++ b/ui-summary.c\n@@ -65,84 +65,3 @@ void cgit_print_summary(void)\n \tcgit_print_layout_end();\n }\n \n-/* The caller must free the return value. */\n-static char* append_readme_path(const char *filename, const char *ref, const char *path)\n-{\n-\tchar *file, *base_dir, *full_path, *resolved_base \u003d NULL, *resolved_full \u003d NULL;\n-\t/* If a subpath is specified for the about page, make it relative\n-\t * to the directory containing the configured readme. */\n-\n-\tfile \u003d xstrdup(filename);\n-\tbase_dir \u003d dirname(file);\n-\tif (!strcmp(base_dir, \u0022.\u0022) || !strcmp(base_dir, \u0022..\u0022)) {\n-\t\tif (!ref) {\n-\t\t\tfree(file);\n-\t\t\treturn NULL;\n-\t\t}\n-\t\tfull_path \u003d xstrdup(path);\n-\t} else\n-\t\tfull_path \u003d fmtalloc(\u0022%s/%s\u0022, base_dir, path);\n-\n-\tif (!ref) {\n-\t\tresolved_base \u003d realpath(base_dir, NULL);\n-\t\tresolved_full \u003d realpath(full_path, NULL);\n-\t\tif (!resolved_base || !resolved_full || !starts_with(resolved_full, resolved_base)) {\n-\t\t\tfree(full_path);\n-\t\t\tfull_path \u003d NULL;\n-\t\t}\n-\t}\n-\n-\tfree(file);\n-\tfree(resolved_base);\n-\tfree(resolved_full);\n-\n-\treturn full_path;\n-}\n-\n-void cgit_print_repo_readme(char *path)\n-{\n-\tchar *filename, *ref, *mimetype;\n-\tint free_filename \u003d 0;\n-\n-\tmimetype \u003d get_mimetype_for_filename(path);\n-\tif (mimetype \u0026\u0026 (!strncmp(mimetype, \u0022image/\u0022, 6) || !strncmp(mimetype, \u0022video/\u0022, 6))) {\n-\t\tctx.page.mimetype \u003d mimetype;\n-\t\tctx.page.charset \u003d NULL;\n-\t\tcgit_print_plain();\n-\t\tfree(mimetype);\n-\t\treturn;\n-\t}\n-\tfree(mimetype);\n-\n-\tcgit_print_layout_start();\n-\tif (ctx.repo-\u003ereadme.nr \u003d\u003d 0)\n-\t\tgoto done;\n-\n-\tfilename \u003d ctx.repo-\u003ereadme.items[0].string;\n-\tref \u003d ctx.repo-\u003ereadme.items[0].util;\n-\n-\tif (path) {\n-\t\tfree_filename \u003d 1;\n-\t\tfilename \u003d append_readme_path(filename, ref, path);\n-\t\tif (!filename)\n-\t\t\tgoto done;\n-\t}\n-\n-\t/* Print the calculated readme, either from the git repo or from the\n-\t * filesystem, while applying the about-filter.\n-\t */\n-\thtml(\u0022\u003cdiv id\u003d'summary'\u003e\u0022);\n-\tcgit_open_filter(ctx.repo-\u003eabout_filter, filename);\n-\tif (ref)\n-\t\tcgit_print_file(filename, ref, 1);\n-\telse\n-\t\thtml_include(filename);\n-\tcgit_close_filter(ctx.repo-\u003eabout_filter);\n-\n-\thtml(\u0022\u003c/div\u003e\u0022);\n-\tif (free_filename)\n-\t\tfree(filename);\n-\n-done:\n-\tcgit_print_layout_end();\n-}\ndiff --git a/ui-summary.h b/ui-summary.h\nindex 0896650..485a8e0 100644\n--- a/ui-summary.h\n+++ b/ui-summary.h\n@@ -2,6 +2,5 @@\n #define UI_SUMMARY_H\n \n extern void cgit_print_summary(void);\n-extern void cgit_print_repo_readme(char *path);\n \n #endif /* UI_SUMMARY_H */\n","s":{"c":1745907717,"u": 14840}} ],"g": 16448,"chitpc": 0,"ehitpc": 0,"indexed":0 , "ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}